জেলি , 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, ...]
))
যেহেতু আমরা এখন সমন্বয় তালিকা তৈরি করেছি, আমরা এটি নিয়ে কাজ করি। মূল লিঙ্কটি খেলতে আসে। প্রথমে আমরা যে তালিকাটি তৈরি করেছি তা লোড করে তারপরে ইনপুটটি (কমান্ড-লাইন আর্গুমেন্ট হিসাবে) সমন্বিত থাকে এমন সূচিটি নিয়ে যাই Then তারপরে, আমরা এর পূর্বসূরি এবং এর উত্তরসূরিকে একটি তালিকায় যুক্ত করি, এবং আমরা সেগুলি মডুলার হিসাবে ব্যবহার করি স্থানাঙ্কের একই তালিকার সূচকগুলি যথাক্রমে ইনপুটটির বাম এবং ডানে স্থানাঙ্ক নিতে। আপনি এখন ভাবেন যে আমরা শেষ পর্যন্ত শেষ করেছি, তবে বাস্তবে আরও একটি জিনিস রয়েছে, বিভাজক। এটি ফাংশন হিসাবে বৈধ, যেহেতু 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.