अंग्रेजी भाषा और अधिकांश प्रोग्रामिंग भाषाएं बाएं से दाएं, ऊपर से नीचे तक लिखी और पढ़ी जाती हैं, लेकिन ऐसा नहीं है ।
वास्तव में पाठ के ब्लॉक के लिए
ABC
DEF
मैं आठ संबंधित तरीकों के बारे में सोच सकता हूं जिन्हें यह पढ़ा जा सकता है:
- बाएँ से दाएँ, ऊपर से नीचे (LTR-TTB):
ABCDEF
- ऊपर से नीचे, बाएँ से दाएँ (TTB-LTR):
ADBECF
- बाएँ से दाएँ, नीचे से ऊपर (LTR-BTT):
DEFABC
- नीचे-से-ऊपर, बाएँ से दाएँ (BTT-LTR):
DAEBFC
- दाएं-बाएं, ऊपर से नीचे (RTL-TTB):
CBAFED
- शीर्ष-से-नीचे, दाएँ-से-बाएँ (TTB-RTL):
CFBEAD
- दाएँ-से-बाएँ, नीचे से ऊपर (RTL-BTT):
FEDCBA
- नीचे-से-ऊपर, दाएँ-से-बाएँ (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/> <label for="b">Show directions</label><br/><pre id="a"></pre>
आप अभी भी मार्टिन के सीजेम संस्करण को यहां पा सकते हैं ।
स्कोरिंग
आपका स्कोर पाठ के आपके ब्लॉक का क्षेत्र (ऊँचाई से चौड़ाई गुना) है। सबसे कम स्कोर के साथ सबमिशन जीत जाता है। (अनिवार्य रूप से सबसे छोटा कोड जीतता है, इसलिए कोड-गोल्फ टैग।) टाईब्रेकर पहले पोस्ट किए गए सबमिशन में जाता है।
इसका उदाहरण 2 बाई 3 है, इसलिए इसका स्कोर 6. 4 (2 बाय 2) से कम स्कोर असंभव है क्योंकि तब 8 प्रोग्रामों में से कुछ समान होंगे और दो अलग-अलग मानों को आउटपुट नहीं कर सकते हैं।
String.prototype.repeat()
है अभी भी नया है। इसके अलावा अब IE में काम करने की पुष्टि की। new fiddle