ASCII का पुनः निर्माण


36

चुनौती

एक प्रोग्राम लिखें जो ASCII वर्णों को फिर से व्यवस्थित करता है!

यह एक ही स्ट्रिंग को प्रिंट करने योग्य ASCII वर्णों से युक्त होना चाहिए। इस स्ट्रिंग के पहले वर्ण को मान 1, दूसरे वर्ण को मान 2, और इसी तरह असाइन किया गया है।

यदि दो वर्ण आम तौर पर एक दूसरे के बगल में हैं (उनके वर्ण कोड के बीच अंतर 1 है), तो वे आउटपुट में एक दूसरे के बगल में नहीं दिखाई दे सकते हैं।

स्कोरिंग

आपका स्कोर आपके स्रोत कोड के सभी पात्रों के लिए मानों का योग होगा, जैसा कि आपके प्रोग्राम के आउटपुट से तय होता है।

कृपया अपने स्कोर की गणना करने के लिए सत्यापन अनुभाग देखें ।

सबसे कम स्कोर जीत!

नियम

  • "मुद्रण योग्य ASCII" को वर्ण कोड 32 - 126, समावेशी के रूप में परिभाषित किया गया है।

  • आप एक पूर्ण कार्यक्रम या एक समारोह लिख सकते हैं।

  • आपके कोड में केवल मुद्रण योग्य ASCII वर्ण और नए अंक हो सकते हैं।

  • आपका प्रोग्राम कोई इनपुट नहीं ले सकता है।

  • न्यूलाइन्स में हमेशा वैल्यू होगी। आपके प्रोग्राम के आउटपुट में न्यूलाइन शामिल नहीं होना चाहिए।

सत्यापन

सत्यापित करें कि आपके कोड का आउटपुट मान्य है, और अपने कोड के स्कोर की गणना करने के लिए इस स्टैक स्निपेट का उपयोग करें!


var result = document.getElementById("result");document.getElementById("submit").onclick = function() {var code = document.getElementById("code").value;var output = document.getElementById("output").value;var values = [];for (var i = 0; i < output.length; i++) {var c = output[i];var v = c.charCodeAt();if (v < 32 || v > 126) {result.innerHTML = "Invalid output! Reason: `" + c + "` (code " + v + ") is out of range.";return;}if (values.indexOf(c) >= 0) {result.innerHTML = "Invalid output! Reason: `" + c + "` (code " + v + ") was repeated.";return;}if (i > 0) {var d = output[i - 1];var w = d.charCodeAt();if (Math.abs(v - w) == 1) {result.innerHTML = "Invalid output! Reason: `" + d + "` and `" + c + "` (codes " + w + " and " + v + ") cannot appear next to each other in the output.";return;}}values.push(c);}for (var j = 32; j <= 126; j++) {var c = String.fromCharCode(j);if (values.indexOf(c) < 0) {result.innerHTML = "Invalid output! Reason: `" + c + "` (code " + j + ") was missing.";return;}}var score = 0;for (var k = 0; k < code.length; k++) {var s = values.indexOf(code[k]) + 1;if (s <= 0) s = 1;score += s}result.innerHTML = "Your score is " + score + "!";}
<textarea id="code" rows=10 cols=50>Enter your code here.</textarea><br/><textarea id="output" rows=1 cols=50>Enter your code's output here.</textarea><br/><button id="submit">Submit</button><br/><p id="result"></p>

लीडरबोर्ड

लीडरबोर्ड कोड के लिए इस पोस्ट के लिए धन्यवाद !


var QUESTION_ID=57914,OVERRIDE_USER=42844;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"http://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>


12
सत्यापन स्निपेट को प्यार करना।
म्यान्कोमा m

2
क्या आप संक्षेप में बता सकते हैं कि स्कोर की गणना कैसे की जाती है, इसलिए हम जानते हैं कि हमारे उत्तरों को कैसे अनुकूलित किया जाए?
घातक

@ मूल रूप से, विचार एक कार्यक्रम लिखने के लिए है जिसका आउटपुट उन वर्णों को कम मान प्रदान करता है जो इसे उपयोग करता है, उन्हें आउटपुट स्ट्रिंग की शुरुआत में डालकर। प्रत्येक ASCII वर्ण का "मूल्य" आपके कोड के आउटपुट में उसके 1-आधारित सूचकांक द्वारा निर्धारित किया जाता है। अपने स्रोत में प्रत्येक वर्ण को 1 के रूप में गिनने के बजाय, कोड-गोल्फ की तरह, आपके स्रोत के प्रत्येक वर्ण को इसके मूल्य के रूप में गिना जाता है, जैसा कि ऊपर वर्णित है।
जिक्र

