নেস্টেড তালিকার "বাছাই" প্রক্রিয়াটি বিবেচনা করুন। বাছাই নিম্নলিখিত হিসাবে সংজ্ঞায়িত করা হয়:
- যদি আর্গুমেন্টের তালিকা থাকে তবে তালিকা থেকে এলোমেলোভাবে (অভিন্নভাবে) একটি উপাদান নিয়ে যান এবং সেগুলি থেকে বেছে নিন।
- যুক্তি যদি কোনও তালিকা না হয় তবে কেবল এটি ফিরিয়ে দিন।
পাইথনে উদাহরণ প্রয়োগ:
import random
def pick(obj):
if isinstance(obj, list):
return pick(random.choice(obj))
else:
return obj
সরলতার জন্য, আমরা ধরে নিই যে নেস্টেড তালিকাগুলিতে কেবল পূর্ণসংখ্যা বা আরও নেস্টেড তালিকা থাকে।
যে কোনও তালিকা দেওয়া থাকলে, এটি সমতল সংস্করণ তৈরি করা সম্ভব যা পৃথক পৃথক pick
, অর্থাৎ এটি থেকে বাছাই করা একই সম্ভাবনা সহ একই ফলাফল দেয়।
উদাহরণস্বরূপ, তালিকাটি "পিক-ফ্ল্যাটটিং"
[1, 2, [3, 4, 5]]
তালিকা উত্পাদন করে
[1, 1, 1, 2, 2, 2, 3, 4, 5]
। কেবল চাটুকারিতা অবৈধ হওয়ার কারণ হ'ল সাব-তালিকার উপাদানগুলির নির্বাচনের সম্ভাবনা কম থাকে, উদাহরণস্বরূপ তালিকায় [1, [2, 3]]
1 টিতে 2/4 = 1/2 সম্ভাবনা রয়েছে এবং 3 এবং 4 উভয়েরই 1/4 রয়েছে সুযোগ প্রতিটি।
আরও মনে রাখবেন যে সিঙ্গলটন তালিকা থেকে বাছাই করা তার উপাদান থেকে বাছাইয়ের সমতুল্য এবং খালি তালিকা থেকে বাছাইয়ের কোনও অর্থ নেই।
চ্যালেঞ্জ
ননজেগটিভ পূর্ণসংখ্যার নেস্টেড তালিকা দেওয়া, ননেনিজেটিভ পূর্ণসংখ্যার সমতল তালিকা ফিরিয়ে আনুন যা থেকে বাছাই একই সম্ভাবনার সাথে একই ফলাফল দেয়।
এটি কোড-গল্ফ , সুতরাং সংক্ষিপ্ততম বৈধ উত্তর (বাইটগুলিতে পরিমাপ করা) জয়ী।
বিশেষ উল্লেখ
- ইনপুট
[2, 3, 4]
,[2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4]
এবং[2, [3, 3], [[4]]]
সমতুল্য (অর্থাত তাদের সমমানের ফলাফল দেওয়া উচিত)। - আউটপুট
[2, 2, 2, 2, 3, 3, 3, 3]
এবং[2, 3]
সমতুল্য (যেমন উভয়ই আউটপুট হতে পারে)। - আপনি অন্তর্ভুক্ত করতে পারেন যে অন্তর্ভুক্তিকালীন 1-100 পরিসরের সংখ্যাগুলি তালিকাতে উপস্থিত থাকবে।
- আপনি ধরে নিতে পারেন শীর্ষ স্তরের ইনপুটটি একটি তালিকা হবে, অর্থাত
2
কোনও বৈধ ইনপুট নয়। - আপনি উদাহরণস্বরূপ, নেস্টেড তালিকার কোনো যুক্তিসংগত উপস্থাপনা ব্যবহার করতে পারেন:
[1, [2, 3]]
,1 {2 3}
,"[ 1 [ 2 3 ] ]"
, ইত্যাদি - তালিকার পরিবর্তে, আপনি একটি মাল্টিসেট বা ম্যাপিং আউটপুট করতে পারেন, বা যেহেতু কেবলমাত্র 1-100 পরিসরের সংখ্যাগুলি অনুমোদিত, তাই পরিমাণের প্রতিনিধিত্ব করে পূর্ণসংখ্যার দৈর্ঘ্য -100 তালিকা।
পরীক্ষার মামলা
নোট করুন যে তালিকাবদ্ধ আউটপুটগুলি কেবল একটি বৈধ সম্ভাবনা; কোন বৈধ ইনপুট বা আউটপুট গঠন করে তার জন্য নির্দিষ্টকরণগুলি দেখুন।
format:
input -> output
[3] -> [3]
[1, [1, 1]] -> [1]
[1, [2, 3]] -> [1, 1, 2, 3]
[2, 3, [4, [5, 5, 6], 6, 7]] -> [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7]
[[1, 1, 2], [2, 3, 3]] -> [1, 2, 3]
[[1, 1, 2], [2, 3, 3, 3]] -> [1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3]