उपयोगकर्ता स्कोर कोड गोल्फ - ड्राइंग हीरे [प्रयोगात्मक]


11

यह चुनौती पारंपरिक तरह कम या ज्यादा व्यवहार करेगी । अंतर केवल इतना है कि उपयोगकर्ता अपने पात्रों या बाइट्स की संख्याओं के उत्तरों को स्कोर करने के बजाय , टिप्पणियों में विभिन्न पात्रों को वेट असाइन करेंगे और सबसे कम संचयी भार वाले कार्यक्रम को जीतेंगे।

चुनौती

आपका कार्य एक प्रोग्राम लिखना है जो एक स्ट्रिंग लेता है और एक हीरे के आकार को प्रिंट करता है जहां केंद्र में पहला चरित्र शुरू होता है और बाद के पात्रों में रिक्त स्थान ऑर्थोगोनल पर कब्जा कर लिया जाता है जो उन पात्रों के सेट पर होता है जिन्हें पिछले रखा गया था। पैडिंग के लिए स्पेस ( ) का उपयोग किया जाएगा।

उदाहरण के लिए इनपुटिंग 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)और वजन 470 था, लेकिन बाकी सब के लिए अपरिवर्तित, स्कोर होगा 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):&nbsp;<span id='comments'></span></div><div class='analytics'>Invalid answers (illegal characters or no code block):&nbsp;<span id='answers'><span></div><br><button type='button' onclick='refresh'>Refresh</button>

इस लीडरबोर्ड को काम करने के लिए, टिप्पणियों को ऊपर वर्णित सटीक प्रारूप में होना चाहिए और आपके प्रोग्राम का कोड आपके उत्तर (पहले <pre><code>...</code></pre>वाले) में पहले मल्टी-लाइन कोड ब्लॉक में होना चाहिए । सिंटैक्स हाइलाइटिंग का उपयोग न करें या आपका कोड सही ढंग से पढ़ा नहीं जाएगा। अद्यतन करने से पहले स्निपेट में एक या दो मिनट लग सकते हैं।

मैंने स्निपेट का पूरी तरह से परीक्षण नहीं किया है, लेकिन मैं इस पर नजर रखूंगा क्योंकि यह प्रतियोगिता चल रही है। यदि आप किसी भी कीड़े को नोटिस करते हैं, तो कृपया मुझे बताएं। यहाँ एक गैर-छोटा संस्करण है:

ध्यान रखें कि यह स्कोरिंग सिस्टम पूरी तरह से नया और प्रायोगिक है। उम्मीद है कि स्टैक एक्सचेंज को बुरा नहीं लगेगा कि इसमें टिप्पणियों के टन शामिल हैं। : पी

संबंधित चुनौती: इस हीरे को प्रिंट करें



टिप्पणियों को 5 मिनट के लिए संपादित किया जा सकता है, इसलिए उन्हें संपादित करने की अनुमति गैर-पुनरावृत्ति नियमों के साथ पूर्ण कहर पैदा कर सकती है।
पीटर टेलर

@PeterTaylor लेकिन मैं संभवतः टिप्पणी संपादन कैसे रोक सकता हूं? पूरी तरह से लोगों को नजरअंदाज करने के अलावा संपादित किया जाता है। 5 मिनट बहुत तेज चलता है।
केल्विन के शौक

1
मुझे यह स्कोरिंग सिस्टम बिल्कुल भी पसंद नहीं है (चैट देखें), लेकिन अगर आप इसका उपयोग करने जा रहे हैं तो उन टिप्पणियों को अनदेखा करना जो संपादित हैं निश्चित रूप से सही काम है।
पीटर टेलर

#### 2 ->: ####
तर्क नाइट

जवाबों:


4

CJam, 144 150 बाइट्स

"x*3:*3:3*::33:3:::333*::333*3::***3::**::33:3::3*:::::*3:3:3:**33*333333::33*:*333:*3*3**:**3:**:3*3:33*3:3*:333**:3**33:*3:::*:3*::3"'3/'b*3b127b:c~

कुछ एन्कोडिंग की कोशिश की ...

अपडेट किया गया क्योंकि वजन bबदल गया है।

एक और एन्कोडिंग जो केवल सिद्धांत में बेहतर है (140 बाइट्स):

":***(*3:**3*I**:3*****:*3*******: ::::*:***II@3*******: :**I:**:***:*3***3*I3I:3***33:::*I**3I***3***:3:*I*3I"{"*:I3( **@"#1a*~0}%2b126b:c~

5

पायथन 2, 120 बाइट्स

T=raw_input()
L=len(T)
r=[b[::-1]+b[1:]for b in [T[-b:]+' '*(L-b)for b in range(1,L+1)]]
for b in r[:-1]+r[::-1]:print b

संपादित करें: कुछ सस्ते पात्रों के साथ कम लागत।




1

जे, 45 चरस

(({~((]*]<#@[)>:@(+/~)@:|@i:@(2-#)))@(' '&,))

लोंगिश सॉल्यूशन, इसे कुछ सस्ते चार्ज़ के साथ गोल्फ देगा ...

इसे ऑनलाइन आज़माएं। (सिंगल कोट्स के साथ इनपुट स्ट्रिंग जोड़ें।)


1

PHP (131 वर्ण)

function f($s){for($i=-($l=strlen($s));$i<$l;$I=abs(++$i)){$t=substr($s,$I);echo str_repeat(' ',$I).strrev($t).substr($t,1)."\n";}}

http://3v4l.org/9Vvkm

वेटिंग क्लियर होते ही ऑप्टिमाइज़ कर लेंगे।


आपका कोड इस में फिर से लिखा जा सकता है: function f($s){for($i=-($l=strlen($s));$i<$l;)echo str_repeat(' ',$I=abs(++$i)),strrev($t=substr($s,$I)),substr($t,1),"\n";}जो काम नहीं कर सकता है। लेकिन यह 6 बाइट्स कम है! संभवतः आप यहाँ से कुछ ले सकते हैं।
इस्माईल मिगुएल

0

जावा, 318 बाइट्स

class N{public static void main(String[]a){char[]s=new java.util.Scanner(System.in).nextLine().toCharArray();int l=s.length,m=l-1,$=0,b;String t="";for(;$<l;$++,t+='\n')for(b=0;b<l+$;b++)t+=b+$<m?' ':s[b>m?m-b+$:b+$-m];for($=l-2;$>-1;$--,t+='\n')for(b=0;b<l+$;b++)t+=b+$<m?' ':s[b>m?m-b+$:b+$-m];System.out.print(t);}}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.