4
एक प्रोग्रामिंग प्रतियोगिता में
व्हॉट्सएप

3
@ C0deH4cker दुर्भाग्य से इसके लिए टैब की आवश्यकता होगी, जो मुद्रण योग्य ASCII वर्ण या नई सूचियाँ नहीं हैं, इसलिए यह अमान्य होगा।
जिन्न

जवाबों:


21

सीजेएम, 356 186 168 131 126 111 99 96 94

"_|`'~,Y/G>z`|"_~

CJam दुभाषिया में इसे ऑनलाइन आज़माएं ।

उत्पादन

"_|`'~,Y/G>z[ \$&(*.02468:<@BDFHJLNPRTVXZ^bdfhjlnprtvx!#%)+-13579;=?ACEIKMOQSUW]acegikmoqsuwy{}

विचार

CJam quines में तकनीक की भिन्नता का उपयोग करते हुए, हम प्रिंट करने योग्य ASCII वर्णों को सॉर्ट करते हैं, चाहे वे स्रोत कोड में दिखाई देते हों, और गैर-प्रदर्शित होने वाले - दो अपवादों के साथ - उनके कोड बिंदुओं की समानता बिट्स द्वारा।

उचित स्रोत लेआउट के साथ, हम स्रोत कोड वर्णों को सॉर्ट करने का प्रबंधन भी करते हैं - एक अपवाद के साथ - उनकी आवृत्तियों द्वारा।

इस बात का विशेष ध्यान रखा जाता है कि दो समीपवर्ती वर्ण स्रोत कोड में पहली बार एक के बाद एक न दिखें, क्योंकि इससे उत्तर अमान्य हो जाएगा।

कोड

"             "_~  Push a string, duplicate it and evaluate the copy.
 _|                Perform the set union of the original string with itself.
                   This is just an "excuse" to introduce the underscore.
   `               Inspect the string (surrounds it with double quotes).
    '~,            Push the string of Unicode characters before the tilde.
       Y/          Divide it into pairs.
         G>        Discard the first 16 pairs (control characters).
           z       Zip. This interleaves the pairs, ordering the characters
                   by their code points' parities.
            `      Inspect the array, i.e., push its string representation.
             |     Perform set union with the string of source code characters.

सीजेएम को यह देखकर आश्चर्य नहीं होगा, कि पाइथ में सरल क्वाइन नहीं है और न ही अंतर्निहित बिल में ASCII अक्षर हैं।
orlp

1
CJam में ASCII वर्णों के लिए बिल्ट-इन नहीं है। मैं एक अनार्य श्रेणी का उपयोग कर रहा हूं, फिर नियंत्रण वर्णों को छोड़ दें।
डेनिस

14

ब्रेनफक, 1692 826 765

(फिर भी) अनधिकृत, मुझे पता है। मैं इस पर काम कर रहा हूं (टिप्पणियों में opts छोड़ें)।

++[------>+<]>.++.---[-->+++<]>-.[->+++++++++<]>.--[----->+<]>.[-->+++<]>+.++.>+++[<---------->-]<-[-->+<]>-++.>++[>+++<-]>[<<++.>>-]<<++++.++.++.++.++.++.++++>>++++[<++++++++>-]<[<++.>-]<---.++.-->+++[>+++++<-]>-[<<--.>>-]<<---->++++[>+++++<-]>++[<<--.>>-]<<------.--.--.--.--.

आउटपुट:

+->.<[] "$&(*,02468:@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~{}ywusqomkigeca_YWUSQOMKIGECA?=;97531/)'%#!

मैं पहले से ही कुछ हद तक 8bit कोशिकाओं पर अतिप्रवाह का उपयोग कर रहा हूं, लेकिन मुझे लगता है कि आप अभी भी इसे अनुकूलित कर सकते हैं। हालांकि यह सस्ते वर्णों के उपयोग को कम करेगा :)।


2
मुझे बहुत ही भोले कार्यक्रम के साथ 576 मिले। मेरे विचार से मिक्स एंड मैच करने के लिए स्वतंत्र महसूस करें। +1।
लेवल रिवर सेंट

12

पायथ, 173 170

कोड

-so%CN2rd\~p"p~\dr2NC%os-

उत्पादन

p~\dr2NC%os- "$&(*,.0468:<>@BDFHJLPRTVXZ^`bfhjlntvxz|!#')+/13579;=?AEGIKMOQSUWY[]_acegikmquwy{}

एक क्विन जैसी स्ट्रिंग को हार्डकोड करना। आसानी से, "चरित्र उत्पन्न स्ट्रिंग की शुरुआत के बहुत करीब है। "क्वीन" के बाद भी विषम वर्ण प्रिंट।

