আসুন কার্ড গেমের একটি দিকের জন্য একটি সিমুলেশন তৈরি করি, যা আমি ব্যক্তিগতভাবে ডাচ নাম 'ওরলগ' ('ওয়ার'-এ অনুবাদ করে) দ্বারা জানি।
'ওরলগ' কীভাবে কাজ করে?
দুটি ডেকে কার্ড (প্রতিটি দু'জন জোকার সহ) খেলোয়াড়দের খেলার পরিমাণের মধ্যে সমানভাবে বিভক্ত। প্রতিটি প্লেয়ার তাদের নিজস্ব স্টক পরিবর্তন করে, এটিকে সামনে সামনে রেখে দেয় এবং সমস্ত খেলোয়াড় একই সাথে স্টকের প্রথম কার্ডটি খোলায়।
এই 'যুদ্ধের বিজয়ী' এই নিয়মগুলি অনুসরণ করে কার্ডের মান দ্বারা নির্ধারিত হয়: জোকার / এস এস কিংকে পরাজিত করে; রাজা রানিকে পরাজিত করলেন; কুইন জ্যাককে পরাস্ত করে; জ্যাক 10 পরাজিত; 10 পরাজয় 9; .... এছাড়াও, 2 এবং 3 উভয়ই এস / জোকারকে পরাজিত করে। শেষ নিয়মটি এমন একটি চক্রের দিকে পরিচালিত করতে পারে যেখানে 2 বা 3 টি এস বা জোকারকে আঘাত করে, এস বা জোকার অন্য কোনও কার্ডকে পরাজিত করে, যার ফলস্বরূপ 2 বা 3 কে মারবে এই ক্ষেত্রে, 2 বা 3 যুদ্ধে জয়লাভ করে।
(এই কার্ডের খেলায় স্যুটটি অপ্রাসঙ্গিক)
দুই বা ততোধিক খেলোয়াড়ের সমান সর্বোচ্চ কার্ড থাকলে তাদের 'যুদ্ধ' থাকে। এর অর্থ তারা একটি কার্ডকে উল্টে ফেলেছে এবং তারপরে প্রত্যেকে তাদের স্টক থেকে একটি নতুন কার্ড খোলে, আবার সর্বাধিক কার্ড কার আছে তা দেখে। কোনও একক খেলোয়াড় পুরো যুদ্ধে বিজয়ী না হওয়া অবধি এটি চলতে থাকে।
(এই যুদ্ধের সমস্ত কার্ড যুদ্ধে জয়ী খেলোয়াড়ের ফেলে দেওয়া স্তূপে যায় Then এটি অব্যাহত থাকে যতক্ষণ না কোনও প্লেয়ার তার সমস্ত কার্ডের বাইরে চলে যায় এবং তারপরে সর্বাধিক পরিমাণ কার্ডের প্লেয়ার জয়ী হয়))
তিন খেলোয়াড়ের সাথে 'যুদ্ধ' উদাহরণ:
- 4, 8, জ্যাক:
জ্যাক জিতেছে। - 7, এস, কুইন:
এস জিতেছে। - 10, 10, কিং:
কিং জিতেছে। - 3, জোকার, 2:
3 জিতেছে। - এস, জোকার, 2:
2 জিতেছে। - 3, কুইন, এস:
3 টি জয়। - কুইন, কুইন, ৯:
কুইন এবং কুইনের একটি 'যুদ্ধ' হচ্ছে, সুতরাং এটি দুটি নতুন কার্ডের সাথে চালিয়ে যায়: 4, 8;
8 জয়। - 4, 4, 4: সবার
একটি 'যুদ্ধ' হচ্ছে, সুতরাং এটি তিনটি নতুন কার্ডের সাথে চালিয়ে যায়: 8, এস, 2;
2 জয়। - জ্যাক, ৫, জ্যাক:
জ্যাক ও জ্যাকের একটি 'যুদ্ধ' হচ্ছে, সুতরাং এটি দুটি নতুন কার্ডের সাথে চালিয়ে যায়: 5, 5;
5 এবং 5 এছাড়াও সমান, সুতরাং 'যুদ্ধ' আবার দুটি নতুন কার্ডের সাথে চালিয়ে যায়: 10, কিং;
কিং জিতল। - জোকার, জোকার, এস: সকলেরই
'যুদ্ধ' হচ্ছে, সুতরাং এটি তিনটি নতুন কার্ডের সাথে চালিয়ে যায়: 9, 7, 9;
9 এবং 9 টিও সমান, তাই দুটি নতুন কার্ডের সাথে 'যুদ্ধ' অব্যাহত রয়েছে: জ্যাক, 3;
জ্যাক জিতল।
সুতরাং, কোড চ্যালেঞ্জ সম্মুখের:
ইনপুট:
একটি অ্যারে সহ স্টিডিন, বা একটি অ্যারেকে একটি স্ট্রিং সিমেন্টিং (আপনার কল - এমনকি আপনার ভাষা অ্যারে সমর্থন করেও)। এই অ্যারেটিতে কালানুক্রমিক ক্রমে যুদ্ধের কার্ড রয়েছে (এটির আরও পরিষ্কার বোঝার জন্য পরীক্ষার কেসগুলি দেখুন)।
আউটপুট:
যুদ্ধে জয়ী প্লেয়ারের সূচি বন্ধ করুন।
আপনি চয়ন করতে পারেন কিনা একটি শূন্য-ইন্ডেক্স (অর্থাত চান 0
, 1
অথবা 2
(বড়) অথবা এক সূচীবদ্ধ আউটপুট 1
, 2
, 3
)।
চ্যালেঞ্জ বিধি:
- ইনপুটটি এমন একক অ্যারে / স্ট্রিং হবে যা অ্যারের প্রতিনিধিত্ব করবে। সুতরাং এটি সহজ করার জন্য আপনার কাছে অ্যারের অ্যারে থাকতে পারে না। যুদ্ধে অংশ নিচ্ছে না এমন কার্ডগুলির জন্য আপনার কাছে সরোগেট আইটেমও থাকতে পারে না।
- আমরা চিঠি স্বরলিপির পরিবর্তে ফেস কার্ডগুলির জন্য নম্বর স্বাক্ষর ব্যবহার করি। সুতরাং এস / জোকার =
1
; জ্যাক =11
; রানী =12
; এবং কিং =13
। - এই চ্যালেঞ্জের মধ্যে আমরা ধরে নিতে পারি আমরা সর্বদা 3 জন খেলোয়াড়ের সাথে খেলছি ।
- প্রথম তিনটি 'যুদ্ধ' শুরু করার ইঙ্গিত দেয়। যখন দুই বা ততোধিক খেলোয়াড়ের একটি 'যুদ্ধ' থাকে তবে অ্যারেতে অবিরত কার্ডগুলি তাদের যুদ্ধের ইঙ্গিত দেয় (এটির আরও পরিষ্কার বোঝার জন্য পরীক্ষার কেসগুলি দেখুন)।
সাধারণ নিয়ম:
- এটি ট্যাগ -কোড গল্ফ , তাই বাইট জেতে সংক্ষিপ্ত উত্তর।
এর অর্থ এই নয় যে কোড-গল্ফিংয়ের ভাষা প্রবেশ করা উচিত নয়। 'প্রতিটি' প্রোগ্রামিং ভাষার জন্য যতটা সম্ভব সংখ্যার কোড-গল্ফ উত্তর নিয়ে আসতে চেষ্টা করুন। - আপনি আউটপুট জন্য কোন সূচক (শূন্য- বা এক সূচকযুক্ত) ব্যবহার করেছেন দয়া করে উল্লেখ করুন।
পরীক্ষার কেস:
Test case 1: [4, 8, 11] -> 2 (or 3)
Test case 2: [7, 1, 12] -> 1 (or 2)
Test case 3: [10, 10, 13] -> 2 (or 3)
Test case 4: [3, 1, 2] -> 0 (or 1)
Test case 5: [1, 1, 2] -> 2 (or 3)
Test case 6: [3, 12, 1] -> 0 (or 1)
Test case 7: [12, 12, 9, 4, 8] -> 1 (or 2)
Test case 8: [4, 4, 4, 8, 1, 2] -> 2 (or 3)
Test case 9: [11, 5, 11, 5, 5, 10, 13] -> 2 (or 3)
Test case 10: [1, 1, 1, 9, 7, 9, 11, 3] -> 0 (or 1)
Test case 11: [13, 13, 4, 1, 3] -> 1 (or 2)
Test case 12: [13, 4, 13, 2, 3] -> 2 (or 3)