আমরা পূর্ণসংখ্যার একটি তালিকা ভাঁজ করতে যাচ্ছি। এটি করার পদ্ধতিটি নিম্নরূপ: তালিকাটি যদি দৈর্ঘ্যের দৈর্ঘ্যের হয় তবে তার দৈর্ঘ্যের অর্ধেকের একটি তালিকা তৈরি করুন যেখানে নতুন তালিকার নবম আইটেমটি পুরানো তালিকার নবম আইটেমের যোগফল এবং নবম থেকে টু- পুরানো তালিকার শেষ আইটেম। উদাহরণস্বরূপ যদি আমরা তালিকা ছিল
[1 2 3 4 5 6 7 8]
আমরা এটি যেমন ভাঁজ হবে
[8 7 6 5]
+[1 2 3 4]
__________
[9 9 9 9]
যদি তালিকাটি বিজোড় দৈর্ঘ্যের হয়, এটিকে ভাঁজ করার জন্য আমরা প্রথমে মাঝারি আইটেমটি সরিয়ে ফেলব, এটিকে ভাঁজ করব যেন এটি সমান এবং ফলাফলটি মধ্যবর্তী আইটেমটি সংযোজন করে।
উদাহরণস্বরূপ যদি আমরা তালিকা ছিল
[1 2 3 4 5 6 7]
আমরা এটি যেমন ভাঁজ হবে
[7 6 5]
+[1 2 3]
__________
[8 8 8]
++ [4]
__________
[8 8 8 4]
কার্য
একটি প্রোগ্রাম বা ফাংশন লিখুন যা ইনপুট হিসাবে পূর্ণসংখ্যার একটি তালিকা নেয় এবং সেই তালিকাটিকে ভাঁজ করে আউটপুট দেয়।
এটি একটি কোড-গল্ফ প্রশ্ন তাই উত্তরগুলি বাইটে স্কোর করা হবে, কম বাইট আরও ভাল।
নমুনা বাস্তবায়ন
এখানে হাসকেলে একটি প্রয়োগ রয়েছে যা একটি ফাংশন সংজ্ঞা দেয় f
যা একটি ভাঁজ সম্পাদন করে।
f(a:b@(_:_))=a+last b:f(init b)
f x=x