8 संख्याओं को आउटपुट 8 संख्याओं में पढ़ना


21

अंग्रेजी भाषा और अधिकांश प्रोग्रामिंग भाषाएं बाएं से दाएं, ऊपर से नीचे तक लिखी और पढ़ी जाती हैं, लेकिन ऐसा नहीं है

वास्तव में पाठ के ब्लॉक के लिए

ABC
DEF

मैं आठ संबंधित तरीकों के बारे में सोच सकता हूं जिन्हें यह पढ़ा जा सकता है:

  1. बाएँ से दाएँ, ऊपर से नीचे (LTR-TTB): ABCDEF
  2. ऊपर से नीचे, बाएँ से दाएँ (TTB-LTR): ADBECF
  3. बाएँ से दाएँ, नीचे से ऊपर (LTR-BTT): DEFABC
  4. नीचे-से-ऊपर, बाएँ से दाएँ (BTT-LTR): DAEBFC
  5. दाएं-बाएं, ऊपर से नीचे (RTL-TTB): CBAFED
  6. शीर्ष-से-नीचे, दाएँ-से-बाएँ (TTB-RTL): CFBEAD
  7. दाएँ-से-बाएँ, नीचे से ऊपर (RTL-BTT): FEDCBA
  8. नीचे-से-ऊपर, दाएँ-से-बाएँ (BTT-RTL): FCEBDA

चुनौती

पाठ का एक आयताकार ब्लॉक लिखें, जो आपकी पसंद की भाषा में आठ एकल पंक्ति कार्यक्रमों के रूप में उपरोक्त आठ तरीकों में से प्रत्येक में पढ़ा जा सकता है । इनमें से प्रत्येक कार्यक्रम को एक से आठ तक एक अलग पूर्णांक का उत्पादन करना चाहिए।

इससे कोई फर्क नहीं पड़ता कि कौन सी रीडिंग दिशा किस नंबर को आउटपुट करती है, उन्हें ऊपर दिए गए नंबरों का मिलान नहीं करना है। उदाहरण के लिए, यदि आपका टेक्स्ट ब्लॉक अभी भी था

ABC
DEF

तो कार्यक्रम ABCDEFहो सकता है उत्पादन 5और FEDCBAपराक्रम उत्पादन 2, और अन्य छह कार्यक्रमों होगा उत्पादन 1, 3, 4, 6, 7, और 8कुछ क्रम में।

पाठ खंड में पंक्ति वर्णक को छोड़कर कोई भी वर्ण हो सकता है ।

यदि आपकी भाषा में उचित स्टडआउट नहीं है, तो आउटपुट को stdout या इसी तरह के विकल्प पर जाना चाहिए। कोई इनपुट नहीं है। आप मान सकते हैं कि कार्यक्रम REPL वातावरण में चलाए जा रहे हैं।

Pietu1998 ने चैरिटी के ब्लॉक दिए जाने पर 8 अलग-अलग सिंगल लाइन प्रोग्राम्स देने वाले एक JSFiddle को चारित्रिक रूप से लिखा । मैंने इसे स्टैक स्निपेट में बनाया है:

<script>function f(n){n=n.split("\n");var e=n.map(function(n){return n.length}).sort()[n.length-1];n=n.map(function(n){return(n+Array(e+1).join(" ")).substring(0,e)});var t=n[0].split("").map(function(e,t){return n.map(function(n){return n[t]}).join("")});n=[n.join(""),n.reverse().join(""),t.join(""),t.reverse().join("")],n=n.concat(n.map(function(n){return n.split("").reverse().join("")})),document.getElementById("a").innerHTML=n.map(function(n,e){return document.getElementById("b").checked?n+"   "+"LLTTRRBB"[e]+"T"+"RRBBLLTT"[e]+"-"+"TBLRBTRL"[e]+"T"+"BTRLTBLR"[e]:n}).join("\n")}</script><textarea onkeyup="f(this.value)" id="c" placeholder="Code"></textarea><br/><input type="checkbox" id="b" onchange="f(document.getElementById('c').value)" checked/>&nbsp;<label for="b">Show directions</label><br/><pre id="a"></pre>

