একটি সাধারণ এন-ডিজিটের সংমিশ্রণ লকটিতে এন ঘোরানো ডিস্ক থাকে। প্রতিটি ডিস্কে 0-9 অঙ্কটি অঙ্কিত থাকে এবং এগুলি খোলার জন্য আপনাকে এগুলি সঠিক পাসওয়ার্ডে পরিণত করতে হবে। একথাও ঠিক যে, আপনি যদি পাসওয়ার্ড জানি না, আপনি সবচেয়ে 10 চেষ্টা করতে হবে এন সেটি আনলক করার আগে বার। এটি আকর্ষণীয় নয়।
সুতরাং আসুন মিশ্রণ লকের একটি বৈকল্পিক বিবেচনা করুন, এটি দূরত্ব-প্রকাশক লকটির নাম দিন।
একটি দূরত্ব-প্রকাশকারী লক খোলার প্রতিটি ব্যর্থ প্রয়াসে, এটি আনলক করার ন্যূনতম সংখ্যার চলাচলের প্রতিক্রিয়া জানায়।
এক আন্দোলন উদাহরণস্বরূপ তা থেকে 1 আন্দোলন প্রয়োজন, এক অবস্থান দ্বারা একটি ঘূর্ণন হিসাবে সংজ্ঞায়িত করা হয় 890
থেকে 899
, এবং থেকে 9 আন্দোলন 137
করতে 952
।
চ্যালেঞ্জ
অজানা এর পাসওয়ার্ড সহ একটি দূরত্ব-প্রকাশকারী লক দেওয়া হয়েছে , প্রোগ্রামটি দীর্ঘতর হতে না দিয়ে, সর্বনিম্ন প্রচেষ্টার (গতিবিধি নয়) দিয়ে লকটি খোলার চেষ্টা করুন ।
বিধি ও বৃত্তি
- আপনার একটি সম্পূর্ণ প্রোগ্রাম লিখতে হবে যা স্টিডিন এবং আউটপুট থেকে স্টডআউটে প্রবেশ করে। প্রোগ্রামটি নিম্নলিখিত হিসাবে ইনপুট / আউটপুট করা উচিত:
Start
Input an integer N (number of digits) from stdin
Do
Output a line containing decimal string of length N (your attempt) to stdout
Input an integer K (response of the lock) from stdin
While K not equal 0
End
আপনার প্রোগ্রামটি এন = 200 পর্যন্ত পরিচালনা করতে হবে এবং যে কোনও ইনপুটটিতে 5 সেকেন্ডেরও কম চালানো উচিত।
আউটপুটে শীর্ষস্থানীয় শূন্যগুলি বাদ দেওয়া উচিত নয়।
প্রতি দৈর্ঘ্যের জন্য এগুলি 5 টি টেডডেটা, সুতরাং মোট টেস্টডেটার সংখ্যা 1000 টি The
চূড়ান্ত স্কোরটি হবে (সমস্ত টেস্টডেটায় অনুমানের মোট সংখ্যা) * এলএন (বাইটে কোডের দৈর্ঘ্য + 50)) সর্বনিম্ন স্কোর জয়। (এলএন প্রাকৃতিক লগ হয়)
আমি আপনার জন্য প্রোগ্রাম স্কোর করব। আপনি যদি জানতে চান যে আমি কীভাবে আপনার প্রোগ্রামটি স্কোর করব, বা আপনি নিজেরাই এটি স্কোর করতে চান তবে এই পোস্টে পূর্ববর্তী সম্পাদনাগুলি একবার দেখুন ।
এই চ্যালেঞ্জটি 2017/12/07 14:00 ইউটিসি-তে শেষ হবে। আমি তখন আমার সমাধান পোস্ট করব।
চলমান উদাহরণ
লাইনগুলি >
ইনপুট প্রতিনিধিত্ব করে এবং অন্যরা প্রোগ্রাম আউটপুট উপস্থাপন করে।
আপনার মনে একটি পাসওয়ার্ড থাকতে পারে এবং এটি পরীক্ষা করার জন্য আপনার প্রোগ্রামের সাথে ইন্টারঅ্যাক্ট করতে পারেন।
> 3 # 3-digit lock. The hidden password is 746
000 # 1st guess (by program)
> 11 # response to the 1st guess
555 # 2nd guess
> 4 # ...
755
> 2
735
> 2
744
> 2
746 # finally the correct answer! The program attempts 6 times.
> 0 # this is not necessary
নমুনা প্রোগ্রাম
সম্পাদনা: সম্ভবত উপরের ইনপুট / আউটপুট ফর্ম্যাটটি পরিষ্কার ছিল না। পাইথনে এখানে একটি নমুনা প্রোগ্রাম।
পাইথন, 369 বাইট, প্রচেষ্টার সংখ্যা = 1005973, স্কোর = 6073935
import sys
N = int(input()) # get the lock size
ans = ''
for i in range(N): # for each digit
lst = []
for j in range(10): # try all numbers
print('0' * i + str(j) + '0' * (N - i - 1)) # make a guess
result = int(input()) # receive the response
lst.append(result)
ans += str(lst.index(min(lst)))
print(ans) # output the final answer
ধন্যবাদ ইউনুস চ্যালেঞ্জ সরল জন্য।
162751*ln(388+50)=989887
।