f=_=>do{try{-~f()}catch(e){}}
- 2 বাইট সংরক্ষিত নীলকে ধন্যবাদ
এটি এখানে চেষ্টা করুন বা এর evalপরিবর্তে এটি পরীক্ষা করতে নীচে স্নিপেট ব্যবহার করুন do।
console.log((f=_=>eval(`try{-~f()}catch(e){}`))())
জাপট বন্দর, 24 বাইট
এটি পৃথক সমাধান হিসাবে পোস্ট করার পক্ষে এটি যথার্থ নয় কারণ এটি মূলত অভিন্ন।
Ox`try\{-~rp()}¯t®(e)\{}
এটা পরীক্ষা করো
ব্যাখ্যা
জাভাস্ক্রিপ্ট নিজেই প্রতি সেবার একটি পুনরাবৃত্তি সীমা নেই, বরং সীমা দোভাষী দ্বারা (যেমন, ব্রাউজার) চাপিয়ে দেওয়া হয়েছে - ভাল কথা যা আমরা তাদের দোভাষী দ্বারা এখানে ভাষা সংজ্ঞায়িত করি! অন্যান্য কারণগুলির মধ্যে, ব্রাউজার এবং উপলভ্য মেমরি অনুসারে সীমাটি পৃথক হতে পারে যা অপারেশনগুলি সম্পাদন করে প্রভাবিত হয়। নিম্নলিখিত স্নিপেটটি এই শেষের পয়েন্টটি ব্যাখ্যা করে, আমি এই সমাধানটির 5 টি বিভিন্ন সংস্করণ ব্যবহার করেছিলাম। আপনি শেষ 2 টি পরীক্ষা থেকে দেখতে পাচ্ছেন, ক্রোমে, কমপক্ষে এমনকি ক্রিয়াকলাপের ক্রমও কিছুটা পৃথক করতে পারে।
console.log((f=(i=0)=>eval(`try{f(i+1)}catch(e){i}`))())
console.log((f=i=>eval(`try{f(-~i)}catch(e){i}`))())
console.log((f=(i=0)=>eval(`try{f(++i)}catch(e){i}`))())
console.log((f=_=>eval(`try{-~f()}catch(e){}`))())
console.log((f=_=>eval(`try{f()+1}catch(e){0}`))())
console.log((f=_=>eval(`try{1+f()}catch(e){0}`))())
যে দেওয়া, আমাদের কাজ করে কাজ করার জন্য ধ্রুবক বা পদ্ধতির সুবিধা নেই। পরিবর্তে, আমরা এমন একটি ফাংশন তৈরি করতে যাচ্ছি যা নিজেকে ক্রমাগত কল করার আগেই ক্রমাগত কল করে। এটি সর্বাধিক সহজ আকারে এটি:
f=_=>f()
তবে এই চ্যালেঞ্জের জন্য এটি আমাদের পক্ষে খুব বেশি ব্যবহারযোগ্য নয় কারণ এটি কেবল একটি ওভারফ্লো ত্রুটিটি ছুঁড়ে ফেলেছে যে fনিজেকে কতবার ডাকা হয়েছে তার কোনও ইঙ্গিত ছাড়াই । আমরা দ্বারা ত্রুটি এড়াতে পারেন trying কলে fক্রমাগত এবং catching যখন এটি ব্যর্থ হলে:
f=_=>{try{f()}catch(e){}}
কোনও ত্রুটি নেই, তবে এখনও ব্যর্থ হওয়ার আগে কতবার ফাংশন নিজেকে কল করতে পরিচালিত হয়েছিল তার কোনও রিটার্ন ভ্যালু নেই, কারণ এটি catchআসলে কিছুই করছে না। আসুন try / catchবিবৃতিটি মূল্যায়ন করার চেষ্টা করুন :
f=_=>eval(`try{f()}catch(e){}`)
এখন আমরা ফিরে আসার একটি মূল্য পেয়েছি (এবং এটি কোড গল্ফ কারণ, আসল ব্যবহারের মাধ্যমে কয়েক বাইট নিজেকে রক্ষা করেছে return)। প্রত্যাবর্তন করা মানটি undefinedআবার, কারণ এটি catchকিছুই করছে না। আমাদের জন্য সৌভাগ্য যে -~undefined==1এবং -~n==n+1তাই হয়, একটি পপিং দ্বারা -~কল সামনে থেকে f, আমরা মূলত পেয়েছেন -~-~ ... -~-~undefined, অন্য সঙ্গে -~প্রতিটি কলের সঙ্গে prepended আমাদের যতবার দান fডাকা হয়।
f=_=>eval(`try{-~f()}catch(e){}`)