आप अभी भी मार्टिन के सीजेम संस्करण को यहां पा सकते हैं

स्कोरिंग

आपका स्कोर पाठ के आपके ब्लॉक का क्षेत्र (ऊँचाई से चौड़ाई गुना) है। सबसे कम स्कोर के साथ सबमिशन जीत जाता है। (अनिवार्य रूप से सबसे छोटा कोड जीतता है, इसलिए टैग।) टाईब्रेकर पहले पोस्ट किए गए सबमिशन में जाता है।

इसका उदाहरण 2 बाई 3 है, इसलिए इसका स्कोर 6. 4 (2 बाय 2) से कम स्कोर असंभव है क्योंकि तब 8 प्रोग्रामों में से कुछ समान होंगे और दो अलग-अलग मानों को आउटपुट नहीं कर सकते हैं।


6
"केवल मुद्रण योग्य एएससीआई" नियम क्यों? इसका मतलब है कि एपीएल इस चुनौती का मुकाबला नहीं कर सकता है। :(
मोरिस ज़ूका

3
मैंने एक फिडल बनाया जो 8 प्रोग्राम्स के लिए एक कोड ब्लॉक को रूपांतरित करता है। एक स्निपेट के रूप में शामिल किया जा सकता है, इस पर ओपी की राय चाहते हैं।
पुरकाकूदरी

3
@ मार्टिनबटनर सब ठीक है, मैंने इसे ठीक कर दिया। ऐसा लगता String.prototype.repeat()है अभी भी नया है। इसके अलावा अब IE में काम करने की पुष्टि की। new fiddle
पुरकाकूदरी

@MorisZucca लाइन टर्मिनेटर के अलावा सभी वर्णों को अब अनुमति दी गई है।
केल्विन के शौक

@ Pietu1998 फिडेल के लिए धन्यवाद, मैंने इसे स्निपेट के रूप में जोड़ा है।
केल्विन के शौक

जवाबों:


21

जे, 3 * 3 = 9

1[2
+2+
2+2

सभी दिशाओं को निष्पादित करना:

       ". '1[2+2+2+2','2+2+2+1[2','1+2[2+2+2','2+2[2+1+2','2+2+2+2[1','2[1+2+2+2','2+2+2[2+1',:'2+1+2[2+2'
1 7 3 4 8 2 6 5

स्पष्टीकरण:

  • जे निष्पादन में दाएं से बाएं ओर जाता है और कोई ऑपरेटर पूर्वता नहीं है।
  • [( leftतो यह अनिवार्य रूप से रद्द हमारी अभिव्यक्ति जैसे की पूरी दाईं ओर) ने अपने दो संकार्य के बाईं ओर ले जाता है 1+2[2+2+2हो जाता है 1+2[6और उसके बाद1+2
  • बाएं भाव कुल 1, 2, 3 और 4 ऑपरेंड के साथ जोड़ हैं। प्रत्येक के दो n-ऑपरांड भाव हैं एक संख्या के 1साथ और एक केवल 2s के साथ । 1विषम संख्याओं के साथ जोड़ और अन्य समान उत्पन्न करते हैं।

5
यह वास्तव में अच्छा है। के [साथ बदलें ;और इसे अधिकांश भाषाओं के REPL वातावरण में काम करना चाहिए।
ऑप्टिमाइज़र

18

Befunge-98 ,5x5 = 25 5x3 = 15

1+4+2
$.@.$
3+4+4

मैंने थोड़ी सी स्क्रिप्ट लिखी थी जो मेरे लिए सही संख्या थी। इसमें थोड़ा समय लगा, लेकिन हे, मैंने अभी गोल्फस्क्रिप्ट को हराया है! : डी

मेरे द्वारा उपयोग की जाने वाली लिपियाँ यहाँ और यहाँ हैं , लेकिन मैं उन्हें देखने का सुझाव नहीं देता क्योंकि कोड शैली अत्यंत कार्सिनोजेनिक है।

subprograms

1+4+2$.@.$3+4+4   LTR-TTB   5
3+4+4$.@.$1+4+2   LTR-BTT   7
1$3+.+4@4+.+2$4   TTB-LTR   3
2$4+.+4@4+.+1$3   TTB-RTL   4
4+4+3$.@.$2+4+1   RTL-BTT   8
2+4+1$.@.$4+4+3   RTL-TTB   6
4$2+.+4@4+.+3$1   BTT-RTL   2
3$1+.+4@4+.+4$2   BTT-LTR   1

पुराना संस्करण

 1.6
3 @ 4
.@ @.
8 @ 7
 2.5

subprograms

क्रमशः 1-8 संख्याओं का आउटपुट करें।

 1.6 3 @ 4.@ @.8 @ 7 2.5    LTR-TTB
 2.5 8 @ 7.@ @.3 @ 4 1.6    LTR-BTT
 3.8 1 @ 2.@ @.6 @ 5 4.7    TTB-LTR
 4.7 6 @ 5.@ @.1 @ 2 3.8    TTB-RTL
 5.2 7 @ 8.@ @.4 @ 3 6.1    RTL-BTT
 6.1 4 @ 3.@ @.7 @ 8 5.2    RTL-TTB
 7.4 5 @ 6.@ @.2 @ 1 8.3    BTT-RTL
 8.3 2 @ 1.@ @.5 @ 6 7.4    BTT-LTR

14

ब्रेनफक $ , 4x3 = 12

Brainfuck $ बहुत के समान है Brainfuck , लेकिन उत्पादन के लिए एक आदेश जो इस चुनौती के लिए बहुत उपयोगी था सांख्यिक आउटपुट के रूप में वर्तमान कक्ष मूल्य, सहित कुछ और आदेश, है।

++:+
  ++
++++

एक-पंक्ति आदेश:

++:+  ++++++   LTR-TTB, outputs 2
++++  ++++:+   LTR-BTT, outputs 8
+ ++ +:+++++   TTB-LTR, outputs 4
+++:+++ ++ +   TTB-RTL, outputs 3
++++++  +:++   RTL-BTT, outputs 7
+:++++  ++++   RTL-TTB, outputs 1
+++++:+ ++ +   BTT-RTL, outputs 5
+ ++ +++:+++   BTT-LTR, outputs 6

मेरा तर्क है कि आपको ब्रेनफक $ की जरूरत नहीं है; आदेश। मैं बस का उपयोग करने पर विचार करेंगे। और आउटपुट 0x01-0x08 पूरी तरह से मान्य है। यह (दिमाग) बकवास के लिए ब्रेनफक है। +1।
मगेटा

मैं बाइनरी आउटपुट के साथ ठीक हूं।
कैप्टनक्रिग

7

टीईसीओ, 3 * 5 = 15

 +4 5
+2=4 
 +1 \

=अंतिम संख्यात्मक अभिव्यक्ति के मूल्य को प्रिंट करता है। \स्ट्रिंग से संख्याओं को पढ़ने या लिखने के लिए उपयोग किया जाता है, लेकिन मैं इसे केवल यहां एक त्याग के रूप में उपयोग करता हूं।

  • +4 5+2=4 +1 \ 7
  • + +2+4=1 4 5 \ 6
  • + +2+1=4 4 \ 5 3
  • +1 \+2=4 +4 5 2
  • \ 1+ 4=2+5 4+ 5
  • \ 5 4 1=4+2+ + 1
  • 5 \ 4 4=1+2+ + 4
  • 5 4+ 4=2+\ 1+ 8

7

piet - 12x12 = 144

यहाँ छवि विवरण दर्ज करें

चूंकि एक पंक्ति कार्यक्रम कभी भी समाप्त नहीं हो सकता है, इसलिए मान लें कि यह पहले आउटपुट के बाद समाप्त हो गया है।

एक छवि में 8 उपप्रकार:

यहाँ छवि विवरण दर्ज करें


6

गोल्फस्क्रिप्ट, 4x4 = 16

1})7
)  }
}  )
3)}5

