एलिस , 17 बाइट्स
/?.R?y.@
\i.!yDo/
इसे ऑनलाइन आज़माएं!
व्याख्या
/...@
\.../
यह ऑर्डिनल मोड में रैखिक कोड के लिए सिर्फ सामान्य टेम्पलेट है। यदि हम इसे प्रकट करते हैं, तो वास्तविक कार्यक्रम बस बन जाता है:
i.!?D.?.Ryyo
यहां का विचार मेरे सीजेएम उत्तर के समान है । चूंकि एलिस के पास पूर्णांकों के साथ तार में अनुक्रमित करने का कोई आसान तरीका नहीं है, इसलिए इस व्यवहार को लिप्यंतरण ( yऐलिस में) के साथ दोहराना सबसे आसान है । हालांकि, ऐलिस के लिप्यंतरण शब्दार्थ सीजेएम की तुलना में बहुत अधिक सामान्य हैं, जिसका अर्थ है कि ऐलिस बार-बार होने वाली मैपिंग की उपेक्षा नहीं करता है। उदाहरण के लिए, यदि हम सिर्फ Mmm, marshmallowsइसके उलट अनुवाद करना चाहते हैं, तो यह मैपिंग की निम्नलिखित सूची का प्रतिनिधित्व करेगा:
M -> s
m -> w
m -> o
, -> l
-> l
m -> a
a -> m
r -> h
s -> s
h -> r
m -> a
a -> m
l ->
l -> ,
o -> m
w -> m
s -> M
ध्यान दें कि हम मिल गया है, उदाहरण के लिए, m -> w, m -> o, m -> aऔर m -> a। CJam पहली मैपिंग को छोड़कर सभी को छोड़ देगा, लेकिन ऐलिस इसके बजाय साइकिल चलाएगा। तो पहले mको मैप किया जाएगा w, दूसरे को o, फिर से पांचवें wऔर इतने पर। इस मामले कि उपयोगी नहीं है, क्योंकि सामान्य रूप में अगर हम प्रदर्शन में yपर AAB(कुछ स्ट्रिंग्स के लिए Aऔर B) के रूप में हम CJam में किया था, हम हमेशा सिर्फ मिलेगा Bऐलिस में।
तो हम एक मैपिंग की गणना कैसे करते हैं जो काम करता है y(यानी हम दोहराए गए मैपिंग को मैन्युअल रूप से कैसे छोड़ते हैं)? बेशक, एक और लिप्यंतरण का उपयोग करके। :)
हम चाहते हैं कि मानचित्रण का स्रोत इनपुट (यानी घटा हुआ इनपुट) का होना है। यदि हम उपरोक्त मैपिंग को nub पर लागू करते हैं, तो प्रत्येक वर्ण केवल एक बार दिखाई देता है, इसलिए हम केवल प्रत्येक दोहराए गए मैपिंग में से पहले का उपयोग कर रहे हैं। तो इनपुट और इसके रिवर्स के साथ नब का अनुवाद करके, हम प्रभावी रूप से केवल डुप्लिकेट किए गए मैपिंग को छोड़ रहे हैं। हम मूल इनपुट के लिए मैपिंग के रूप में nub और इस नए परिणाम का उपयोग कर सकते हैं। मुझे यकीन है कि किसी को समझ में आया ...
तो कोड:
i Read input. ["Mmm, marshmallows"]
.! Store a copy on the tape.
?D Push the nub of the input. ["Mmm, marshmallows" "Mm, arshlow"]
. Duplicate. ["Mmm, marshmallows" "Mm, arshlow" "Mm, arshlow"]
? Retrieve input. ["Mmm, marshmallows" "Mm, arshlow" "Mm, arshlow" "Mmm, marshmallows"]
.R Push its reverse. ["Mmm, marshmallows" "Mm, arshlow" "Mm, arshlow" "Mmm, marshmallows" "swollamhsram ,mmM"]
y Transliterate. ["Mmm, marshmallows" "Mm, arshlow" "swllmhsr mm"]]
y Transliterate. ["swwllwmhsrwm mms"]
o Output. []