পাইথন 2 , 38 30 28 বাইট
lambda S:`6793**164`[len(S)]
এটি অনলাইন চেষ্টা করুন!
দুর্ভাগ্যক্রমে এখনও পাইথন 2 উত্তরের চেয়ে এখনও একটি বাইট দীর্ঘ; যদিও enklact
-প্রশংস ব্যবহার না করে ।
এখন আইটিএমের উত্তর ক্রাইয়ের চেয়ে এক বাইট কম !
এটা কিভাবে কাজ করে?
প্রচুর শক্তিশালী বলের পরে, আমি একটি অভিব্যক্তি পেয়েছি যা এমন একটি সংখ্যার ফলাফল করে যেখানে কেবল সঠিক সংখ্যা রয়েছে।
আমি লক্ষ্য করেছি যে প্রদত্ত স্ট্রিংয়ের দৈর্ঘ্যের মাত্র একটি নির্দিষ্ট অঙ্কের জন্য 3 বাইট ( %10
) প্রয়োজন। সুতরাং আমি আরও একটি পাইথন প্রোগ্রাম লিখেছি ( পাস্তবিন লিঙ্ক ) আরও সন্ধানের জন্য যারা সপ্তাহের দিন পর্যন্ত ইনপুট স্ট্রিংয়ের দৈর্ঘ্যের সরাসরি ম্যাপ করে for
যাদু নম্বরটি এর মতো দেখাচ্ছে: 6793**164 = 28714733692312345620167113260575862840674216760386883406587492336415023761043044176257567032312859371641211117824224067391750766520256112063756278010050204239810862527958109285342869876264808102743173594017101607983288521836082497514383184553444755034407847810524083812459571382103831904835921560285915349760536969265992879312869538914200854305957428078269094250817029486005437991820466986793657301214564264748923199288698278615871481529585816783654841131577178922192383679718074693535597651237893794976519274268917335387876260270630339777501802739852278932279775510324916969726203688466311848240746465178859847331248655567344801
(একটি চিত্তাকর্ষক 629 দশমিক সংখ্যা সহ একটি সংখ্যা)
এবং আপনি দেখতে পাচ্ছেন যে নম্বরটি [২৮, ২০, ১৩, ১১, ৪, ১,, ১]] থেকে [০, ১, ২, ৩, ৪, ৫,]] থেকে পাইথনের স্ট্রিংগুলি 0- সূচীবদ্ধ):
2871 4 733692 3 1 2 34 5 6 20 1 6711326 0 5758628406742167603868834...
[4]^ [11]^ [13]^ [16]^ ^[17] ^[20] ^[28]
আমার প্রোগ্রাম অন্যান্য এক্সপ্রেশন যা প্রয়োজনীয় সম্পত্তি সঙ্গে সংখ্যাগুলি উত্পাদ, যদিও তারা আরো (28 29 পরিবর্তে) প্রতিনিধিত্ব করতে বাইট নিতে পাওয়া যায়নি: 19439**540
, 34052**726
, 39311**604
, 44873**182
, 67930**164
এবং 78579**469
। (এগুলি লিঙ্কযুক্ত প্রোগ্রামের দ্বারা পাওয়া সমস্ত অভিব্যক্তি; এটির প্রয়োগে বেশ কয়েক ঘন্টা সময় লেগেছিল))
বিকল্প ফাংশন যার জন্য 28 বাইট প্রয়োজন: lambda S:`7954<<850`[len(S)]
বিকল্প ফাংশন যার 29 বাইট প্রয়োজন: lambda S:`9699<<2291`[len(S)]
বিকল্প ফাংশন যার 30 বাইট প্রয়োজন: lambda S:`853<<4390`[len(S)+9]
বিকল্প ফাংশন যার 31 বাইট প্রয়োজন:lambda S:`1052<<3330`[len(S)+8]
এটা কিভাবে কাজ করে? আমি কীভাবে এই সংখ্যাটি তৈরি করেছি? (30 বাইট উত্তর)
30 বাইট উত্তর ছিল lambda S:`3879**41`[len(S)%10]
।
ইনপুট স্ট্রিংয়ের দৈর্ঘ্যের দিকে [28, 20, 13, 11, 4, 16, 17]
লক্ষ্য করে, আমি লক্ষ্য করেছি যে বেস দশে সমস্ত শেষ সংখ্যাগুলি পৃথক, ফলাফলের ফলে [8, 0, 3, 1, 4, 6, 7]
। সুতরাং আমার কেবলমাত্র সেই তালিকা থেকে সপ্তাহের সাত দিনের তালিকায় একটি ম্যাপিং দরকার [0, 1, 2, 3, 4, 5, 6]
।
আমার প্রথম পদ্ধতির ম্যাপিংটি সম্পাদন করতে কেবল একটি স্ট্রিং ব্যবহার করেছে: lambda S:"13*24*560"[len(S)%10]
যদিও স্ট্রিংয়ের এগারটি বাইট প্রয়োজন ( "13*24*560"
)।
সুতরাং আমি গাণিতিক এক্সপ্রেশনগুলির পরীক্ষা করার জন্য একটি পাইথন প্রোগ্রাম ( পাস্তবিন লিঙ্ক ) লিখেছিলাম যার ফলে প্রোগ্রামটি আরও গল্ফ হওয়ার আশায় ম্যাচের অঙ্কগুলির সাথে একটি পূর্ণসংখ্যার ফলাফল হয়। আমি এতদূর যা নিয়ে এসেছি তা হ'ল `3879**41`
(কেবল দশটি বাইট, একমাত্র এবং এর মাধ্যমে আমার প্রোগ্রামটি সবচেয়ে ছোট প্রকাশ করে)।
অবশ্যই, বিভিন্ন চেষ্টা করতে পারে বিভিন্ন সম্ভাব্য এক্সপ্রেশন; আমি কেবল ভাগ্যবান হয়েছি যে ফর্মটিতে a**b
একটি ছিল যার যুক্তিযুক্ত ছোট ফলাফল যা আমার প্রয়োজনের সাথে খাপ খায়।
শুধু কৌতূহলী কারও জন্য 3879**41 = 1372495608710279938309112732193682350992788476725725221643007306215781514348937145528919415861895033279220952836384201346579163035594383625990271079 = 1.372... * 10**147
,।
অন্য একটি বৈধ ফাংশনটি আমি খুঁজে পেয়েছি যখন বিকল্প এক্সপ্রেশনগুলির জন্য অনুসন্ধান করেছি যা দুর্ভাগ্যক্রমে 32 বাইটের প্রয়োজন: lambda S:`7**416`[len(S)%10+290]