ঝুঁকি যুদ্ধ: ডাউন ডাউন


16

ঝুঁকির লড়াইয়ের জন্য ডাইস রোলগুলির দুটি তালিকা দেওয়া, আপনার প্রোগ্রাম বা ফাংশনে প্রতিটি খেলোয়াড়কে কত সেনা হারায় তা আউটপুট করতে হবে।

পটভূমি

আপনার এটি পড়তে হবে না, কারণ এটি নিছক পটভূমি। নিরবিচ্ছিন্নভাবে চালিয়ে যেতে "টাস্ক" সাবহেডিং এ যান।

ঝুঁকির খেলায় , একজন খেলোয়াড় অন্য খেলোয়াড়কে আক্রমণ করতে পারে (আসলে এটি জিততে হবে)। একটি যুদ্ধের ফলাফল পাশার রোল দ্বারা নির্ধারিত হয়। প্রতিটি যুদ্ধ উপ-যুদ্ধের উত্তরাধিকার হিসাবে ঘটে থাকে যেখানে প্রতিটি খেলোয়াড় 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এবং সর্বোচ্চ আক্রমণকারী হয় 44>3সুতরাং def=1 ডিফেন্ডারের 2দ্বিতীয়টি এবং আক্রমণকারীর দ্বিতীয়টি 2Not(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]
  • যেহেতু এটি , তাই প্রতিটি ভাষার মধ্যে সংক্ষিপ্ততম কোডটি জয়ী হয়! গল্ফিং ভাষায় উত্তরগুলি আপনাকে অন্য ভাষায় উত্তর পোস্ট করতে নিরুৎসাহিত করবেন না

এটি স্যান্ডবক্সে দেখেছি, দুর্দান্ত প্রশ্ন
নুহ ক্রিস্টিনো


আক্রমণকারী হেরে যায় যদি এর সর্বোচ্চ রোল ডিফেন্ডারের সর্বোচ্চ রোলের সমান হয়, তাই না?
মিঃ এক্সকডার

1
হ্যাঁ @ মিঃ এক্সকোডার, ডিফেন্ডার সম্পর্ক জিতেছে।
fireflame241

তাই আমি মন্তব্যটি মুছে
ফেলেছি

উত্তর:


8

ন্যানড গেটস, 237

লগিসিম দিয়ে তৈরি

ইনপুটগুলি 3-বিট স্বাক্ষরযুক্ত বাইনারি হয়, বাম দিকে প্রবেশ করে। আউটপুট (2 বিট) ডানদিকে রয়েছে।

এটি স্ক্রিনে ফিট করার জন্য অনেক বড় এবং লোগিসিম জুম করতে পারে না, তাই ছবিটি কালো-সাদা। দুঃখিত :(

সমস্ত পরীক্ষার ক্ষেত্রে কাজ করে।

বৃহত্তর বিভাগগুলি পুনরায় ব্যবহারের সুযোগ দিয়ে কিছু মেমরি সার্কিট ব্যবহার করে এটি করার আরও ভাল উপায় সম্ভবত রয়েছে।


4

জেলি ,  12  11 বাইট

NṢ€>/Ṡḟ-o-S

Defender, Attackerরোলগুলির তালিকা (প্রতিটি তালিকা হিসাবে) একটি মোনাদিক লিঙ্ক , এর মধ্যে -2এবং 2সমেত (ডিফেন্ডার লোকসান - আক্রমণকারীর ক্ষতি) এর মধ্যে একটি পূর্ণসংখ্যা ফেরত দেয়:

result : [def, atk]
    -2 : [  0,   2]
    -1 : [  0,   1]
     0 : [  1,   1]
     1 : [  1,   0]
     2 : [  2,   0]

এটি অনলাইন চেষ্টা করুন! বা একটি পরীক্ষার স্যুট (যা ওপি ফর্ম্যাটের ফলাফলগুলিকে মানচিত্র দেয়) দেখুন।

কিভাবে?

NṢ€>/Ṡḟ-o-S - Link: list [list Def, list Atk]
N           - negate all the rolls
 Ṣ€         - sort €ach of the lists of -1*rolls (max rolls are to the left now)
    /       - reduce by:
   >        -   is greater than?  (when len(Atk) > len(Def) leaves trailing negatives)
     Ṡ      - sign (maps all negatives to -1; zeros and ones of comparison unchanged)
       -    - literal -1
      ḟ     - filter discard (remove the -1s)
         -  - literal -1
        o   - logical or, vectorises (replaces the zeros with minus ones)
          S - sum

2

রেটিনা , 82 বাইট

%O^`.
((.)+).*(¶(?<-2>.)+)(?(2)(?!)).*
$1$3
O$`.
$.%`
\d
$*1D
(1+)D1*\1

1+D
A
O`.

এটি অনলাইন চেষ্টা করুন! ইনপুটটির প্রথম লাইন আক্রমণকারীর পাশা, দ্বিতীয়টি ডিফেন্ডারের ডাইস's রিটার্নস (পৃথক লাইন) AA, AD, DD, Aবা Dযথাযথ হিসাবে।



2

এমএটিএল , 23 বাইট

oH2$S1&Y)Y&t1M>t~b,Y&sD