डेनिस के लिए बहुत धन्यवाद 3 अंक बचाने के लिए, और कोड को एक पैलिन्डोम बना दिया!

इसे यहाँ आज़माएँ


एक साइड-नोट के रूप में, मुझे नहीं लगता कि पायथ rको इस मोड में उपयोग किए जाने पर तार की एक सूची वापस करनी चाहिए।
FryAmTheEggman

1
\~चरित्र श्रेणी के लिए उपयोग करने से आपके अंक में 3 अंकों का सुधार होता है। (यह आपको अपना कोड एक पैलिंड्रोम बनाने की अनुमति भी देता है।)
डेनिस

@ डेनिस धन्यवाद! यह मुझे महसूस करने के लिए बहुत लंबा समय लगा कि मैं ~इसे "क्वीन" भाग में लिख सकता हूं, बजाय इसके कि इसे किसी तरह सीमा में जोड़ने की जरूरत हो ...: d
FryAmTheEggman

10

जावा, 3518 3189 2692

एक साधारण लूप जो अक्षरों को भी प्रिंट करता है, फिर ऑड्स। मैंने पहले ASCIIs को अनुकूलित करने के लिए कुछ चीजों की कोशिश की, लेकिन अधिकांश ने इसे समग्र रूप से लंबा कर दिया, और एक उच्च स्कोर के साथ समाप्त हुआ।

void A(){for(char A=31;A!=126;System.out.print(A+=2))A=A==125?30:A;}

आउटपुट है:

!#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~

संपादित करें: पहले स्कोरिंग को गलत समझा। पहले इसे अजीब करने के लिए फ़्लिप करने के बाद, फिर भी, यह बहुत बेहतर स्कोर करता है।


10

सप्तक, 628

कोड

["" 32:2:126 33:2:125]

आउटपुट:

 "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~!#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{}

दो श्रेणियों को स्पष्ट रूप से स्ट्रिंग में परिवर्तित किया गया है। निश्चित नहीं है कि यदि Ans स्वीकार्य है, तो लौटने से भी निहित रूपांतरण के बारे में एक चेतावनी मिलती है। कुछ अन्य रेंज वैक्टर की कोशिश की, लेकिन कुछ भी अधिक कुशल नहीं मिल सका।


जवाब लौटाना स्वीकार्य है, अच्छा काम है!
20

8

सी, 42 बाइट्स, स्कोर 1539

main(i){for(;i-191;i+=2)putchar(32+i%95);}

!#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~

सी, 39 बाइट्स, स्कोर 1687

main(i){for(;i-96;)i=putchar(32+i%95);}

!Aa"Bb#Cc$Dd%Ee&Ff'Gg(Hh)Ii*Jj+Kk,Ll-Mm.Nn/Oo0Pp1Qq2Rr3Ss4Tt5Uu6Vv7Ww8Xx9Yy:Zz;[{<\|=]}>^~?_ @`

दोनों मामलों में, iकमांडलाइन पर स्ट्रिंग्स की संख्या के लिए आरंभिक है (जैसा कि कोई तर्क नहीं दिया गया है, यह 1. है)

पहला संस्करण चीजों को स्पष्ट तरीके से करता है, 2 से बढ़ाना, मोडुलो 95 ले रहा है और सभी बाधाओं को फिर से छापना है।

दूसरा संस्करण इस तथ्य का लाभ उठाता है कि पुचर ने मुद्रित चरित्र को वापस लौटाया। जैसा कि 32 से 95 तक नकल है, हम पात्रों के माध्यम से साइकिल चला सकते हैं। जैसा कि सी में बहुत सारे लोअरकेस अक्षर हैं, मुझे उम्मीद थी कि यह छोटा होने के अलावा, कम स्कोर होगा लेकिन दुर्भाग्य से ऐसा नहीं है।


i;main(){for(;i<3990;i+=42)putchar(i%95+32);} मुझे लगता है कि स्कोर 1472 है
स्क्वीश ossifrage

@squeamishossifrage अच्छी तरह से देखा जाता है, यह वास्तव में करता है! उस एक को खोजने में कितना समय लगा? मैं सी से ऊब गया, मेरे दिमाग का जवाब बहुत बेहतर है।
स्तर नदी सेंट

मैं इस जवाब को उत्पन्न करने के लिए इस्तेमाल किया पर्ल स्क्रिप्ट के साथ बस नूडलिंग :-)
बग़ल में ossifrage

आप दोनों स्थितियों के aबजाय चर नाम के रूप में अपने स्कोर को कम कर सकते iहैं।
409_कॉन्फ्लिक्ट

8

बेफुज -93, 801 797 724 699 627 612

कोड:

"!  "     ^
v     _@#$<
>:,2+:"~"`|
^         <

आउटपुट:

 "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~!#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{}

आप चाहें तो इसे यहाँ आज़मा सकते हैं।

यह 32-126 evens, और फिर 33-125 बाधाओं को आउटपुट करके काम करता है। अगर किसी को स्पष्टीकरण चाहिए, तो मैं इसके लिए तैयार हूं।

मैंने इसे तब तक हासिल किया जब तक कि मैं इसे ब्रेनफ *** से बेहतर नहीं मिला, जिसे मैंने सबसे कम समझा जो मैं जा सकता था। जहाँ तक गोल्फ की रणनीतियों की बात है, मैंने एससीआई पात्रों को उत्पन्न किया और फिर महंगे पात्रों को सस्ते लोगों के साथ बदलने की कोशिश की (जैसे 1 2 के साथ)। मुझे पता चला कि चूंकि gयह बहुत महंगा था, इसलिए हर पुनरावृत्ति की गणना करना बेहतर था। मैं भी ऊपर से लिपटा ^था, क्योंकि इससे सस्ता था v

801 -> 797 : हालिया परिवर्तन अतिरिक्त रिक्त स्थान को हटा रहा था जो उपयोग करने से एक अवशेष था g

९ 79 -> --२४ : मैंने १२६ बार गणना करके केवल पढ़ने वाले टिल्ड का उपयोग करके बदल दिया "~"। यह भी दूर काटने के लिए अनुमति दी और (मैं फिर से बीएफ जवाब में से एक की पिटाई कर रहा हूँ)

724 -> 699 : अंतिम परिवर्तन के समान, "" 32 प्राप्त करने का एक बेहद सस्ता (4 अंक) तरीका है

699 -> 627 : चूँकि मैं केवल एक बार दूसरी पंक्ति से गुजरता हूँ, मैंने इसे केवल 33 पर सेट करने के बजाय स्टैक पर एक और मान बनाए रखने और एक को जोड़ने के लिए बदल दिया।

६२ -> ६१२ : स्ट्रिंग इनपुट के लिए जितना हो सके उतना आगे बढ़ा। मुझे पूरा यकीन है कि डिजाइन को किसी भी तरह से इसे और अधिक परिवर्तित करने की आवश्यकता होगी।

यह शायद अंतिम पुनरावृत्ति है, जब तक कि गैर-गोल्फ भाषाओं में से एक को कम समाधान नहीं मिलता है।



7

ब्रेनफक, स्कोर 576 667

इसके बारे में सोचकर, 576 को सच होने में अच्छा लग रहा था: मैंने थोड़ा अनुमान लगाया और अपने स्कोर को लगभग 95 * 6 + 45 * 2 = 660 करने के लिए काम किया। कुछ गलत हुआ होगा जब मैंने पहली बार सत्यापनकर्ता को दौड़ाया था। सही अंक मेरे अनुमान के करीब है। यह अभी भी एक बुरा स्कोर नहीं है।

+++++++++++++++++++++++++++++++++++++++++++++.--.+++.++.++.++.++.++.++.++.++.++.++.++.++.++.++.++.++.++.++.++.++.++.++.++.++.++.++.++.++.++.++.++.++.++.++.++.++.++.++.++.++.---.++.----.--.--.--.--.--.--.--.--.--.--.--.--.--.--.--.--.--.--.--.--.--.--.--.--.--.--.--.--.--.--.--.--.--.--.--.--.--.---.--.--.--.--.--.--.+++.--.++++.++.++.

इसे सरल रखें।

मूल रूप से सिर्फ ASCII सेट, प्रिंटिंग वर्णों के ऊपर और नीचे चलता है। कार्यक्रम में उपयोग किए जाने वाले तीन वर्ण पहले मुद्रित होते हैं। दोनों छोर पर चक्कर लगाना थोड़ा मुश्किल था।

-+.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~{}ywusqomkigeca_][YWUSQOMKIGECA?=;97531/,*(&$" #!%')

6

रूबी 2.2, 1157

eval s='srand 1;([*s.bytes].shuffle|[*33..0x7e].shuffle).map{|c|putc c}'

आउटपुट:

f.p|cahu]xens7*0{)3tbmdy[}l1; r(o@&gN/MjzSVv~>D4I`L\KB92=i%PHE?5TQw,W-#6U'^Y!$R"XkO_q+CAGZF<8:J

