MATL , 56 53 बाइट्स
:"'!!((!((!!#*```).?p0```!!!]'8eP!P]'p(.' '.a-'XE&hqc
इसे ऑनलाइन आज़माएं!
व्याख्या
बकरी को जगाओ
जागृत बकरी को स्ट्रिंग में पैक किया जा सकता है
'' '' ")___(->o/___ \
और जल्द ही समझाया जाएगा। हालाँकि, उन्हें छोड़ने के लिए एकल-उद्धरण प्रतीकों को दोहराया जाना चाहिए , इसलिए स्ट्रिंग शाब्दिक को परिभाषित करना होगा (एकल-उद्धरण चिह्नों और मूल लोगों के दोहराव को नोट करें):
' '''' '''' ")___(->o/___ \'
बाइट्स को बचाने के लिए, हम ऊपर दिए गए वर्णों को एक कोड बिंदु का उपयोग करके स्ट्रिंग को परिभाषित करते हैं , इस प्रकार दोहराव से बचते हैं। स्ट्रिंग शाब्दिक बन जाता है
'!!((!((!!#*```).?p0```!!!]'
कोड के अंत में हम 1 को घटाएंगे और चार में बदलेंगे। (हम इसे अभी कर सकते हैं, स्ट्रिंग शाब्दिक के ठीक बाद में; लेकिन इसे अंत तक छोड़ने से एक और एकल-उद्धरण दोहराव बच जाएगा, जैसा कि हम देखेंगे)।
यह समझाने के लिए कि स्ट्रिंग कैसे अनपैक्ड है, हम मूल वर्णों के साथ काम करेंगे (जो कि कोड 1 के अंत में कोड के अंत में निर्मित होते हैं), इसलिए स्पष्टीकरण का पालन करना आसान है। हम पहले स्ट्रिंग को फिर से खोलते हैं
'' '' ")___(->o/___ \
स्तंभ-प्रमुख क्रम (नीचे, फिर उस पार) में एक 8-पंक्ति 2 डी चार सरणी में । यह स्वचालित रूप से अंतिम कॉलम को char 0 के साथ डालता है (कोड के अंत में, 1 को घटाकर इसे नंबर −1 में बदल देगा, जो char में फिर से बदलकर char 0 देता है)। चार 0 को एक स्थान के रूप में प्रदर्शित किया जाता है। इतनी प्रभावी रूप से हम रिक्त स्थान के साथ पैडिंग कर रहे हैं। रिहा करने का परिणाम है
>
"o\
')/
'__
__
'__
'(
-
अब हम लंबवत पलटें:
-
'(
'__
__
'__
')/
"o\
>
और फिर जागरण बकरी का उत्पादन करने के लिए फिर से लंबवत रूप से स्थानांतरित और फ्लिप करें:
\
___/o>
-(___)"
'' ''
दो फ्लिप संचालन की आवश्यकता है क्योंकि मूल पैक्ड स्ट्रिंग "रिवर्स" है। यह इस तथ्य का फायदा उठाने के लिए है कि बकरी का प्रतिनिधित्व करने वाले वास्तविक 2 डी चार सरणी में इसकी पहली पंक्ति में 6 प्रारंभिक स्थान हैं, जो स्ट्रिंग 8-पंक्ति 2 डी सरणी में बदल दिए जाने पर स्वचालित रूप से पैडिंग द्वारा भर जाते हैं। लेकिन पैडिंग अंतिम कॉलम (पंक्ति नहीं) के अंत में (शुरुआत में) किया जाता है, इसलिए फ़्लिप और ट्रांसपोज़ होता है।
सो रही बकरी
एक नींद की बकरी का लिप्यंतरण वर्ण द्वारा एक जाग बकरी से उत्पन्न होता है o
, '
, -
में -
, `
, ,
क्रमशः। वास्तव में, एक कोड-बिंदु से ऊपर परिवर्तन की वजह से, हम वर्ण लिप्यन्तरण p
, (
, '
में .
, a
, -
, फिर हमें एकल उद्धरण प्रतीक नकल के लिए होने से बचाता है जो। यही कारण है कि कार्यक्रम के अंत के लिए घटाव-एक ऑपरेशन छोड़ा गया था।
कोड संरचना
- एक जागृत बकरी
N
बार उत्पन्न करें , कोड अंकों के साथ काम करके 1 की वृद्धि हुई।
- अंतिम बकरी को सोते हुए बकरी में बदल दें।
- क्षैतिज रूप से सभी बकरियों को सम्मिलित करें। कोड अंक के लिए 1 घटाएँ और चार को डाली।
टिप्पणी कोड
: % (Step 1) Implicitly input N. Push range [1 2 ... N]
" % For each (i.e. repeat N times)
'!!((!((!!#*```).?p0```!!!]' % Push this string. Quotes are escaped by duplicating
8e % Reshape into an 8-row 2D array of char, in
% column-major order, padding last column with
% char 0
P % Flip vertically
!P % Transpose and flip vertically
] % End
'p(.' % (Step 2) Push this string: source for transliteration
'.a-' % Push this string: target for transliteration
XE % Transliterate. Transforms last goat into sleeping
&h % (Step 3) Horizontally concat all 2D char arrays
qc % Subtract 1 and convert to char. 0 becomes −1, which
% is converted to char 0, which is displayed as a space
% Implicitly display