এটি অনলাইন চেষ্টা করুন!

আক্রমণকারীদের চেয়ে ডিফেন্ডারদের কেন আরও ডাইসের অনুমতি দেওয়া হয়েছে তা নিশ্চিত নয় তবে সম্ভবত আমি ঝুঁকিতে তেমন পারদর্শী নই। মূল প্রোগ্রামটি ঠিক >t~,sD, অন্য সমস্ত বাইট রয়েছে বিভিন্ন ধরণের সাজানোর জন্য কিছুটা সাজানো In

o    % Convert input to numeric array, padding with zeroes 
H2$S % Sort row-wise (specified to prevent 1v1 sorting)
1&Y) % Split attacker/defender
Y&t  % Logical and to filter out excess dice. Duplicate for 'do twice' later.
1M>  % Get throws again, decide who won
t~   % And the inverse to decide who lost
b,   % Bubble filter to the top. Do twice:
  Y& % Apply filter
  sD % Sum of losses. Display.

2

জাভাস্ক্রিপ্ট (স্পাইডারমনকি) , 97 83 78 বাইট

d=>a=>{for(u=v=0;d.sort()>[]&a.sort()>[];)a.pop()>d.pop()?u++:v++
return[u,v]}

এটি অনলাইন চেষ্টা করুন!

-4 বাইট এবং @ ওভস এবং @ ক্রেইগ আইরে
-1 বাইটকে ধন্যবাদ জানানো হয়েছে @ শ্যাগিকে ধন্যবাদ


দুটি আক্রমণকারীর বিরুদ্ধে একজন আক্রমণকারীর পক্ষে কাজ করে না।
নীল

ওহ হুম আমি সে সম্পর্কে ভাবিনি। আমি এটি ঠিক করব
ওয়াফলকোহন

2
এটি কাজ করতে পারে।
ovs

@ ovs এর সমাধান সমস্ত পরীক্ষার কেস কেটে যায়, আপনি কয়েকটি বাইটও বাঁচাতে পারেন (টিও লিঙ্কটি খুব বড় ছিল):d=>a=>{for(u=v=0;d.sort()>[]&a.sort()>[];)a.pop()>d.pop()?u++:v++;return[u,v]}
ক্রেগ আয়রে

প্রথম লাইনের বিরতি অপ্রয়োজনীয় এবং আপনাকে একটি বাইট ব্যয় করতে হবে।
শেগি

2

হুশ , 10 বাইট

M#eI¬¤z>Ö>

এটি অনলাইন চেষ্টা করুন!