यह एक बहुत ही गूंगा समाधान है (और मुझे यकीन नहीं है कि srand को विशेष रूप से एक मानक खामी नहीं होना चाहिए क्योंकि यह काफी पोर्टेबिलिटी को कम करता है)। Shuffles (अधिकांश) अपने स्वयं के स्रोत कोड में बाइट्स करता है और बाकी को फेरबदल करता है, फिर सरणियों और सरणियों को व्यवस्थित करता है। एक यादृच्छिक बीज का उपयोग करता है ताकि उत्पादन कानूनी हो (तथ्य यह है कि यह एक अंक है शुद्ध भाग्य)।


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

5

सीबीएम बेसिक V2, 2553

1FORI=0TO47:PRINTCHR$(32+I*2);:NEXT
2FORI=0TO47:PRINTCHR$(33+I*2);:NEXT 

आउटपुट (पीसी पर एक अजगर स्क्रिप्ट द्वारा ASCII में परिवर्तित):

<blank>"$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~!#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{}

5

गॉव, 2782 1988 1821

END{for(rrf=rrr="rf(3)+=;1\"$?:~ptoin[<-EN% ^.|P";fr++<333;$fr=(ff=sprintf("%c",fr))~"[[(]"?f:ff);for(;r++<33+13+1;rrf=f)printf(rrf)(rrr~(rr=$(31+1+r+r))?f:rr)(rrr~(rr=$(133-(3+3+r+r)))?f:rr)}

उत्पादन

rf(3)+=;1"$?:~ptoin[<-EN% ^.|P}{&yw*u,sq02m4k68gec>a@_B]DFYHWJULSQORMTKVIXGZ\CA`bd9h7j5l/vx'z#!

प्रयोग

अपने कंसोल में निम्न को कॉपी और पेस्ट करें
( mawk काम नहीं करेगा, क्योंकि यह प्रिंटफ के साथ बहुत सख्त स्ट्राइकर है )

awk 'END{for(rrf=rrr="rf(3)+=;1\"$?:~ptoin[<-EN% ^.|P";fr++<333;$fr=(ff=sprintf("%c",fr))~"[[(]"?f:ff);for(;r++<33+13+1;rrf=f)printf(rrf)(rrr~(rr=$(31+1+r+r))?f:rr)(rrr~(rr=$(133-(3+3+r+r)))?f:rr)}' < /dev/null

< /dev/nullअंत में, इनपुट के अंत का संकेत तो अंत ब्लॉक निष्पादित किया जाएगा।

मैंने मूल रूप से नीचे से आने वाले और ऊपर से आने वाले पात्रों को आपस में जोड़ा। फिर मैंने विश्लेषण किया, कि कार्यक्रम में कौन से वर्णों का सबसे अधिक उपयोग किया गया था और आवृत्ति के क्रम में उन्हें पहले मुद्रित किया गया था। तब मुझे यह सुनिश्चित करना था कि कोई भी चरित्र एक से अधिक बार मुद्रित न हो। विपरीत दिशाओं में बुनाई ने इसे और अधिक संभावित बना दिया है कि पहले से ही इस्तेमाल किए जाने वाले चरित्र को मुद्रण पड़ोसियों तक नहीं पहुंचाया जाएगा। लेकिन वे बीच-बीच में मिलते थे P, इसलिए मुझे शुरुआत में यह भी छापना पड़ा। फिर पात्रों के साथ कुछ समस्याएँ थीं, जो regexps में उपयोग की जाती हैं ... फिर मैंने चर को सस्ते में नाम दिया और पूरी बात फिर से की। तब मुझे कुछ पात्र मिले जिन्हें मैं अपने कार्यक्रम में बदल सकता था, और फिर से पूरी बात की। और इसी तरह .. मैंने आखिरकार स्ट्रिंग को पसंदीदा पात्रों के साथ परीक्षण करके थोड़ा छोटा कर दिया।

मुझे लगता है कि मैं कर चुका हूं :D

प्रक्रिया के दौरान मैंने कमांड लाइन से प्रोग्राम को कभी निष्पादित नहीं किया, लेकिन एक स्क्रिप्ट के अंदर से निष्पादित एक स्ट्रिंग का निर्माण किया, जो शुद्धता के लिए आउटपुट का विश्लेषण करेगा और मुझे स्कोर और सामान देगा। उस स्कोर आउटपुट ने बहुत मदद की। बेशक मैं यहाँ (आप कभी नहीं पता) rechecked लेकिन यह मुझे एक ही परिणाम मिला है।

वहां कार्यक्रम इस तरह दिखता है

p=sprintf("END{"\
"for(rrf=rrr=%c%s%c;fr++<333;$fr=(ff=sprintf(%c%cc%c,fr))~%c[[(]%c?f:ff);"\
"for(;r++<33+13+1;rrf=f)printf"\
"(rrf)(rrr~(rr=$(31+1+r+r))?f:rr)(rrr~(rr=$(133-(3+3+r+r)))?f:rr)}"\
,34,s=sprintf("rf(3)+=;1%c%c$?:~ptoin[<-EN%c ^.|P",92,34,37),34,34,37,34,34,34)

