ঝুঁকির লড়াইয়ের জন্য ডাইস রোলগুলির দুটি তালিকা দেওয়া, আপনার প্রোগ্রাম বা ফাংশনে প্রতিটি খেলোয়াড়কে কত সেনা হারায় তা আউটপুট করতে হবে।
পটভূমি
আপনার এটি পড়তে হবে না, কারণ এটি নিছক পটভূমি। নিরবিচ্ছিন্নভাবে চালিয়ে যেতে "টাস্ক" সাবহেডিং এ যান।
ঝুঁকির খেলায় , একজন খেলোয়াড় অন্য খেলোয়াড়কে আক্রমণ করতে পারে (আসলে এটি জিততে হবে)। একটি যুদ্ধের ফলাফল পাশার রোল দ্বারা নির্ধারিত হয়। প্রতিটি যুদ্ধ উপ-যুদ্ধের উত্তরাধিকার হিসাবে ঘটে থাকে যেখানে প্রতিটি খেলোয়াড় 2
তাদের সেনাবাহিনীর টুকরো হারিয়ে ফেলতে পারে ।
উপ-যুদ্ধে, ডিফেন্ডার এবং আক্রমণকারী প্রত্যেকে বিভিন্ন ডাইস রোল করে যার সংখ্যা এই চ্যালেঞ্জের সাথে সম্পর্কিত নয় এমন পরিস্থিতিতে নির্ভর করে vary আক্রমণকারীর সর্বোচ্চ মূল্যবান মরার সাথে ডিফেন্ডারের সর্বোচ্চ মূল্যবান মৃত্যুর সাথে তুলনা করা হয়। আক্রমণকারীর মৃত্যু যদি ডিফেন্ডারের মৃত্যুর চেয়ে বেশি হয় তবে ডিফেন্ডার এক টুকরো হারায়। অন্যথায়, আক্রমণকারী এক টুকরা হারায়।
তারপরে, যদি উভয় খেলোয়াড়ের কমপক্ষে দুটি পাশা থাকে, তবে দুই খেলোয়াড়ের মধ্যে দ্বিতীয়-সর্বোচ্চ মূল্যবান ডাইসের তুলনা করা হয়। আবার আক্রমণকারীর মর যদি ডিফেন্ডারের মৃত্যুর চেয়ে বেশি হয় তবে ডিফেন্ডার এক টুকরো হারায়। অন্যথায়, আক্রমণকারী এক টুকরা হারায়।
(ডিফেন্ডার সম্পর্ক জিতেছে defend যদি ডিফেন্ডার এবং আক্রমণকারী উভয়ই একটি রোল করে 4
তবে আক্রমণকারী একটি টুকরা হারায়))
উইকিপিডিয়া নিবন্ধের এই উপ-যুদ্ধে, আক্রমণকারীর পাশা লাল এবং ডিফেন্ডারের ডাইস সাদা। আক্রমণকারীর ডাইসের 4
সর্বোচ্চ এবং ডিফেন্ডারের সর্বাধিক 3
। যেহেতু আক্রমণকারী বেশি ছিল, তাই ডিফেন্ডার একটি টুকরা হারায়। দ্বিতীয় সর্বোচ্চ 3
হ'ল আক্রমণকারী এবং 2
ডিফেন্ডারের পক্ষে। আক্রমণকারীটি আবার উচ্চতর হওয়ার কারণে, ডিফেন্ডার আরও একটি টুকরো হারায়। সুতরাং এই উপ-যুদ্ধে, আক্রমণকারী কোনও টুকরা হারায় না এবং ডিফেন্ডার 2
টুকরা হারাবে।
নোট করুন যে তৃতীয়-সর্বোচ্চ টুকরা তুলনা করা হয় না। এটি কারণ কারণ ডিফেন্ডারের একক উপ-যুদ্ধে দু'বারের বেশি ডাইস নেই, তাই তুলনা করার মতো কোনও তৃতীয়-সর্বোচ্চ টুকরা নেই।
কার্য
আক্রমণকারী এবং যে কোনও সুবিধাজনক আকারে ঝুঁকির উপ-যুদ্ধের ডিফেন্ডার উভয়েরই অরসোর্টড ডাইস রোলস (1 থেকে 6 সমেতের পরিসরে পূর্ণসংখ্যার) প্রদত্ত, প্রতিটি খেলোয়াড়ের হারানো সেনাবাহিনীর সংখ্যা আউটপুট। পাঁচটি সম্ভাবনা চিহ্নিত করার জন্য আউটপুটটি কোনও সুবিধাজনক আকারে থাকতে পারে, যতক্ষণ না এর আলাদা আউটপুট থাকে। আপনার প্রশ্নে অবশ্যই এই পৃথক ফলাফলগুলি কী তা বোঝাতে হবে।
আউটপুট নিম্নলিখিত হিসাবে নির্ধারিত হয়: def=0
এবং দিয়ে শুরু করুন atk=0
। আক্রমণকারীর ডাইস রোলগুলির তালিকার সর্বাধিক মান যদি ডিফেন্ডারের ডাইস রোলগুলির তালিকার সর্বাধিক মানের চেয়ে বেশি হয়, তবে বাড়ানো def
। অন্যথায়, বৃদ্ধি atk
।
যদি ডাইস রোলগুলির উভয় তালিকার দৈর্ঘ্য কমপক্ষে থাকে 2
তবে: যদি আক্রমণকারীর ডাইস রোলগুলির তালিকার দ্বিতীয়-বৃহত্তম মান তালিকার দ্বিতীয়-বৃহত্তম মানের চেয়ে বড় হয়, তবে বর্ধন def
এবং অন্যথায় বৃদ্ধি atk
।
শেষ অবধি, প্রোগ্রাম বা ফাংশন অবশ্যই নিম্নলিখিত 5 আউটপুট সম্ভাবনার প্রতিটি জন্য একটি অনন্য সনাক্তকারী আউটপুট করতে হবে:
╔═══╦═══╗
║atk║def║
╠═══╬═══╣
║ 1 ║ 0 ║
║ 0 ║ 1 ║
║ 2 ║ 0 ║
║ 1 ║ 1 ║
║ 0 ║ 2 ║
╚═══╩═══╝
উদাহরণ
ডিফেন্ডার: [3, 2]
আক্রমণকারী: [2, 4, 1]
সর্বোচ্চ ডিফেন্ডার হয় 3
এবং সর্বোচ্চ আক্রমণকারী হয় 4
। 4>3
সুতরাং def=1
ডিফেন্ডারের 2
দ্বিতীয়টি এবং আক্রমণকারীর দ্বিতীয়টি 2
। Not(2>2)
তাই atk=1
। আউটপুট তখন হতে পারে [1,1]
।
পরীক্ষার কেস
Defender
Attacker
Output (as [def,atk])
-----
[1]
[1]
[0,1]
-----
[6,6]
[1,1,1]
[0,2]
-----
[1,2]
[5,2,3]
[2,0]
-----
[5]
[3,4]
[0,1]
-----
[4]
[4,5]
[1,0]
-----
[1,3]
[1,2,3]
[1,1]
-----
[4]
[4,5,6]
[1,0]
-----
[4,5]
[6,2]
[1,1]
-----
[5]
[6,1,3]
[1,0]
-----
[5,5]
[4,4,1]
[0,2]
-----
[2,5]
[2,2]
[0,2]
-----
[6,6]
[4,4,3]
[0,2]
-----
[2,1]
[4,3]
[2,0]
-----
[4]
[1,5]
[1,0]
-----
[1]
[5,2]
[1,0]
-----
[6,2]
[4]
[0,1]
-----
[4,2]
[2,5,5]
[2,0]
-----
[2]
[6,6,2]
[1,0]
-----
[6]
[2,6]
[0,1]
-----
[3,1]
[1]
[0,1]
-----
[6,2]
[3,5,2]
[1,1]
-----
[4,2]
[1,1]
[0,2]
-----
[4,3]
[5,4,1]
[2,0]
-----
[5,6]
[1,2]
[0,2]
-----
[3,2]
[4,4]
[2,0]
-----
[2]
[6,3,4]
[1,0]
-----
[1,4]
[6,2,4]
[2,0]
-----
[4,2]
[2,5,4]
[2,0]
-----
[5]
[6,2,1]
[1,0]
-----
[3]
[2,5,4]
[1,0]
-----
[5,4]
[2]
[0,1]
-----
[6,3]
[2,6,5]
[1,1]
-----
[3,1]
[4]
[1,0]
-----
[4]
[6,6,5]
[1,0]
-----
[6,3]
[4,2]
[0,2]
-----
[1,6]
[5,4]
[1,1]
-----
[3,6]
[4,4]
[1,1]
-----
[5,4]
[5,1,1]
[0,2]
-----
[6,3]
[5,4]
[1,1]
-----
[2,6]
[1,2]
[0,2]
-----
[4,2]
[3,5,5]
[2,0]
-----
[1]
[1,2,1]
[1,0]
-----
[4,5]
[1,6]
[1,1]
-----
[1]
[3,5,1]
[1,0]
-----
[6,2]
[6,2]
[0,2]
নমুনা বাস্তবায়ন
পাইথন 2 বা 3
def risk(atk_rolls,def_rolls):
# set the rolls in descending order, e.g. [5,3,2]
atk_rolls = sorted(atk_rolls,reverse = True)
def_rolls = sorted(def_rolls,reverse = True)
# minimum length.
minlen = min(len(atk_rolls),len(def_rolls))
atk_lost = 0
def_lost = 0
# compare the highest-valued rolls
if atk_rolls[0]>def_rolls[0]:
def_lost += 1
else:
atk_lost += 1
if minlen == 2:
# compare the second-highest-valued rolls
if atk_rolls[1] > def_rolls[1]:
def_lost += 1
else:
atk_lost += 1
return [def_lost, atk_lost]
বিশেষ উল্লেখ
- ইনপুটটি এমন কোনও রূপ হিসাবে নেওয়া যেতে পারে যা স্পষ্টভাবে কেবল ডিফেন্ডারের রোলস এবং আক্রমণকারীর রোলগুলি এনকোড করে।
- আউটপুটটি এমন কোনও ফর্মের মধ্যে থাকতে পারে যা উপরে তালিকাভুক্ত পাঁচটি সম্ভাবনার প্রত্যেকটির জন্য একটি অনন্য আউটপুট সরবরাহ করে।
- ডিফেন্ডারের রোলস সেটে একটি পূর্ণসংখ্যা
1
বা2
পূর্ণসংখ্যার তালিকা[1,2,3,4,5,6]
। আক্রমণকারী এর রোলস একটি তালিকা আছে1
করার3
সেটে পূর্ণসংখ্যার[1,2,3,4,5,6]
। - যেহেতু এটি কোড-গল্ফ , তাই প্রতিটি ভাষার মধ্যে সংক্ষিপ্ততম কোডটি জয়ী হয়! গল্ফিং ভাষায় উত্তরগুলি আপনাকে অন্য ভাষায় উত্তর পোস্ট করতে নিরুৎসাহিত করবেন না ।