রোলগুলির দুটি পৃথক তালিকা হিসাবে ইনপুট করুন, অপারেটিংয়ের মতো আউটপুট।

ব্যাখ্যা

¤z>Ö> প্রতিটি তালিকাটিকে অবতরণ ক্রমে সাজানো এবং তারপরে সংশ্লিষ্ট উপাদানগুলির সাথে তুলনা করে জিপ করুন (এবং দীর্ঘ তালিকাটি কাটা)।

M#eI¬সত্যবাদী মানগুলির ((পরিচয়ের মাধ্যমে ) এবং মিথ্যা মানগুলির (যৌক্তিক অবহেলার মাধ্যমে) eগণনা সহ একটি 2-উপাদান তালিকা তৈরি করে ( )#I¬


1

পার্ল 5 , 66 + 1 (-a) = 67 বাইট

@A=sort split/ /,<>;$b+=@A?pop@A>$_?-1:1:0for reverse sort@F;say$b

এটি অনলাইন চেষ্টা করুন!

ইনপুট:

দুটি লাইন। প্রথম লাইনটি ডিফেন্ডার (প্লেয়ার 1), দ্বিতীয় হ'ল আক্রমণকারী (প্লেয়ার 2)। স্পেস দ্বারা পৃথক পৃথক রোলস।

আউটপুট:

ডিফেন্ডারের শক্তি বনাম আক্রমণকারীতে কার্যকর পরিবর্তন নির্দেশ করে।

Output Attacker Defender
   2      0        2        Defender wins both
   1      0        1        Defender wins the only roll
   0      1        1        Attacker wins first, defender wins second
  -1      1        0        Attacker wins the only roll
  -2      2        0        Attacker wins both rolls

"প্রোগ্রাম বা ফাংশনটি অবশ্যই 5 টি আউটপুট সম্ভাবনার প্রত্যেকটির জন্য একটি অনন্য শনাক্তকারী আউটপুট করে।" আপনার [১,১] এর জন্য দুটি আউটপুট রয়েছে। এটি ঠিক করার জন্য আপনার উত্তরটি সম্পাদনা করুন (কেবল বাছাই বা যোগফল)
ফায়ার ফ্লেম 241

ছয়টি দিয়ে কী হয়েছে? এটা আরও নির্দিষ্ট। :) আমি এটি 6 বাইট ব্যয়ে পরিবর্তন করেছি।
এক্সকালি

0

জেলি , 30 বাইট

0,0‘⁸Ṁ€</¤¦‘⁸ḟ"Ṁ€⁺</¤¦⁸L€Ṃ>1¤¡

এটি অনলাইন চেষ্টা করুন!

ভিউইউইরি অবারিত! >: _ <

আউটপুট মানগুলি পরীক্ষার ক্ষেত্রে যেমন হয়।


বাহ, এটি আমার কাছেও অনেক দীর্ঘ মনে হচ্ছে: পি
মিঃ এক্সকোডার

0

আর , 46 বাইট

function(x,y)s(s(y,T)[1:2]>s(x,T)[1:2])
s=sort

এটি অনলাইন চেষ্টা করুন!

এই সমস্তটি হ'ল তিন প্রকার এবং একটি তুলনা ... প্লাস মাঝখানে প্রথম দুটি উপাদান নিষ্কাশন করা।

ইনপুট ডাইস রোলসের দুটি ভেক্টর।

আউটপুট নীচে এনকোডেড:

╔═══╦═══╗
║atk║def║
╠═══╬═══╣
║ 10TRUE01FALSE20TRUE  TRUE11FALSE TRUE02FALSE FALSE
╚═══╩═══╝

কাজ করে কারণ আর এ এক্সট্রাকশন তার যুক্তিটিকে পুনর্ব্যবহার করে না, তবে NAঅনুরোধ করা দৈর্ঘ্যের সাথে ফলাফলটি প্যাড করে ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.