5

मतलाब, 763

बेशक, MATLAB में ऑक्टेव समाधान को हरा "पाना काफी असंभव है, क्योंकि इसमें ऐसा नहीं है जो ASCII- रेंज में 'शुरुआती' है। हालांकि, मैंने थोड़ा रचनात्मक होने का फैसला किया और दुरुपयोग करने का अनुमान लगाया randperm। मैं मानता हूं कि यह थोड़ा हैकरी है और कुछ इसे धोखा दे सकते हैं, लेकिन मुझे लगता है कि यह एक अच्छा स्पर्श है। सबसे पहले, कार्यक्रम और आउटपुट:

rng(1194663);['' randperm(95)+31]

ouput:

p2)[]913r~jZe:'Xf +b(Atd@LHT*7&xmN>6!?CJgwsaSh|/McO4_EkK=$5VP-%D<"Gz#Yq08n};WB`{.l\Quy^vR,IFoiU

एक उपयुक्त बीज की गणना के लिए, मैंने निम्नलिखित कार्यक्रम का उपयोग किया, जिसे मैंने बीज = 4648029 तक चलाया (यानी, जब तक व्यंजन तैयार नहीं हुए)

minscore=Inf;
for(seed=1:1e9)
    rng(seed)
    p=randperm(95)+31;
    if(any(abs(diff(p))==1))
        continue
    end
    codestring=sprintf('rng(%d);['''' randperm(95)+31]',seed);
    score=0;
    for(i=1:length(codestring))
        score=score + find(codestring(i)==p,1);
    end
    if(score<minscore)
        minscore=score;
        bestseed=seed;
    end
end

शायद कार्यक्रम को बेहतर बनाने का एक तरीका फ्लोटिंग पॉइंट सीड्स को भी आज़माना है, उदाहरण के लिए, 2.3e4 एक लंबी बीज लंबाई के बिना बीजों की संख्या बढ़ाते हैं। अगर किसी को ऐसा लगता है कि मतलाब द्वारा प्रतिनिधित्व करने वाले सभी वर्णों की संख्या की गणना करने के लिए एक कार्यक्रम बनाया जा रहा है ....;)


मुझे लगता है कि यह एक उत्कृष्ट समाधान है। हालाँकि, ['' ३२: २: १२६ ३३: २: १२५] (एकल उद्धरणों के साथ) वैध है, और J२ø अंकों पर छोटा है :-)
जोर्जेन

@ जोर्जेन मुझे पता है, लेकिन मैं एक अलग दृष्टिकोण की कोशिश करना चाहता था;)। मुझे लगता है कि अगर randpermइस तरह के लंबे समारोह का नाम नहीं होता तो यह और अधिक दिलचस्प परिणाम देता।
सैनचाइज

4

हास्केल, 1660 1376

""!_="O"
(a:b)!(c:d)=a:c:b!d
a=[' '..'N']!['P'..]

फ़ंक्शन को परिभाषित करता है aजो स्ट्रिंग लौटाता है:

 P!Q"R#S$T%U&V'W(X)Y*Z+[,\-].^/_0`1a2b3c4d5e6f7g8h9i:j;k<l=m>n?o@pAqBrCsDtEuFvGwHxIyJzK{L|M}N~O

4

जावा, 15470

class A{public static void main(String[]I) throws Exception{java.lang.reflect.Field C=Character.class.getDeclaredClasses()[0].getDeclaredField("cache");C.setAccessible(true);Character[]E=(Character[])C.get(C);for(char A=31,G=31;A!=126;E[G++]=new Character(A+=2))A=A==125?30:A;for(char A=31;A!=126;A++)System.out.printf("%c", A);}}

वास्तव में बिल्कुल भी इष्टतम नहीं है, लेकिन यह वास्तव में वर्णों को मिटा देता है (बजाय संशोधित वर्णों के एक सेट को प्रिंट करने के)।

Ungolfed:

public class Main {
    public static void main(String[] args) throws Exception {
        java.lang.reflect.Field feild = Character.class.getDeclaredClasses()[0].getDeclaredField("cache");
        feild.setAccessible(true);
        Character[] array = (Character[]) feild.get(args); //Since it's a static field, we can supply whatever we want here, and args is cheaper than null.

        char i = 31;
        for (char c = 31; c != 126; array[i++] = new Character(c += 2)) {
            c = c == 125 ? 30 : c;
        }

        for (char c = 31; c < 126; c++) {
            System.out.printf("%c", c);
        }
    }
}

उत्पादन

!#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~

यह Geobits के उत्तर के रूप में उसी विधि का उपयोग करके वर्णों का आदेश देता है , और वर्णों को बदलने के लिए इस उत्तर के समान कुछ करता है ।


3

बीबीसी बेसिक, 2554

कोड

n=32
s$=""
REPEAT
  s$+=CHR$(n)
  n+=2
  IFn=128THENn=33
UNTILn=127
PRINTs$

उत्पादन

 "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~!#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{}

3

फोरट्रान 90, 1523 1519 1171

यह एक नेस्टेड आउटपुट लूप है, जो अन्य उत्तरों के समान है। इतना भी भरोसा नहीं है कि बहुत सुधार संभव है ...

PRINT*,((CHAR(J),J=L,126,2),L=32,33)
END

आउटपुट:

 "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~!#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{}

संपादित करें: भूल गए कि फोरट्रान 90 इस कोड के लिए आवश्यक है, 77 को 7 वें कॉलम में शुरू करने के लिए कोड की आवश्यकता है। दूसरी ओर, भाषा मामले में असंवेदनशील है, एक आसान सुधार की अनुमति देता है। लूप काउंटर्स हैं Jऔर Lक्योंकि ये आउटपुट स्ट्रिंग में पहले दो अक्षर हैं जिन्हें स्पष्ट रूप से फोरट्रान द्वारा पूर्णांक के रूप में घोषित किया गया है।


3

पर्ल, 1089 922

यह पता चला है कि 42 58 के चरणों में ASCII मूल्यों को प्रिंट करना इस दृष्टिकोण के साथ सबसे कम स्कोर देता है:

print chr$_*58%95+32for 0..94

आउटपुट:

 Z5oJ%_:tO*d?yT/iD~Y4nI$^9sN)c>xS.hC}X3mH#]8rM(b=wR-gB|W2lG"\7qL'a<vQ,fA{V1kF![6pK&`;uP+e@zU0jE

1
print chr$_*42%95+32for 0..94पहले से ही 925 का स्कोर हासिल करता है, और 42 सबसे अधिक संभावना है कि अब इष्टतम नहीं है।
डेनिस

धन्यवाद @ डेनिस - मुझे नहीं पता था कि आप इस तरह से लूप लिख सकते हैं।
स्क्वीमिश ऑसफ्रीज

यदि आप लाइनफीड्स के साथ रिक्त स्थान को बदलते हैं, तो print chr$_*63%95+32for 31..125799 का स्कोर प्राप्त होता है।
डेनिस

3

जावास्क्रिप्ट, 3169 2548 2144 2104 2071 1885 1876 1872

कोड

t=''
i=S=95
while(i--)t+=String.fromCharCode(i*2291%S-
-32)
alert(t)

उत्पादन

ti^SH=2'{peZOD9.#wlaVK@5*~sh]RG<1&zodYNC8-"vk`UJ?4)}rg\QF;0%yncXMB7,!uj_TI>3(|qf[PE:/$xmbWLA6+ 

आवश्यक का v+हिस्सा (v,i)=>v+i*3%95+32है? यह मुझे लगता है कि यह बस 0हर बार जोड़ता है क्योंकि सरणी 0एस के साथ भरी हुई है ....
जिक्र

@UndefinedFunction यह नहीं लगता है। अनुकूलन पर बहुत अधिक ध्यान केंद्रित नहीं किया, क्योंकि मैं एक वैकल्पिक विधि पर काम कर रहा था जो छोटे रास्ते को समाप्त करता था। धन्यवाद! =)
Mwr247

for(w=95;w-->0;)हो सकता है for(w=95;w--;), क्योंकि 0मिथ्या है और 1, 2, 3...सत्य है।
जॉच

@UndefinedFunction वाह, मैंने ऐसा कैसे नहीं सोचा! आपने अभी-अभी अपने सर्वश्रेष्ठ प्रदर्शन से 56 अंक काटे, 2144 में लाए: D अभी भी इसे 2000 से नीचे लाने की कोशिश कर रहा है ...
Mwr247

आसान सुधार: बयानों को अलग करने के लिए अर्धविरामों के बजाय नईलाइन्स का उपयोग करें।
न्यूलाइन्स की

3

पायथन 2, 72 बाइट्स (3188) 116 बाइट्स (1383) (1306) (1303)

धन्यवाद @FryAmTheEggman ज्वाइन ट्रिक के लिए;)

धन्यवाद @nim (क्या मैंने पाठ को गलत समझा ?: पी)

धन्यवाद @ माथियास एटिंगर

n='nr i(a)2:]o[c=fh1+t"3egj,p.7'
a=[chr(r)for r in range(32,127)if not chr(r)in n]
print n+"".join(a[::2]+a[1::2])

उत्पादन:

 nr<blank>i(a)2:]o[c=fh1+t"3egj,p.7!$&*/469<?ACEGIKMOQSUWY\_bkmsvxz|~#%'-058;>@BDFHJLNPRTVXZ^`dlquwy{}

4
a=map(chr,range(32,172))और"".join(a[::2]+a[1::2])
FryAmTheEggman

1
मुझे लगता है कि आप में से कुछ की जगह ले सकता ;नई पंक्तियां, जो 1 के रूप में गिनती के साथ
nimi

1
n='nr i(a…n=' nri(a…
409_कॉन्फ़्लिक्ट

3

PHP, 1217 1081

कोड:

for(;$T!=T;$T=($T+52)%95)echo chr(32+$T);

चूँकि चर आरंभिक नहीं हैं, इसलिए इसे चलाने पर नोटिस को दबाने की जरूरत है (PHP शिकायत करता है लेकिन निष्पादन जारी रखता है और डिफ़ॉल्ट मान का उपयोग करता है जो संदर्भ में उपयुक्त है; 0इस मामले में):

$ php -d error_reporting=0 remapping-ascii.php

इसका आउटपुट:

 T)]2f;oDxM"V+_4h=qFzO$X-a6j?sH|Q&Z/c8lAuJ~S(\1e:nCwL!U*^3g<pEyN#W,`5i>rG{P%Y.b7k@tI}R'[0d9mBvK

टिप्पणियों:

  • आउटपुट एक सफेद स्थान ( chr(32)) के साथ शुरू होता है ;
  • कोड सफेद स्थान को प्रिंट करता है और फिर प्रत्येक 52 वें वर्ण को रेंज में लपेटता है;
  • 52संभव संख्याओं की संपूर्ण सीमा (1..94) को खोजकर जादुई संख्या "खोजा" गया था; 1 अपने ASCII कोड के आरोही क्रम में प्रिंट करने योग्य वर्णों की सूची का उत्पादन करता है, 94 रिवर्स ऑर्डर में सूची का उत्पादन करता है, दोनों खराब हैं; 5 और 19 के गुणक (95 के भाजक) छोटे चक्रों का निर्माण करते हैं और मानों की पूरी श्रृंखला को कवर नहीं करते (खराब भी);
  • 52लगता है जादू है; यह इस कोड के लिए सबसे अच्छा ऑफसेट है; लेकिन यह कोड के कुछ रूपों के लिए भी सबसे अच्छा है (जो थोड़ा बड़ा स्कोर पैदा करता है); मेरे द्वारा उपयोग की गई विविधताएँ: उपयोग के while()बजाय for(), उपयोग $f++, $f--या --$fइसके बजाय ++$f, ऑपरेटर <और +ऑपरेटरों के आसपास स्वैप करें ; के संशोधन को $Tनिचोड़ें 32+$T;
  • चर ( $Tऔर $f) के नाम आउटपुट से पहले अक्षर हैं;
  • मैं प्रारंभ करने की कोशिश की $Tके साथ 4या 11लेकिन स्कोर बदतर थे, के साथ शुरू 4करता है $उत्पादन में पहले वर्ण; यह एक PHP स्रोत कोड में सबसे अधिक इस्तेमाल किया चरित्र है; सामने 11लाता +है; $और +इस कोड में सबसे अधिक उपयोग किए जाने वाले वर्ण हैं।

कोड, परीक्षण, वृद्धिशील परिवर्तन मैंने तब तक आजमाए जब तक मैं इस समाधान तक नहीं पहुँच पाया और पटकथा जिसने सभी संभव कदम मानों का परीक्षण किया ( 52सर्वश्रेष्ठ कदम के रूप में आधिकारिक प्रदाता ) जीथब पर पाया जा सकता है ।


2

फूरियर, 1236

मूल रूप से मेरे बीबीसीबी कार्यक्रम का रूपांतरण

32~N127(Na^^~N{128}{33~N}N)

उत्पादन

 "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~!#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{}

0

एडब्ल्यूके , 49 बाइट्स, स्कोर: 1755

BEGIN{for(f=82;++f<178;)printf"%c",(2*f-1)%95+32}

इसे ऑनलाइन आज़माएं!

बस हर दूसरे चरित्र को प्रिंट करता है और फिर रिक्त स्थान को भरना शुरू कर देता है। प्रथम वर्ण मुद्रित एक है f। मैंने रिवर्स ऑर्डर में छपाई का प्रयास किया, लेकिन इससे स्कोर बहुत बढ़ गया। अन्य पैटर्न बस गुणक और लूप मानदंड को बदलकर संभव हैं।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.