পার্ল: ∞
$z.="-1,";$_.=A;END{$m.=!!s/./{${z}B}/g,map(/B/||s/\d+\K/,/g*/(-\d*,).*\1/||($n{$_}||=$m++),sort glob),print$n{$z}if/A/}
$z.="-2,";$_.=A;END{$m.=!!s/./{${z}B}/g,map(/B/||s/\d+\K/,/g*/(-\d*,).*\1/||($n{$_}||=$m++),sort glob),print$n{$z}if/A/}
$z.="-3,";$_.=A;END{$m.=!!s/./{${z}B}/g,map(/B/||s/\d+\K/,/g*/(-\d*,).*\1/||($n{$_}||=$m++),sort glob),print$n{$z}if/A/}
আপনার পছন্দ মতো দৈর্ঘ্যে প্রসারিত করুন
মেমরির ব্যবহার ও (n ^ n) এর মতো হওয়ায় দ্রুত মেমরি ফুরিয়ে যাবে। তবে আরও দীর্ঘতর ও (এন) কোড দ্বারা অনুমানের সূচককে প্রতিস্থাপন করা সহজ হবে। END{}
এই কাজের জন্য আপনি যেভাবে পার্ল ব্যবহার করতে পারবেন তা আমি কেবল চিত্রিত করছি । সমস্ত END{}
ব্লকগুলি প্রস্থান করার সময় চলতে থাকে, তবে কেবলমাত্র প্রথমটি যে কল হয় (কোডের মধ্যে একটি শেষ) /A/
পরীক্ষার কারণে যে কোনও ফলাফল আউটপুট দেয় যা কেবল একবারেই সত্য is
লক্ষ্য করুন যে $m
কাউন্টারটিকে স্ট্রিং হিসাবে গণনা করতে হবে কারণ একটি সংখ্যা হিসাবে এটি উপচে পড়বে (মহাবিশ্বের শেষের চেয়ে পরে তবে এটি নীতিটি গণনা করে)। একই কারণে আমি A
একটি সত্যিকারের কাউন্টার ব্যবহার না করে স্ট্রিং তৈরি করে লাইনের সংখ্যা "গণনা" করি যদিও এই ওভারফ্লো আরও পরে ঘটবে।
পার্লে এটি করার আর একটি উপায়:
@{$b.=A; if($a eq $b) {use bigint; $n=0;$n++for@F;$c=0;$c=$c*$n--+map{$z=$_;$a=grep$_&&$_>$z,@F;$_=0;}@F;print$c}}=()x push@F,"1".!($a.=A),
@{$b.=A; if($a eq $b) {use bigint; $n=0;$n++for@F;$c=0;$c=$c*$n--+map{$z=$_;$a=grep$_&&$_>$z,@F;$_=0;}@F;print$c}}=()x push@F,"2".!($a.=A),
@{$b.=A; if($a eq $b) {use bigint; $n=0;$n++for@F;$c=0;$c=$c*$n--+map{$z=$_;$a=grep$_&&$_>$z,@F;$_=0;}@F;print$c}}=()x push@F,"3".!($a.=A),
এটি সেই সত্যটি ব্যবহার করে যা foo = bar
bar
পরে কার্যকর করা হয় foo
। যাইহোক এই সংস্করণটি সময় এবং জায়গাতে পাগল হয় না তবে কোডটি আরও দীর্ঘ করে দেয়
তবুও আরেকটি ধারণাটি ব্যবহার করা হচ্ছে DESTROY
যার সুবিধা রয়েছে যে তাদের মধ্যে কেবল একটিকেই কার্যকর করা হবে। আমি ইতিমধ্যে দুটি উদাহরণ দিয়েছি এমন ক্রিয়াকলাপ সূচক কোডটি পুনরাবৃত্তি করতে যাচ্ছি না।
push@F,"1";bless\@F;DESTROY{print"Work out permutation index of @{$_[0]}\n" }
push@F,"2";bless\@F;DESTROY{print"Work out permutation index of @{$_[0]}\n" }
push@F,"3";bless\@F;DESTROY{print"Work out permutation index of @{$_[0]}\n" }
বা ব্যবহার BEGIN
:
BEGIN{push@F,"1"} print"Work out permutation index of @F\n"; exit;
BEGIN{push@F,"2"} print"Work out permutation index of @F\n"; exit;
BEGIN{push@F,"3"} print"Work out permutation index of @F\n"; exit;
n
? তারা সবাই কি ∞ এর স্কোর এ বাঁধা?