দ্রষ্টব্য: এই সমস্ত কৌশলগুলি বর্ণমালার স্ট্রিংকে ভেরিয়েবলের জন্য বরাদ্দ করে a
।
আমি 99% নিশ্চিত যে জাভাস্ক্রিপ্টে এটি অর্জনের সবচেয়ে সংক্ষিপ্ততম উপায়টি সত্যই:
a="abcdefghijklmnopqrstuvwxyz" // 30 bytes
তবে আরও বেশ কয়েকটি আকর্ষণীয় পদ্ধতি রয়েছে। আপনি স্ট্রিং সংক্ষেপণ ব্যবহার করতে পারেন:
a=btoa`i·?yø!?9%?z)ª»-ºü1`+'yz' // 31 bytes; each ? represents an unprintable
আপনি সংক্ষেপিত স্ট্রিংটি পেতে পারেন atob`abcdefghijklmnopqrstuvwx`
। 'yz'
ম্যানুয়ালি যোগ করা হবে কারণ যদি আপনি পুরো স্ট্রিং কম্প্রেস, যখন ফলাফলের শুধুমাত্র 27 বাইট, এটা হিসেবে চালু হবে abcdefghijklmnopqrstuvwxyw==
।
আমি বিশ্বাস করি যে এটির প্রোগ্রামটিমেটিক্যালি করার সবচেয়ে সংক্ষিপ্ততম উপায়টি আপনার প্রস্তাবিত পদ্ধতিও:
for(i=97,a='';i<123;)a+=String.fromCharCode(i++) // 48 bytes
আপনি যদি এটি চান তবে ইএস 6 বৈশিষ্ট্যগুলি ( টেম্পলেট স্ট্রিং``
, স্প্রেড অপারেটর...
) দিয়ে এটি করতে পারেন:
a=[...Array(26)].map(_=>String.fromCharCode(i++),i=97).join`` // 61 bytes
a=[...Array(26)].map((_,i)=>String.fromCharCode(i+97)).join`` // also 61 bytes
a=[...Array(i=26)].map(_=>String.fromCharCode(++i+70)).join`` // again, 61 bytes
পরিবর্তে ভেরিয়েবলের মাধ্যমে আপনি আরও একটি ভাল করতে পারেন .join``
:
[...Array(26)].map(_=>a+=String.fromCharCode(i++),i=97,a='') // all 60 bytes
[...Array(26)].map((_,i)=>a+=String.fromCharCode(i+97),a='')
[...Array(i=26)].map(_=>a+=String.fromCharCode(++i+70),a='')
বা অ্যারে বোঝাপড়া সহ ES7 , যা অন্য একটি বাইট সংক্ষিপ্ত:
a=[for(_ of Array(i=26))String.fromCharCode(++i+70)].join`` // 59 bytes
ভেরিয়েবলটি আগে তৈরি করা অন্য একটি বাইট সংরক্ষণ করে:
a='',[for(_ of Array(i=26))a+=String.fromCharCode(++i+70)] // 58 bytes
এছাড়াও, String.fromCharCode
একাধিক যুক্তি গ্রহণ করে এবং স্বয়ংক্রিয়ভাবে সেগুলিতে যোগদান করবে। সুতরাং আমরা প্রতিটি ES6 সংস্করণ 57 বাইটে গল্ফ করতে পারি:
a=String.fromCharCode(...[...Array(26)].map(_=>i++,i=97)) // all 57 bytes
a=String.fromCharCode(...[...Array(26)].map((_,i)=>i+97))
a=String.fromCharCode(...[...Array(i=26)].map(_=>++i+70))
এবং ES7 এক 55 এর নিচে:
a=String.fromCharCode(...[for(_ of Array(i=26))++i+70]) // 55 bytes
আপনি যদি গল্ফিং রেঞ্জগুলি সম্পর্কে আরও জানতে চান তবে এই টিপসের সেটটি দেখুন । ES7 এর অ্যারে বোধগম্যতা সম্পর্কে একটি রয়েছে ।
সম্পাদনা: এডসি 65 যেমন উল্লেখ করেছে, এর বেশিরভাগগুলি এর i.toString(36)
পরিবর্তে ছোট হয়ে যায় String.fromCharCode(i)
:
for(i=9,a='';++i<36;)a+=i.toString(36) // 38 bytes
a=[...Array(26)].map(_=>(++i).toString(36),i=9).join`` // 54 bytes
[...Array(26)].map(_=>a+=(++i).toString(36),i=9,a='') // 53 bytes
i=9,a=[for(_ of Array(26))(++i).toString(36)].join`` // 52 bytes
i=9,a='',[for(_ of Array(26))a+=(++i).toString(36)] // 51 bytes
আমি বিশ্বাস করি যে এটিই সবচেয়ে সংক্ষিপ্ততম যাকে ফাংশন রিটার্ন মান হিসাবে ডাকা যেতে পারে:
eval("for(i=9,a='';++i<36;)a+=i.toString(36)") // 46 bytes
এটি কোনও ফাংশন থেকে ম্যানুয়ালি ফেরত দেওয়ার চেয়ে এটি তিনটি বাইট সংক্ষিপ্ত:
x=>eval("for(i=9,a='';++i<36;)a+=i.toString(36)") // 49 bytes
x=>{for(i=9,a='';++i<36;)a+=i.toString(36);return a} // 52 bytes
অবশ্যই, x=>"abcdefghijklmnopqrstuvwxyz"
এখনও সব কিছু প্রহার করে।