अच्छे पुराने "सुपर कमेंट" का उपयोग करता है: एक बेजोड़ }कोड के बाकी हिस्सों की अनदेखी करता है (वास्तव में, इस मामले में एक सामान्य टिप्पणी #ने भी ठीक काम किया होगा, क्योंकि सभी कोड एक ही लाइन के रूप में चलाया जाता है)। इसलिए प्रत्येक कोने से या तो केवल एक ही संख्या है, या (दूसरी दिशा में) वह संख्या जो 1 से बढ़ाई गई है, क्योंकि निष्पादन समाप्त हो जाता है और स्टैक सामग्री मुद्रित हो जाती है। 8 कार्यक्रम हैं

1})7)  }}  )3)}5  # LTR-TTB
1)}3}  ))  }7})5  # TTB-LTR
3})1)  }}  )5)}7  # BTT-LTR
3)}5}  ))  }1})7  # LTR-BTT
5})3)  }}  )7)}1  # RTL-BTT
5)}7}  ))  }3})1  # BTT-RTL
7})5)  }}  )1)}3  # TTB-RTL
7)}1}  ))  }5})3  # RTL-BTT

5

हास्केल, 26x26 = 676

--पीछे की ओर और बिट्स को छिपाने के लिए टिप्पणियों ( ) का उपयोग करता है । यह इसे बहुत लंबा बनाता है

