জাভাস্ক্রিপ্ট, 66 65 62 60 বাইট
স্ট্রিং হিসাবে ইনপুট নেয়, true
অপ্রাকলিত সংখ্যার জন্য প্রত্যাবর্তন করে , একক অঙ্কের জন্য একটি খালি স্ট্রিং (মিথ্যা) এবং false
অন্যথায়।
([s,...a])=>a+a&&a.every(x=>eval(s+"<>"[++y%2]+x,s=x),y=s<a)
চেষ্টা করে দেখুন
নীচের স্নিপেটটি পরীক্ষা করতে 0-9
এবং 25 টি এলোমেলো সংখ্যা চালান <10,000,000
।
f=
([s,...a])=>a+a&&a.every(x=>eval(s+"<>"[++y%2]+x,s=x),y=s<a)
tests=new Set([...Array(10).keys()])
while(tests.add(Math.random()*1e7|0).size<35);
o.innerText=[...tests].map(x=>(x=x+``).padStart(7)+` = `+JSON.stringify(f(x))).join`\n`
<pre id=o></pre>
ব্যাখ্যা
এটির মধ্যে কয়েকটি মজার ছোট কৌশল যাতে আমি মনে করি এটি আমার কাছ থেকে জেএস সমাধানের বিরল ব্যাখ্যা দেয় war
()=>
আমরা সহজভাবে একটি বেনামে ফাংশন দিয়ে শুরু করি যা ডাকে যখন আর্গুমেন্ট হিসাবে পূর্ণসংখ্যার স্ট্রিং নেয়।
[s,...a]
যে যুক্তি অবিলম্বে 2 পরামিতি মধ্যে destructured হয়: s
স্ট্রিং প্রথম অক্ষরটি হচ্ছে এবং a
অক্ষর বাকি ধারণকারী একটি অ্যারের হচ্ছে (যেমন "461902"
হয়ে s="4"
এবং a=["6","1","9","0","2"]
)।
a+a&&
প্রথমত, আমরা a
নিজের সাথে একত্রীকরণ করি যা উভয় ঘটনাকে স্ট্রিংয়ে ফেলে। যদি ইনপুটটি কোনও একক সংখ্যার হয় তবে a
খালি হবে এবং অতএব, খালি স্ট্রিং হয়ে যাবে; একটি খালি স্ট্রিং প্লাস একটি খালি স্ট্রিংটি এখনও একটি খালি স্ট্রিং এবং এটি জেএসে মিথ্যা বলেই, আমরা লজিক্যাল এন্ড এবং আমাদের খালি স্ট্রিংটিকে আউটপুট দেয়। অন্যান্য সমস্ত ক্ষেত্রে a+a
সত্যবাদী হবে এবং তাই আমরা ফাংশনের পরবর্তী অংশে চালিয়ে যাচ্ছি।
a.every(x=>)
যদি প্রত্যেক উপাদান আমরা চেক করব x
মধ্যে a
আয় true
যখন একটি ফাংশন মাধ্যমে গৃহীত।
y=s<a
এটি নির্ধারণ করে যে আমাদের প্রথম তুলনাটি কী হবে ( <
বা >
) এবং তারপরে আমরা সেখান থেকে বিকল্প করব। আমরা যাচাই করে স্ট্রিং s
অ্যারে চেয়ে কম হয় a
, যা প্রক্রিয়ায় একটি স্ট্রিং কাস্ট পরার যদি s
প্রথম অক্ষরের চেয়ে কম হয় a
, y
হতে হবে true
বা false
যদি এটা না।
s+"<>"[++y%2]+x
আমরা s
শুরুতে এবং x
শেষে বর্তমান মান সহ একটি স্ট্রিং তৈরি করি । মধ্যে সালে স্ট্রিং মধ্যে আমরা সূচক "<>"
বৃদ্ধিশীল দ্বারা y
, 2 দ্বারা একটি পূর্ণসংখ্যা, এবং মডিউল তার প্রাথমিক বুলিয়ান মান ভোটদান, আমাদের দান 0
বা 1
।
eval()
স্ট্রালটি সমান করুন।
s=x
অবশেষে, আমরা একটি দ্বিতীয় যুক্তি পাস করি eval
যা এটি উপেক্ষা করে এবং পরবর্তী পুনরাবৃত্তির জন্য s
বর্তমান মানটির মান সেট করতে এটি ব্যবহার করি x
।