পার্ল 6 22/30
আমি দেখতে যাচ্ছি যে পার্ল 6 আমার জন্য ক্রমটি কমাতে পারে uce
এটি করার জন্য আমি পার্ল into এ অন্তর্নির্মিত আরপিএল ব্যবহার করেছি
$ perl6
> 1,2,4,7...*
Unable to deduce arithmetic or geometric sequence from 2,4,7 (or did you really mean '..'?)
> 1,2,4,7,10...*
1 2 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64 67 70 ...
হুম, আমি পার্লকে যে প্যাটার্নটি হ্রাস করেছিল তা দেখতে পাচ্ছি। পরবর্তী মান পেতে 4 এর পরে আপনি কেবল 3 যুক্ত করুন।
1,2,4,*+3...*
যা স্ট্রহর অনুক্রমের 13 অক্ষর দীর্ঘ লম্বা সংখ্যার একটি অসীম তালিকা পেতে কোড তৈরি করে একটি অক্ষর সংরক্ষণ করে।
যেহেতু এটি ছাপে এই কোড শুধুমাত্র কিছু REPL দরকারী করে সারকথা আমাদের জন্য ফলাফল। অন্যথায় এটি মুদ্রণের জন্য আপনাকে ফলাফলগুলি প্রিন্ট করার জন্য স্পষ্টভাবে পার্লকে বলতে হবে।
$ perl6 -e 'say 1,2,4,*+3...*'
( * + 3
কোনও কোড রেফারেন্স পাওয়ার সহজ উপায় যা 3 টি প্রদান করে এটি কেবল যুক্তি হিসাবে যুক্ত হয় it এটি লেখার অন্যান্য উপায় হতে পারে { $_ + 3 }
, বা -> $i { $i + 3 }
, বা{ $^i + 3 }
বা sub ($i){ $i + 3 }
))
প্রথম এন তৈরির জন্য কলযোগ্য কিছু তৈরি করার সবচেয়ে সংক্ষিপ্ততম উপায় উপাদানগুলি উপাদানগুলির একটি স্লাইস পাওয়া।
{(1,2,4,*+3...*)[^$_]} # 22
অকার্যকর প্রসঙ্গে যা প্রথম $_
মান তৈরি করে তাৎক্ষণিকভাবে এগুলি ফেলে দেয় them
অকার্যকর প্রসঙ্গ ব্যতীত অন্য কোনও ক্ষেত্রে এটি একটি বেনামি কোড ব্লক তৈরি করে (একটি নাম ছাড়াই একটি মৌলিক সাবরুটিন) যা একটি যুক্তি গ্রহণ করে।
# store it in a scalar variable
my $sub = {(1,2,4,*+3...*)[^$_]};
say $sub.(5);
# 1 2 4 7 10
# use it immediately
say {(1,2,4,*+3...*)[^$_]}.(5);
# 1 2 4 7 10
# pretend it always had a name
my &Stöhr-first = {(1,2,4,*+3...*)[^$_]};
say Stöhr-first 5;
আপনি যদি সত্যিই ভাবেন যে এই চ্যালেঞ্জটির বৈধ হিসাবে যোগ্যতার জন্য এর একটি নাম থাকতে হবে আপনি সম্ভবত এটি করতে পারেন:
sub s(\n){(1,2,4,*+3...*)[^n]} # 30
যদিও যেহেতু s
সাবস্টিটিউশন অপারেটরের জন্য এটি ব্যবহৃত হয়, এটি প্যারেন্সগুলি অ-alচ্ছিক বলে অভিহিত করা হয়। (আমি মনে করি আপনি এটির কোনও আলাদা নাম দিতে পারতেন)
say s(5);
# 1 2 4 7 10