main=print 1--2 tnirp=niam
a                        a
i                        i
n                        n
=                        =
p                        p
r                        r
i                        i
n                        n
t                        t

3                        4
-                        -
-                        -
5                        6

t                        t
n                        n
i                        i
r                        r
p                        p
=                        =
n                        n
i                        i
a                        a
main=print 7--8 tnirp=niam

2
मुझे ऐसा लगता है कि इनलाइन टिप्पणियों के साथ इसे अधिकांश भाषाओं में विस्तारित किया जा सकता है
Sp3000

4

प्रस्तावना , 5x3 = 15

12 34
  !  
56 78

यह पायथन दुभाषिया को मानता है , जो चरित्र कोड के बजाय मानों को प्रिंट करता है।

यह Befunge $ को नहीं हराता है, लेकिन यह मेरे गोल्फस्क्रिप्ट सबमिशन को हरा देता है, और मुझे इसकी सरलता पसंद है। ध्यान दें कि यह केवल 9 गैर-अंतरिक्ष वर्णों का उपयोग करता है, जो अब तक किसी भी अन्य सबमिशन से कम है (जे स्ट्राइक फिर से :))। प्रस्तावना में, प्रत्येक अंक को व्यक्तिगत रूप से स्टैक पर धकेल दिया जाता है, और रास्ते के आधार पर, उसके ठीक पहले एक अलग अंक होता है !, जो शीर्ष स्टैक तत्व को प्रिंट करता है। 8 कार्यक्रम हैं:

12 34  !  56 78   LTR-TTB   4
56 78  !  12 34   LTR-BTT   8
1 52 6 ! 3 74 8   TTB-LTR   6
4 83 7 ! 2 61 5   TTB-RTL   7
87 65  !  43 21   RTL-BTT   5
43 21  !  87 65   RTL-TTB   1
8 47 3 ! 6 25 1   BTT-RTL   3
5 16 2 ! 7 38 4   BTT-LTR   2

वैकल्पिक रूप से, वहाँ भी है

 1 3 
1+!+1
 5 7 

जो विषम रास्तों पर विषम संख्याओं को धकेलता है, और 1क्षैतिज रास्तों पर उन्हें बढ़ाता है :

 1 3 1+!+1 5 7    LTR-TTB   4
 5 7 1+!+1 1 3    LTR-BTT   8
 1 1+5 ! 3+7 1    TTB-LTR   5
 1 3+7 ! 1+5 1    TTB-RTL   7
 7 5 1+!+1 3 1    RTL-BTT   6
 3 1 1+!+1 7 5    RTL-TTB   2
 1 7+3 ! 5+1 1    BTT-RTL   3
 1 5+1 ! 7+3 1    BTT-LTR   1

