जेली , 37 34 बाइट्स
“¢ ¬9£Hæz¥{çb¤S®!‘ṃ€“¡&¦»
¢iµ’,‘ị¢
इसे ऑनलाइन आज़माएं!
लोअरकेस इनपुट लेता है।
-2 जोनाथन एलन को धन्यवाद ।
-1 के बाद से यह एक समारोह के रूप में मान्य है :)
जोनाथन एलन (और डेनिस) के लिए धन्यवाद, अब आप हटा सकते हैं €
। दुर्भाग्य से, यहां गैर-प्रतिस्पर्धा होगी।
विस्तृत एल्गोरिथ्म स्पष्टीकरण :
हम आमतौर पर नीचे (मुख्य) लिंक से व्याख्या करना शुरू करते हैं, नीचे जा रहे हैं, लेकिन यहां मुझे लगता है कि यह ऊपर से समझाने के लिए अधिक उपयुक्त है।
सबसे पहले, हम बस सूची को लोड करते हैं [1, 32, 7, 57, 2, 67, 17, 92, 3, 94, 19, 119, 4, 109, 9, 34]
। यह यादृच्छिक संख्या की तरह लग रहा है हुह? खैर, यह वास्तव में आधार-5-संपीड़ित संख्याओं की एक सूची है, इसलिए हम इसे आधार -5-डिकम्प्रेस करते हैं। अब ऐसा लग रहा है [[1], [1, 1, 2], [1, 2], [2, 1, 2], [2], [2, 3, 2], [3, 2], [3, 3, 2], [3], [3, 3, 4], [3, 4], [4, 3, 4], [4], [4, 1, 4], [1, 4], [1, 1, 4]]
। अभी भी यादृच्छिक-दिखने वाले सामान, लेकिन यह वास्तव NESW
में सोलह निर्देशांक की एक- मैप की गई सूची है, इसलिए हम सूची को पूरा करने से बहुत दूर नहीं हैं (जेली 1-अनुक्रमित है)। अंतिम मानचित्रण करते हुए, हम प्राप्त करते हैं [['N'], ['N', 'N', 'E'], ['N', 'E'], ['E', 'N', 'E'], ['E'], ['E', 'S', 'E'], ['S', 'E'], ['S', 'S', 'E'], ['S'], ['S', 'S', 'W'], ['S', 'W'], ['W', 'S', 'W'], ['W'], ['W', 'N', 'W'], ['N', 'W'], ['N', 'N', 'W']]
, जो पूरी सूची है जो हम चाहते हैं (जेली स्ट्रिंग्स फॉर्म में हैं [char1, char2, char3, ...]
।)
चूंकि हमने अब समन्वय सूची बनाई है, इसलिए हम इसके साथ काम करते हैं। मुख्य लिंक खेलने में आता है। सबसे पहले, हम हमारे द्वारा बनाई गई सूची को लोड करते हैं, और फिर सूचकांक लेते हैं कि इनपुट (कमांड-लाइन तर्क के रूप में) समन्वय में रहता है। फिर, हम अपने पूर्ववर्ती और उसके उत्तराधिकारी को एक सूची में जोड़ते हैं, और हम उन्हें मॉड्यूलर के रूप में उपयोग करते हैं। क्रमशः इनपुट के बाईं और दाईं ओर समन्वय को लेने के लिए निर्देशांक की एक ही सूची में सूचकांक। अब आप सोचेंगे कि हम आखिरकार कर रहे हैं, लेकिन वास्तव में एक और बात है, विभाजक। यह एक फ़ंक्शन के रूप में मान्य है, 1 के बाद से) आप इसे <integer>Ŀ
2 का उपयोग करके कॉल कर सकते हैं ) आपको अन्य कार्यों को भी परिभाषित करने की अनुमति है (जैसे मॉड्यूल आयात करना)। अब, हम कर रहे हैं। एक पूर्ण कार्यक्रम के रूप में, इसमें विभाजक नहीं है, लेकिन यह ठीक है, क्योंकि यह एक फ़ंक्शन के रूप में काम करता है।
लिंक-दर-लिंक कोड स्पष्टीकरण :
¢iµ’,‘ị¢K Main link. Arguments: z = cmd0
¢ Run the helper link niladically (i.e. load the coordinate list).
i Find the index of z in the list.
µ Start a new monadic chain. Arguments: z = list_index.
’ Decrement z.
‘ Increment z.
, Pair x and y into [x, y].
¢ Run the helper link niladically.
ị Take the elements of y at the indices in x.
“¢ ¬9£Hæz¥{çb¤S®!‘ṃ€“¡&¦» Helper link. Arguments: [1, 32, 7, 57, 2, 67, 17, 92, 3, 94, 19, 119, 4, 109, 9, 34]
“¢ ¬9£Hæz¥{çb¤S®!‘ Generate the integer list (the argument).
“¡&¦» Literal "newsy".
ṃ€ Base-length(y)-decompress every integer in x, then index into y.