প্রশ্ন, 47 বাইট
m:{*/1_-':|(0<){y-x x bin y}[*+60(|+\)\1 0]\x}
পরীক্ষা
+(i;m'i:1 2 3 4 5 6 7 8 9 42 1000 12345)
এটি জোড় (i, মানচিত্র (মি, i)) হিসাবে পড়ুন, যেখানে মি গণনাকারী ফাংশন এবং আমি বিভিন্ন আর্গুমেন্ট
লিখেছেন
1 1
2 2
3 3
4 3
5 5
6 5
7 10
8 8
9 8
42 272
1000 12831
12345 138481852236
ব্যাখ্যা
n funtion\arg
ফাংশন প্রয়োগ করে (ফাংশন (ফাংশন (... ফাংশন (আরগস))) n বার (অভ্যন্তরীণভাবে তাল পুনরাবৃত্তি ব্যবহার করে), এবং ফলাফলগুলির অনুক্রমটি প্রদান করে We আমরা ফাইবোনাসি সিরিজের 60 টি প্রথম আইটেম গণনা করি that *+60(|+\)\1 0
সেক্ষেত্রে ফাংশনটি ( | +): + a একটি অনুক্রমের উপর প্রয়োগ করা আংশিক অঙ্কগুলি গণনা করে (প্রাক্তন + \ 1 2 3 হল 1 3 6) এবং | সিক্স বিপরীত হয় সুতরাং প্রতিটি 'পুনরাবৃত্তি' আমরা পূর্ববর্তী দুটি ফাইবোনাকির সংখ্যার আংশিক যোগফল গণনা করি এবং আংশিকটি ফিরে পাই অঙ্কগুলি বিপরীত 60(|+\)\1 0
হয় sequ 1 0, 1 1, 2 1, 3 2, 5 3, 8 5, 13 8, 21 13, ... *+
এই ফলটিকে উল্টাতে (ট্রাসপোজ) প্রয়োগ করা হয় এবং এটি প্রথম গ্রহণ করে। ফলাফলটি সিকোয়েন্স 1 1 2 3 5 8 13 21 34 55 ..
(cond)function\args
কনড সত্য হিসাবে ফাংশন (ফাংশন (.. ফাংশন (আরগস))) প্রয়োগ করে এবং আংশিক ফলাফলের অনুক্রমটি প্রদান করে
function[arg]
একাধিক আর্গুমেন্টের ক্রিয়াকলাপের জন্য প্রয়োগ করা একটি প্রজেকশন তৈরি করে (আংশিক প্রয়োগ)
আমরা আরগগুলিকে নাম দিতে পারি, তবে অন্তর্নিহিত নামগুলি হল x, y, z
{y-x x bin y}[*+60(|+\)\1 0]
আংশিক প্রক্ষেপণের সাথে আরগ্স x, y সহ একটি ল্যাম্বদা ঘোষনা করে (আর্গ x ফিবোনাচি সিরিজ, * + 60 (| +) \ 1 0) হিসাবে গণনা করে। x ফাইবোনাচি মানগুলি এবং y প্রক্রিয়া করার জন্য সংখ্যাটি উপস্থাপন করে। বাইনারি অনুসন্ধান (বিন) বৃহত্তর ফিবোনাচি নম্বর <= y ( x bin y
) এর সূচকটি সনাক্ত করতে এবং x এর সাথে সম্পর্কিত মানটি বিয়োগ করতে ব্যবহৃত হয়।
আংশিক রেজোলস থেকে পণ্য গণনা করতে আমরা সেগুলি বিপরীত করি এবং প্রতিটি জুটির পার্থক্য গণনা করি ( -':|
), প্রথমটি বাদ দিন ( 1_
কারণ 0) এবং বহুগুণ ( */
)।
কোড আমরা সঞ্চিত সমষ্টি আগ্রহী একই, কিন্তু সঙ্গে +/
পরিবর্তে */
। আমরা + বা * এর পরিবর্তে অন্য কোনও ডায়াডিক অপারেটরও ব্যবহার করতে পারি
কার্যকর করার দক্ষতা সম্পর্কে
আমি জানি যে এই প্রতিযোগিতায় দক্ষতা কোনও সমস্যা নয়। তবে এই সমস্যায় আমরা লিনিং কস্ট থেকে শুরু করে এক্সপোনেনশিয়াল খরচ পর্যন্ত পারি, তাই আমি এটি সম্পর্কে কৌতূহলী।
আমি একটি দ্বিতীয় সংস্করণ তৈরি করেছি (মন্তব্য ব্যতীত দৈর্ঘ্য 48 বাইট) এবং উভয় সংস্করণে বারবার পরীক্ষার ক্ষেত্রে ব্যাটারির 1000 বার ব্যাটারি করা হয়েছে।
f:*+60(|+\)\1 0;m:{*/1_-':|(0<){x-f f bin x}\x} /new version
কার্যকর করার সময়: আসল সংস্করণ 0'212 সেগ, নতুন সংস্করণ 0'037 সেগ g
আসল সংস্করণ প্রতি ফাংশন অ্যাপ্লিকেশনটিতে একবার ফাইব্বোনচি সেরি গণনা করে; নতুন সংস্করণ কেবল একটি ফাইবোনাকি গণনা করে।
উভয় ক্ষেত্রে ফিবোনাচি সিরিজের গণনা লেজ পুনরাবৃত্তি ব্যবহার করে
2
হিসাবে ক্ষয় হতে পারে-1 + 3
। জেকেন্ডারফের উপপাদ্যটির সঠিক বক্তব্যটি হ'ল ধনাত্মক ফাইবোনাচি সংখ্যাটি ইতিবাচক সূচক সহ একটানা ফিবোনাচি সংখ্যার যোগ হিসাবে স্বতন্ত্রভাবে পচে যেতে পারে।