2

सीजाम - 7 × 7

प्रभावशाली नहीं है, लेकिन सीजेएम का कोई जवाब नहीं था और मुझे इसका तरीका पसंद है :)

 8;];1 
7     2
;  0  ;
] 0 0 ]
;  0  ;
6     3
 5;];4 

यह मुख्य रूप से इस तथ्य का उपयोग ];करता है जो स्टैक को साफ करता है।

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


1

रूबी - 7x7

या तो प्रभावशाली नहीं, हास्केल जवाब के रूप में एक ही रणनीति।

p 1#2 p

3     7
#     #
4     8

p 5#6 p

1

आर, 9x9

कोई सफेद जगह नहीं, कोई टिप्पणी नहीं।

75%%99299
99%%99699
%%299%%41
%%699%%06
995999997
11%%999%%
99%%799%%
39719%%99
59519%%16

मुझे लगता है कि आप जो भी आकार चाहते हैं, उसका विस्तार किया जा सकता है। मैंने सोचा कि मॉडुलो ऑपरेटर उपलब्ध ऑपरेटरों में सबसे अधिक लचीला था, क्योंकि यह डेटा आकार की परवाह किए बिना मूल्यों को बहुत बड़ा होने से रोकता है, और बीच में वास्तव में बड़ी संख्या होने से कोई प्रभाव नहीं पड़ता है।

75%%9929999%%99699%%299%%41%%699%%0699599999711%%999%%99%%799%%39719%%9959519%%16   LTR-TTB  2
59519%%1639719%%9999%%799%%11%%999%%995999997%%699%%06%%299%%4199%%9969975%%99299   LTR-BTT  3
79%%9193559%%91999%%265%%75%%999%%1199999979999%%999%%26%%999%%99409%%9199167%%96   TTB-LTR  4
99167%%9699409%%9126%%999%%99%%999%%999999799%%999%%11%%265%%7559%%9199979%%91935   TTB-RTL  1
61%%9159599%%91793%%997%%99%%999%%1179999959960%%996%%14%%992%%99699%%9999299%%57   RTL-BTT  5
99299%%5799699%%9914%%992%%60%%996%%799999599%%999%%11%%997%%9999%%9179361%%91595   RTL-TTB  6
69%%7619919%%90499%%999%%62%%999%%9999799999911%%999%%57%%562%%99919%%9553919%%97   BTT-RTL  7
53919%%9799919%%9557%%562%%11%%999%%997999999%%999%%99%%999%%6219%%9049969%%76199   BTT-LTR  8

1

यह प्रोग्रामिंग भाषा, 5 * 9 = 45

1i;i2
2   2
+   +
i   i
;   ;
i   i
+   +
2   2
5i;i6

जो इस में अनुवाद करता है:

1i;i22   2+   +i   i;   ;i   i+   +2   25i;i6
5i;i62   2+   +i   i;   ;i   i+   +2   21i;i2
12+i;i+25i       i;       ;i       i22+i;i+26
22+i;i+26i       i;       ;i       i12+i;i+25
6i;i52   2+   +i   i;   ;i   i+   +2   22i;i1
2i;i12   2+   +i   i;   ;i   i+   +2   26i;i5
62+i;i+22i       i;       ;i       i52+i;i+21
52+i;i+21i       i;       ;i       i62+i;i+22

चूंकि ;कार्यक्रम समाप्त हो जाता है, इसलिए उपरोक्त इसका अनुवाद करता है:

1i;   - outputs 1
5i;   - outputs 5
12+i; - outputs 3
22+i; - outputs 4
6i;   - outputs 6
2i;   - outputs 2
62+i; - outputs 8
52+i; - outputs 7

स्पष्टीकरण: स्टैक पर संबंधित अंक 0को 9पुश करने के लिए कोई भी संख्या । +शीर्ष दो मानों पॉप xऔर yढेर और धक्का बंदx + y ढेर पर। iस्टैक को एक पूर्णांक के रूप में आउटपुट करता है।

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