यह चुनौती अनियोजित एसोलंग पाडा से काफी हद तक प्रेरित है ।
8 बिट्स की एक सरणी पर विचार करें, जो शून्य से आरंभिक है। हम मनमाने तार को छापने के लिए एक बहुत ही न्यूनतम निर्देश सेट करेंगे। दो निर्देश हैं, दोनों एक पैरामीटर लेते हैं N
जो कि एक बिट का सूचकांक है:
t N
के लिए टी oggle: इस बिट का मान बदल जाता हैN
।p N
के लिए पी प्रिंट करें: एक बाइट के रूप में व्याख्या इस सब 8 बिट्स, बिट से शुरूN
और अंत के आसपास लपेटन । इस बाइट के अनुरूप चरित्र को STDOUT में मुद्रित किया जाता है।
आइए एक उदाहरण देखें। हम छापना चाहते हैं :=
। इस प्रकार हम इसे प्राप्त करते हैं (0-आधारित बिट सूचकांक):
t 2 [0 0 1 0 0 0 0 0]
t 3 [0 0 1 1 0 0 0 0]
t 4 [0 0 1 1 1 0 0 0]
t 6 [0 0 1 1 1 0 1 0]
p 0 [0 0 1 1 1 0 1 0] == 58 == ':'
t 5 [0 0 1 1 1 1 1 0]
t 6 [0 0 1 1 1 1 0 0]
t 7 [0 0 1 1 1 1 0 1]
p 0 [0 0 1 1 1 1 0 1] == 61 == '='
लेकिन इसके बजाय, हम चक्रीय सुविधा का उपयोग कर सकते हैं p
और दो निर्देशों को बचा सकते हैं:
t 2 [0 0 1 0 0 0 0 0]
t 3 [0 0 1 1 0 0 0 0]
t 4 [0 0 1 1 1 0 0 0]
t 6 [0 0 1 1 1 0 1 0]
p 0 [0 0 1 1 1 0 1 0] == 58 == ':'
t 1 [0 1 1 1 1 0 1 0]
p 7 [0 1 1 1 1 0 1 0] == [0 0 1 1 1 1 0 1] == 61 == '='
^
तो p 7
बस पहले के बजाय अंतिम बिट से बाइट मान पढ़ना शुरू कर देता है।
चुनौती
मुद्रण योग्य ASCII वर्ण (0x20 से 0x7E, समावेशी) की एक गैर-रिक्त स्ट्रिंग को देखते हुए, उपरोक्त सिस्टम के साथ उस स्ट्रिंग को मुद्रित करने के लिए निर्देशों की एक इष्टतम सूची (निर्देश के अनुसार एक पंक्ति) का उत्पादन करें। यदि कई इष्टतम समाधान हैं (जो लगभग हमेशा मामला होगा), उनमें से केवल एक को उत्पन्न करें।
आप बिट्स के लिए 0-आधारित और 1-आधारित अनुक्रमण के बीच चयन कर सकते हैं, लेकिन कृपया अपनी पसंद बताएं।
आप STDIN (या निकटतम विकल्प), कमांड-लाइन तर्क या फ़ंक्शन तर्क के माध्यम से इनपुट लेने और STDOUT (या निकटतम वैकल्पिक), फ़ंक्शन रिटर्न मान या फ़ंक्शन (आउट) पैरामीटर के माध्यम से परिणाम आउटपुट कर सकते हैं। यदि आप परिणाम को STDOUT में प्रिंट नहीं करते हैं, तो यह अभी भी एक एकल नईलाइन-पृथक स्ट्रिंग होनी चाहिए।
यह कोड गोल्फ है, इसलिए सबसे छोटा उत्तर (बाइट्स में) जीतता है।
परीक्षण के मामलों
प्रत्येक परीक्षण मामला एक एकल पंक्ति है जिसमें इनपुट स्ट्रिंग होती है, उसके बाद निर्देशों की इष्टतम संख्या, एक संभव समाधान होता है।
आपको अपने समाधान में निर्देश संख्या को आउटपुट नहीं करना चाहिए - यह केवल यहां शामिल है ताकि आप अपने कोड की शुद्धता की जांच कर सकें यदि यह एक अलग निर्देश सूची प्रिंट करता है।
?
7 instructions
t 2
t 3
t 4
t 5
t 6
t 7
p 0
:=
7 instructions
t 2
t 3
t 4
t 6
p 0
t 1
p 7
0123456789
26 instructions
t 2
t 3
p 0
t 7
p 0
t 6
t 7
p 0
t 7
p 0
t 5
t 6
t 7
p 0
t 7
p 0
t 6
t 7
p 0
t 7
p 0
t 2
t 3
p 3
t 2
p 3
9876543210
28 instructions
t 2
t 3
t 4
t 7
p 0
t 7
p 0
t 0
t 7
p 5
t 4
p 5
t 0
t 5
p 0
t 7
p 0
t 5
t 6
t 7
p 0
t 7
p 0
t 6
t 7
p 0
t 7
p 0
Hello, World!
39 instructions
t 1
t 4
p 0
t 3
t 7
p 2
t 1
t 6
p 2
p 2
t 0
t 1
p 2
t 0
t 1
t 3
p 2
t 6
t 7
p 2
t 0
t 2
t 6
t 7
p 1
t 0
t 1
t 5
p 0
t 2
t 7
p 3
t 2
t 6
p 0
t 4
p 0
t 1
p 3
The quick brown fox jumps over the lazy dog.
150 instructions
t 1
t 3
t 5
p 0
t 1
t 2
p 1
t 1
t 3
t 7
p 0
t 1
t 5
t 7
p 0
t 1
t 3
t 7
p 0
t 5
p 0
t 3
t 4
t 5
p 0
t 4
t 6
p 0
t 4
p 0
t 1
t 4
t 6
t 7
p 0
t 1
t 6
p 0
t 3
p 0
t 0
t 5
p 4
t 0
t 7
p 0
t 1
p 1
t 3
t 5
t 6
t 7
p 0
t 1
t 5
t 6
p 0
t 4
t 7
p 0
t 1
t 2
p 3
t 5
t 6
t 7
p 2
t 1
t 2
t 6
p 0
t 0
p 7
t 0
t 7
p 5
t 3
t 4
t 6
t 7
p 0
t 6
t 7
p 0
t 1
t 3
t 6
t 7
p 0
t 1
t 4
t 5
t 6
t 7
p 0
t 4
p 4
t 6
p 0
t 1
t 6
p 4
t 5
t 6
t 7
p 0
t 1
t 3
t 5
p 0
t 1
p 1
t 1
t 3
t 7
p 0
t 1
t 5
t 7
p 0
t 1
t 4
t 5
p 0
t 1
p 3
t 3
t 7
p 1
t 1
t 5
p 0
t 1
t 3
t 4
t 7
p 0
t 1
t 5
p 0
t 4
t 6
t 7
p 0
t 4
p 0
t 1
t 4
t 7
p 0
इस CJam संदर्भ कार्यान्वयन के साथ परीक्षण मामले उत्पन्न हुए थे ।