সিরিজ সম্পর্কে
প্রথমে, আপনি অন্য কোনও কোড গল্ফ চ্যালেঞ্জের মতো এটি ব্যবহার করতে পারেন এবং সিরিজটি মোটেও চিন্তা না করেই এর উত্তর দিতে পারেন। তবে, সমস্ত চ্যালেঞ্জ জুড়ে একটি লিডারবোর্ড রয়েছে। প্রথম পোস্টে সিরিজ সম্পর্কে আরও কিছু তথ্যের সাথে আপনি লিডারবোর্ডটি সন্ধান করতে পারেন ।
যদিও এই সিরিজের জন্য আমার কাছে অনেকগুলি ধারণাগুলি রয়েছে, ভবিষ্যতের চ্যালেঞ্জগুলি এখনও প্রস্তর হিসাবে স্থাপন করা হয়নি। যদি আপনার কোন পরামর্শ থাকে, তাহলে আমাকে দয়া করে প্রাসঙ্গিক স্যান্ডবক্স পোস্টে ।
হোল 3: পূর্ণাঙ্গ পার্টিশন
কিছুটা অসুবিধা বাড়ানোর সময়।
ধনাত্মক পূর্ণসংখ্যার একটি পার্টিশনকে ধনাত্মক পূর্ণসংখ্যার n
একটি মাল্টিসেট হিসাবে সংজ্ঞায়িত করা হয় যা সমষ্টি n
। উদাহরণস্বরূপ যদি n = 5
, নিম্নলিখিত পার্টিশন উপস্থিত রয়েছে:
{1,1,1,1,1}
{2,1,1,1}
{2,2,1}
{3,1,1}
{3,2}
{4,1}
{5}
নোট করুন যে এগুলি মাল্টিস্টেট, সুতরাং তাদের কোনও আদেশ নেই {3,1,1}
, {1,3,1}
এবং {1,1,3}
সমস্তই অভিন্ন বলে বিবেচিত হয়।
আপনার টাস্কটি n
একটি এলোমেলো পার্টিশন তৈরি করার জন্য দেওয়া হয়েছে n
। এখানে বিস্তারিত নিয়ম রয়েছে:
উত্পাদিত পার্টিশনের বিতরণ অবশ্যই অভিন্ন হতে হবে । এটি, উপরের উদাহরণে, প্রতিটি পার্টিশনটি সম্ভাব্যতা 1/7 দিয়ে ফিরে আসা উচিত।
অবশ্যই, পিআরএনজিগুলির প্রযুক্তিগত সীমাবদ্ধতার কারণে নিখুঁত অভিন্নতা অসম্ভব হবে। আপনার জমা দেওয়ার অভিন্নতা মূল্যায়নের লক্ষ্যে, নিম্নলিখিত ক্রিয়াকলাপগুলি পুরোপুরি অভিন্ন বিতরণ ফলন হিসাবে বিবেচিত হবে:
- পিআরএনজি (যে কোনও পরিসীমা ছাড়াই) থেকে একটি সংখ্যা পাওয়া, যা (প্রায়) ইউনিফর্ম হিসাবে নথিভুক্ত।
- মডুলো বা গুণন (বা অন্য কোনও ক্রিয়াকলাপ যা মানকে সমানভাবে বিতরণ করে) এর মাধ্যমে একটি ছোট সংখ্যায় বৃহত্তর সংখ্যার উপরে অভিন্ন বিতরণ ম্যাপিং। বৃহত্তর সেটটিতে ছোট সেট হিসাবে কমপক্ষে 1024 গুণ যতগুলি সম্ভব মান থাকতে হবে।
পার্টিশনগুলি মাল্টিস্টেট হওয়ায় আপনি এগুলি যে কোনও ক্রমে ফিরিয়ে দিতে পারেন এবং এই ক্রমটি সামঞ্জস্যপূর্ণ হতে হবে না। যাইহোক, এলোমেলো বিতরণের উদ্দেশ্যে, আদেশটিকে উপেক্ষা করা হয়। অর্থাৎ উপরের উদাহরণে,
{3,1,1}
,{1,3,1}
এবং{1,1,3}
একসঙ্গে ফিরে হচ্ছে 1/7 একটি সম্ভাব্যতা থাকতে হবে।- আপনার অ্যালগরিদমের অবশ্যই একটি নির্ধারক রানটাইম থাকতে হবে। বিশেষত, আপনি এলোমেলো মাল্টিসেটগুলি তৈরি করতে এবং সেগুলিকে সম্মতি না দিলে তা প্রত্যাখ্যান করতে পারবেন না
n
। - আপনার অ্যালগরিদমের সময়ের জটিলতা অবশ্যই বহুপদী হতে হবে
n
। বিশেষত, আপনি সহজেই সমস্ত পার্টিশন তৈরি করতে পারবেন না এবং এলোমেলো একটি নির্বাচন করতে পারবেন না (যেহেতু পার্টিশনের সংখ্যা তত দ্রুত বৃদ্ধি পায়n
)। আপনি ধরে নিতে পারেন যে আপনি যে পিআরএনজি ব্যবহার করছেন তা প্রতি মূল্য ও (1) এ সমানভাবে বিতরণকৃত মানগুলি ফিরিয়ে দিতে পারে। - আপনার অবশ্যই কোনও বিল্ট-ইন ফাংশন ব্যবহার করবেন না যা এই কাজটি সমাধান করে।
আপনি একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন লিখে STDIN বা নিকটতম বিকল্প, কমান্ড-লাইন আর্গুমেন্ট বা ফাংশন আর্গুমেন্টের মাধ্যমে ইনপুট নিতে পারেন এবং রিটার্ন ভ্যালুতে বা STDOUT (অথবা নিকটতম বিকল্প) এ মুদ্রণ করে আউটপুট উত্পাদন করতে পারেন।
আপনি ধরে নিতে পারেন n ≤ 65
(যেমন পার্টিশনের সংখ্যা ২ 21 এরও কম )। আউটপুট কোনও সুবিধাজনক, দ্ব্যর্থহীন তালিকা বা স্ট্রিং বিন্যাসে থাকতে পারে।
যদি আপনি কোনও ফাংশন জমা দেন তবে দয়া করে একটি সামান্য পরীক্ষা প্রোগ্রাম সরবরাহ করার বিষয়টি বিবেচনা করুন যা ফাংশনটিকে বেশ কয়েকবার কল করে এবং ফলাফলগুলি মুদ্রণ করে। প্যারামিটারগুলি যদি কোডটিতে টুইট করতে হয় তবে তা ঠিক আছে। এটি ঠিক তাই লোকেরা পরীক্ষা করতে পারেন যে সমাধানটি কমপক্ষে প্রায় অভিন্ন।
এটি কোড গল্ফ, তাই সংক্ষিপ্ততম জমা (বাইটে) জিতেছে। এবং অবশ্যই, ব্যবহারকারী প্রতি সংক্ষিপ্ততম জমাটিও সিরিজের সামগ্রিক লিডারবোর্ডে প্রবেশ করবে।
লিডারবোর্ড
সিরিজের প্রথম পোস্টটি লিডারবোর্ড উত্পন্ন করে।
আপনার উত্তরগুলি প্রদর্শিত হবে তা নিশ্চিত করার জন্য, দয়া করে নীচের মার্কডাউন টেমপ্লেটটি ব্যবহার করে প্রতিটি উত্তর শিরোনাম দিয়ে শুরু করুন:
# Language Name, N bytes
N
আপনার জমা দেওয়ার আকারটি কোথায় ? আপনি যদি নিজের স্কোরটি উন্নত করেন তবে আপনি পুরানো স্কোরগুলি শিরোনামে রেখে দিতে পারেন । এই ক্ষেত্রে:
# Ruby, <s>104</s> <s>101</s> 96 bytes
(ভাষাটি বর্তমানে দেখানো হয়নি, তবে স্নিপেটের প্রয়োজন এবং এটি বিশ্লেষণ করতে পারে এবং ভবিষ্যতে আমি একটি উপ-ভাষা লিডারবোর্ড যুক্ত করতে পারি))