যুদ্ধের একটি ফলাফলের সন্ধান করুন
আমি যখন প্রাথমিক বিদ্যালয়ে ছিলাম, তখন "রক-পেপার-কাঁচি" -ইশ গেমটি আমরা সমাবেশগুলির মধ্যে খেলতাম, যখন আমাদের শিক্ষকের জন্য অপেক্ষা করতাম, ছুটিতে থাকতাম ইত্যাদি We আমরা এটিকে "যুদ্ধ" বলতাম। কিছু তবে অনুসন্ধানের পর এটি সক্রিয় আউট এই অনেক সহজ বৈচিত্র হয় "শটগান খেলা" (WikiHow অনুযায়ী) । নিয়ম কিছুটা আলাদা হওয়ায় আমি এটিকে "যুদ্ধ" বলব:
2 জন একে অপর থেকে বসে। গেমের লক্ষ্যটি অন্য খেলোয়াড়কে "হত্যা" করা। প্রতিটি পালা, আপনি 3 টি মুভের মধ্যে একটি খেলতে পারেন:
পুনঃলোড : আপনার কাছে একটি বন্দুক রয়েছে যা একটি মাত্র শট ধারণ করে। প্রতিবার ফায়ার করার আগে এটি অবশ্যই পুনরায় লোড করা উচিত। আপনার কাছে ইতিমধ্যে গোলাগুলি থাকলে পুনরায় লোড করা বৈধ, তবে কিছুই করে না। একটি পুনরায় লোড দুটি হাত দিয়ে আপনার মন্দিরগুলিতে আলতো চাপ দিয়ে প্রতীকী হয়েছিল। প্রতিটি প্লেয়ার 0 টি গোলাবারুদ দিয়ে শুরু হয়।
প্রহরী : একমাত্র নিরাপদ পদক্ষেপ। পাহারা দেওয়ার সময় যদি গুলি করা হয় তবে আপনি মারা যাবেন না। আপনার বুকের উপর দিয়ে অস্ত্রগুলি অতিক্রম করে গার্ডিংকে প্রতীকী করা হয়েছিল।
আগুন : আপনার বন্দুক ফায়ার। সফলভাবে গুলি চালানোর জন্য, আপনাকে অবশ্যই শেষ শট থেকে পুনরায় লোড করা উচিত। যদি আপনার প্রতিপক্ষটি পুনরায় লোড হয় তবে আপনি জিতবেন। যদি তারা গুলি চালায়, এবং আপনার উভয়ের কাছে গুলি রয়েছে তবে এটি একটি ড্র। যদি তারা পাহারা দিচ্ছে তবে আপনি গোলাগুলি নষ্ট করেছেন। গোলাবারুদ ছাড়া গুলি চালানো আইনী পদক্ষেপ, যদিও এটি কিছুই করে না এবং আপনাকে পুনরায় লোড করার মতো দুর্বল রাখে। ফায়ারিং অন্য খেলোয়াড়ের দিকে ইঙ্গিত করে প্রতীকী ছিল।
এটি আরপিএসের অনুরূপ খেলেছে, এতে প্রতিটি খেলোয়াড় একই সাথে তাদের পছন্দটি নিক্ষেপ করে (একে অপরের সাথে তাল বজায় রাখার জন্য আমরা দু'বার পা দু'বার ট্যাপ করেছিলাম, তবে এটি চ্যালেঞ্জের পক্ষে গুরুত্বপূর্ণ নয়)।
চ্যালেঞ্জ:
আপনার কাজ যুদ্ধের ফলাফলটি সন্ধান করা find এটি কোনও ফাংশন বা সম্পূর্ণ প্রোগ্রাম হতে পারে।
ইনপুট
প্রতিটি প্লেয়ার প্রতিটি টার্নটি পছন্দ করে এমন বিকল্পটি একটি অক্ষর / স্ট্রিং দ্বারা উপস্থাপিত হবে:
r : পুনরায় লোড করুন
g : প্রহরী
চ : আগুন
ইনপুট হ'ল জোড়গুলির তালিকা, একটি সীমানা / সীমাবদ্ধ না করা স্ট্রিং বা এই লাইনের পাশাপাশি অন্য যে কোনও কিছু anything
পাইথনের একটি উদাহরণ ইনপুট হতে পারে [("r", "g"), ("f", "r")]
, যার অর্থ প্রথম প্লেয়ারটিতে প্রথম প্লেয়ারটি পুনরায় লোড করা হয় এবং দ্বিতীয় খেলোয়াড় রক্ষিত থাকে। দ্বিতীয় টার্নে, প্রথম প্লেয়ার গুলি চালায়, যখন দ্বিতীয় প্লেয়ার পুনরায় লোড হয়। একজন খেলোয়াড় এই গেমটি জিতেন। একই ইনপুট ঐচ্ছিকরূপে হিসাবে প্রতিনিধিত্ব যেতে পারে "r g f r"
, "rgfr"
, "rg fr"
"rg-fr"
...
আপনি নিম্নলিখিত অনুমান করতে পারেন:
ইনপুট আপনার নির্বাচিত ফর্ম্যাটটির সাথে মিলবে এবং এতে কেবল বৈধ অক্ষর থাকবে।
কেউ কেউ 100 টার্নের মধ্যে মারা যাবে।
তবে আপনি ধরে নিতে পারবেন না যে কেউ মারা গেলে বাঁকগুলি শেষ হয়।
আউটপুট
কে জিতল (বা প্রথমে কে জিতল *
) তা নির্দেশ করে এমন একটি মান । আপনি প্রতিটি দৃশ্যের জন্য কী আউটপুট করবেন তা চয়ন করতে পারেন তবে নিম্নলিখিতগুলির জন্য অবশ্যই অ্যাকাউন্টিং করতে হবে:
প্লেয়ার 1 জিতেছে
প্লেয়ার 2 জয়
তারা একে অপরকে হত্যা করে (অঙ্কন করে)
প্রতিটি ফলাফলের একটি জেলা মান থাকতে হবে এবং প্রতিটি দৃশ্যের জন্য সর্বদা একই হতে হবে।
উদাহরণস্বরূপ: 1
খেলোয়াড় 1 জিতলে, 2
খেলোয়াড় 2 জিতলে এবং 0
ড্রয়ের ক্ষেত্রে আপনি আউটপুট পেতে পারেন। খেলোয়াড় 1 জিতলে, খেলোয়াড় 2 জিতলে এবং ড্রয়ের ক্ষেত্রে আপনাকে অবশ্যই সর্বদা আউটপুট দিতে হবে ।1
2
0
এটি ফেরত দেওয়া যেতে পারে, বা স্টাডাউটে মুদ্রণ করা যেতে পারে। স্পেস স্পেস ঠিক আছে।
ঠিক তাই এটি পরিষ্কার, উভয় খেলোয়াড় গুলি চালালে এবং উভয়ের মধ্যে গোলাগুলি থাকলে ড্রয়ের দিকে নিয়ে যায় এমন একমাত্র দৃশ্য।
*
যেহেতু এই চ্যালেঞ্জের মধ্যে, কেউ মারা যাওয়ার পরে পালা অব্যাহত থাকতে পারে, শেষ পর্যন্ত সম্ভবত এটি 1 টির বেশি প্লেয়ার জিততে পারে। আপনাকে ইনপুট অনুযায়ী প্রথমে কে জিততে হবে তা খুঁজে বের করতে হবে।
পরীক্ষার কেস ( 1
পি 1 জিতবে, 2
যখন পি 2 জিতবে এবং 0
একটি ড্রয়ের জন্য) ধরে নেওয়া:
"rg fr" => 1 (P1 shot P2 while they were reloading)
"rg ff" => 1 (They both shot, but only P1 had ammo)
"rr ff" => 0 (Both had ammo and shot each other)
"rr ff rr fg" => 0 (Both had ammo and shot each other. Everything after the first win is ignored)
"rr fg rf" => 2 (P2 shot P1 while they were reloading)
"rf gg rr fg rr fr" => 1
(P2 tried to shoot but didn't have any ammo, then they both guarded, then they both reloaded, then P2 blocked a shot, then they both reloaded again [but P2 still only has 1 ammo!], then P1 shoots P2 while they're reloading.
"rr gf fr rf gg rg ff" => 1
^ Player 1 wins here. The rest to the right has no effect on the output
এটি কোড গল্ফ, তাই বাইটের ক্ষুদ্রতম সংখ্যার জয়!
দ্রষ্টব্য, পরীক্ষার কেসগুলি দেখানোর সাথে সাথে আপনাকে অবশ্যই "বোবা" চালগুলি পরিচালনা করতে হবে। কোনও খেলোয়াড়ের কাছে গোলাবারুদ না থাকলে গুলি করার চেষ্টা করার জন্য এটি পুরোপুরি বৈধ, বা একটানা ২ টি টার্ন পুনরায় লোড করুন (এবং কেবলমাত্র একটিমাত্র গোলাবারুদ জমে)
{"rff","rgf"}
?