यह चुनौती पारंपरिक कोड-गोल्फ की तरह कम या ज्यादा व्यवहार करेगी । अंतर केवल इतना है कि उपयोगकर्ता अपने पात्रों या बाइट्स की संख्याओं के उत्तरों को स्कोर करने के बजाय , टिप्पणियों में विभिन्न पात्रों को वेट असाइन करेंगे और सबसे कम संचयी भार वाले कार्यक्रम को जीतेंगे।
चुनौती
आपका कार्य एक प्रोग्राम लिखना है जो एक स्ट्रिंग लेता है और एक हीरे के आकार को प्रिंट करता है जहां केंद्र में पहला चरित्र शुरू होता है और बाद के पात्रों में रिक्त स्थान ऑर्थोगोनल पर कब्जा कर लिया जाता है जो उन पात्रों के सेट पर होता है जिन्हें पिछले रखा गया था। पैडिंग के लिए स्पेस ( ) का उपयोग किया जाएगा।
उदाहरण के लिए इनपुटिंग CAT
का उत्पादन होगा
T
TAT
TACAT
TAT
T
और ()
उत्पादन होगा
)
)()
)
और desserts
उत्पादन होगा
s
sts
strts
strerts
streserts
stressserts
stressesserts
stressedesserts
stressed desserts
stressedesserts
stressesserts
stressserts
streserts
strerts
strts
sts
s
और 9
उत्पादन होगा 9
।
विवरण
कोड में केवल मुद्रण योग्य ASCII और newlines शामिल हो सकते हैं । (नीचे देखें क्यों।)
इनपुट / आउटपुट स्टड / स्टडआउट के माध्यम से होना चाहिए, या, यदि वे संभव नहीं हैं, तो समान विकल्पों का उपयोग करें।
आप मान सकते हैं कि इनपुट स्ट्रिंग में केवल मुद्रण योग्य ASCII (स्थान सहित) है।
हीरे के पैटर्न के किसी भी हिस्से वाले प्रमुख स्थानों के स्तंभों को आउटपुट में अनुमति नहीं है । अनुगामी स्थान रिक्त स्थान की किसी भी राशि और संयोजन की अनुमति है।
वैकल्पिक रूप से आउटपुट में एक अनुगामी न्यूलाइन हो सकती है।
आप अपने उत्तर को जितना चाहें उतना संपादित कर सकते हैं।
स्कोरिंग
सभी कोड केवल newlines और 95 मुद्रण योग्य ASCII वर्णों का उपयोग करके लिखे जाने चाहिए:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
(अफसोसजनक टैब की अनुमति नहीं है क्योंकि स्टैक एक्सचेंज उन्हें कोड ब्लॉक में रिक्त स्थान के रूप में प्रस्तुत करता है।)
इन 96 वर्णों में से प्रत्येक में इसके साथ एक वजन मूल्य जुड़ा हुआ है। डिफ़ॉल्ट रूप से, सभी वजन 97 हैं।
एक कार्यक्रम का स्कोर उसके प्रत्येक चरित्र के लिए वजन मानों का योग है। उदाहरण के लिए, यदि कार्यक्रम था print(4)
और वजन 4
70 था, लेकिन बाकी सब के लिए अपरिवर्तित, स्कोर होगा 749 = 97+97+97+97+97+97+70+97
।
एक बार इस सवाल में गतिविधि लगभग कुछ भी नहीं है, सबसे कम स्कोरिंग सबमिशन जीतता है। अनुमान के अनुसार संभावित रूप से टाई के मामले में जीत सबसे अधिक मतदान के जवाब में जाती है।
बदलते वज़न
प्रत्येक उपयोगकर्ता, चाहे उन्होंने उत्तर दिया हो या नहीं, 96 वर्णों के वजन को 1 से 96 तक के अद्वितीय मूल्य में बदल सकते हैं। ऐसा करने के लिए, प्रपत्र के इस प्रश्न पर एक टिप्पणी जोड़ें #### W -> C ####
, जहाँ W एक पूर्णांक है 1 से 96 और सी चरित्र है (स्वयं के रूप में, कोई उद्धरण नहीं, कोई बैकटिक्स नहीं)। का प्रयोग करें \n
नई-पंक्तियों के लिए और सी के स्थान पर \s
अंतरिक्ष के लिए के बाद से स्टैक एक्सचेंज एक पंक्ति में 3 रिक्त स्थान संपीड़ित करता है। print(4)
उपरोक्त उदाहरण टिप्पणी पड़ता था #### 70 -> 4 ####
।
प्रत्येक उपयोगकर्ता इस तरह केवल एक टिप्पणी कर सकता है, और यह केवल तभी मान्य होगा जब चरित्र और भार मान दोनों का उपयोग पहले की गई टिप्पणी में नहीं किया गया हो। इस प्रकार, अंत में, 96 #### W -> C ####
टिप्पणियाँ हो सकती हैं , सभी अलग-अलग उपयोगकर्ताओं से, सभी अलग-अलग वजन के साथ विभिन्न वर्णों को सौंपे गए।
उपयोगकर्ता अपनी टिप्पणी को हटा सकते हैं यदि वे चाहते हैं, तो अपने पात्रों का वजन 97 तक रीसेट कर सकते हैं जब तक कि वे या कोई और फिर से टिप्पणी नहीं करता। वे उन्हें संपादित भी कर सकते हैं। विभिन्न उपयोगकर्ताओं / भार / पात्रों के बारे में नियमों का पालन नहीं करने वाली टिप्पणियों को हटा दिया जाना चाहिए या "रचनात्मक नहीं" के रूप में चिह्नित किया जाना चाहिए। नियमों और अन्य चीजों के बारे में सामान्य टिप्पणियां ठीक हैं लेकिन कम से कम रखी जानी चाहिए।
यह स्टैक स्निपेट इस प्रश्न का आधिकारिक लीडरबोर्ड है। यह स्वचालित रूप से हर बार चलने वाली टिप्पणियों से वेट इकट्ठा करके सभी सबमिशन के लिए स्कोर की गणना करता है। यह संबंधों को संभालता नहीं है। आप इसका उपयोग उस स्कोर को जांचने के लिए भी कर सकते हैं, जो एक कार्यक्रम में होगा।
आपको संभवतः right-click -> Open link in new tab
लिंक के लिए आवश्यकता होगी ।
function compute(){var e=computeScore($("#code").val());$("#score").val(e==-1?"Invalid characters":e)}function computeScore(e){var t=0;for(var n=0;n<e.length;n++){if(weights.hasOwnProperty(e[n])){t+=weights[e[n]]}else{return-1}}return t}function htmlDecode(e){var t=document.createElement("div");t.innerHTML=e;return t.childNodes.length===0?"":t.childNodes[0].nodeValue}function addLeaderboard(){validAnswers.sort(function(e,t){return e.score>t.score});var e=1;var t="";for(var n=0;n<validAnswers.length;n++){var r=validAnswers[n];t+="<tr><td>"+e+"</td><td><a href='"+r.link+"'>"+r.owner.display_name+"</a></td><td>"+r.score+"</td><td>"+r.length+"</td></tr>";if(n+1<validAnswers.length&&validAnswers[n+1].score>r.score){e++}}$("#leaderboard").append(t)}function addAnalytics(){var e="";for(var t in weights){if(weights.hasOwnProperty(t)&&weights[t]!=defaultWeight){e+=(t=="\n"?"\\n":t)+"="+weights[t]+" "}}$("#weights").val(e);var n="";for(var t in usedChars){if(usedChars.hasOwnProperty(t)&&usedChars[t]==false){n+=t=="\n"?"\\n":t}}$("#unusedc").val(n);var r="";for(var t in usedWeights){if(usedWeights.hasOwnProperty(t)&&usedWeights[t]==false){r+=t+" "}}$("#unusedw").val(r);var i="";if(invalidComments.length>0){for(var s=0;s<invalidComments.length;s++){var o=invalidComments[s];i+="<a href='#"+o.link+"'>"+o.owner.display_name+"</a> "}}else{i="none"}$("#comments").html(i);var u="";if(invalidAnswers.length>0){for(var s=0;s<invalidAnswers.length;s++){var a=invalidAnswers[s];u+="<a href='#"+a.link+"'>"+a.owner.display_name+"</a> "}}else{u="none"}$("#answers").html(u)}function checkAnswers(e){for(var t=0;t<e.items.length;t++){var n=e.items[t];var r=answerPattern.exec(n.body);if(r){var i=htmlDecode(r[1]);var s=computeScore(i);if(s==-1){invalidAnswers.push(n)}else{n.length=i.length;n.score=s;validAnswers.push(n)}}else{invalidAnswers.push(n)}}addLeaderboard();addAnalytics()}function checkComments(e){for(var t=0;t<e.items.length;t++){var n=e.items[t];var r=commentPattern.exec(htmlDecode(n.body));if(r){var i=n.owner.user_id;var s=parseInt(r[1]);var o=r[2]=="\\n"?"\n":r[2]=="\\s"?" ":r[2];if(userIDs.hasOwnProperty(i)||!usedWeights.hasOwnProperty(s)||usedWeights[s]||!usedChars.hasOwnProperty(o)||usedChars[o]){invalidComments.push(n)}else{userIDs[i]=true;usedWeights[s]=true;usedChars[o]=true;weights[o]=s}}}$.get(answersURL,checkAnswers)}function refresh(){$.get(commentsURL,checkComments)}questionID=45040;commentsURL="https://api.stackexchange.com/2.2/questions/"+questionID+"/comments?order=asc&sort=creation&site=codegolf&filter=!t)IWLXOkOvAuPe8m2xJrXOknWcw(ZqZ";answersURL="https://api.stackexchange.com/2.2/questions/"+questionID+"/answers?order=desc&sort=activity&site=codegolf&filter=!.FjsvG2LuND(frE*)WTvqQev1.lyu";commentPattern=/^#### (\d+) -> (\\(?:n|s)|[ -~]) ####$/;answerPattern=/<pre><code>((?:\n|.)*?)\n<\/code><\/pre>/;chars="\n !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";validAnswers=[];invalidAnswers=[];invalidComments=[];userIDs={};usedWeights={};usedChars={};weights={};defaultWeight=chars.length+1;for(var i=0;i<chars.length;i++){usedChars[chars[i]]=false;usedWeights[i+1]=false;weights[chars[i]]=defaultWeight}refresh()
*{font-family:Helvetica,Arial,sans-serif}table{border:3px solid green;border-collapse:collapse}button{font-size:100%}th{background-color:green;color:#fff;padding:6pt}td{border:1px solid green;padding:6pt}.large{font-size:140%}.title{font-weight:700;margin:6pt 0}textarea{font-family:"Courier New";white-space:nowrap;overflow:auto}input[readonly]{background-color:#dcdcdc}.analytics{font-size:90%;padding:4pt 0 0}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><div class='large title'>Leaderboard</div><table id='leaderboard'> <tr> <th>Place</th> <th>Submitter</th> <th>Score</th> <th>Program Length</th> </tr></table><br><div class='title'>Compute Score</div><textarea id='code' rows='5' cols='40' placeholder='paste code here...'></textarea><br><button type='button' onclick='compute()'>Compute</button> Score: <input type='text' id='score' readonly><br><br><div class='title'>Analytics</div><div class='analytics'>Assigned weights: <input type='text' id='weights' readonly></div><div class='analytics'>Unused characters: <input type='text' id='unusedc' readonly> (all weight 97)</div><div class='analytics'>Unused weights: <input type='text' id='unusedw' readonly></div><div class='analytics'>Invalid comments (duplicate user/char/weight): <span id='comments'></span></div><div class='analytics'>Invalid answers (illegal characters or no code block): <span id='answers'><span></div><br><button type='button' onclick='refresh'>Refresh</button>
इस लीडरबोर्ड को काम करने के लिए, टिप्पणियों को ऊपर वर्णित सटीक प्रारूप में होना चाहिए और आपके प्रोग्राम का कोड आपके उत्तर (पहले <pre><code>...</code></pre>
वाले) में पहले मल्टी-लाइन कोड ब्लॉक में होना चाहिए । सिंटैक्स हाइलाइटिंग का उपयोग न करें या आपका कोड सही ढंग से पढ़ा नहीं जाएगा। अद्यतन करने से पहले स्निपेट में एक या दो मिनट लग सकते हैं।
मैंने स्निपेट का पूरी तरह से परीक्षण नहीं किया है, लेकिन मैं इस पर नजर रखूंगा क्योंकि यह प्रतियोगिता चल रही है। यदि आप किसी भी कीड़े को नोटिस करते हैं, तो कृपया मुझे बताएं। यहाँ एक गैर-छोटा संस्करण है:
ध्यान रखें कि यह स्कोरिंग सिस्टम पूरी तरह से नया और प्रायोगिक है। उम्मीद है कि स्टैक एक्सचेंज को बुरा नहीं लगेगा कि इसमें टिप्पणियों के टन शामिल हैं। : पी
संबंधित चुनौती: इस हीरे को प्रिंट करें