কোনও যুদ্ধের বিজয়ী নির্ধারণ করুন


19

কার্ড গেম ওয়ারটি আকর্ষণীয় যে চূড়ান্ত ফলাফল সম্পূর্ণভাবে ডেকের প্রাথমিক ব্যবস্থা দ্বারা নির্ধারিত হয়, যতক্ষণ না খেলাগুলি ক্ষেত্র থেকে কার্ডগুলি বাছাই করা হয় এবং ডেকে নিয়ে যাওয়া হয় সেই আদেশের জন্য নির্দিষ্ট নিয়ম অনুসরণ করা হয়। এই চ্যালেঞ্জে, কেবলমাত্র 2 জন খেলোয়াড় থাকবেন, জিনিসগুলি ব্যাপকভাবে সরল করে তোলেন।

খেলাাটি

  1. প্রতিটি খেলোয়াড়কে 26 টি কার্ডের ডেকে ডিল করা হয়।
  2. প্রতিটি খেলোয়াড় তাদের ডেকে মুখোমুখি শীর্ষ কার্ড রাখে। উচ্চ-র‌্যাঙ্কিং কার্ডযুক্ত খেলোয়াড় ( Ace > King > Queen > Jack > 10 > 9 > 8 > 7 > 6 > 5 > 4 > 3 > 2) গোলটি জিতেছে এবং তাদের কার্ডটি তাদের প্রতিপক্ষের কার্ডের উপরে রাখে, তাদেরকে পিছনে ফেলে দেয় এবং তাদের ডেকের নীচে যুক্ত করে (তাই তাদের জয়ের কার্ডটি ডেকের নীচে থাকে) , এবং অন্য খেলোয়াড়ের হারানো কার্ডটি এর ঠিক উপরে রয়েছে)। খেলোয়াড়দের একজনের কার্ড শেষ না হওয়া পর্যন্ত এটি করা হয়।
    • কার্ডগুলি যদি সমান র‌্যাঙ্কের হয় তবে প্রতিটি খেলোয়াড় তাদের পূর্বের কার্ডের উপরে তাদের ডেক ফেস-আপের শীর্ষ 2 টি কার্ড রাখে (যাতে ডেকের উপরে যে কার্ডটি ছিল সেটি স্ট্যাকের দ্বিতীয় কার্ড এবং কার্ডটি যা দ্বিতীয় থেকে শীর্ষে ছিল শীর্ষে রয়েছে)। তারপরে, র‌্যাঙ্কগুলি (প্রতিটি স্ট্যাকের শীর্ষ কার্ডের) আবার তুলনা করা হয়, এবং বিজয়ী তাদের পুরো স্ট্যাকটি হেরে যাওয়া লোকের পুরো স্ট্যাকের উপরে রাখে, স্ট্যাকটি উল্টে ডাউন করে দেয় এবং তাদের ডেকে নীচে রাখে। যদি আর একটি টাই থাকে, বিজয়ী বাছাই না করা বা একজন খেলোয়াড় কার্ডের বাইরে চলে না যাওয়া পর্যন্ত আরও কার্ড একইভাবে খেলানো হয়।

যদি কোনও পর্যায়ে কোনও খেলোয়াড়ের ডেক থেকে একটি কার্ড আঁকার প্রয়োজন হয় তবে তাদের ডেকটি খালি থাকে, তারা তত্ক্ষণাত্ খেলাটি হেরে যায়।

চ্যালেঞ্জ

খেলোয়াড়দের ডেকে কার্ডের দুটি তালিকা দেওয়া, যেকোন সুবিধাজনক বিন্যাসে, প্লেয়ার 1 জিতলে সত্যবাদী মান এবং প্লেয়ার 2 জিতলে একটি মিথ্যা মান আউটপুট দেয়।

সুবিধার জন্য, একটি 10 ​​টি কার্ড একটি দ্বারা প্রতিনিধিত্ব করা হবে T, এবং ফেস কার্ডগুলি সংক্ষেপিত হবে ( Ace -> A, King -> K, Queen -> Q, Jack -> J), যাতে সমস্ত কার্ড এক অক্ষর দীর্ঘ হয়। বিকল্পভাবে, দশমিক দশমিক পূর্ণসংখ্যার 2-14 ( Jack -> 11, Queen -> 12, King -> 13, Ace -> 14) বা হেক্স সংখ্যা 2-ই ( 10 -> A, Jack -> B, Queen -> C, King -> D, Ace -> E) সহ উপস্থাপিত হতে পারে । যেহেতু স্যুটগুলি গুরুত্ব দেয় না, স্যুট তথ্য দেওয়া হবে না।

  • আপনি ধরে নিতে পারেন যে সমস্ত গেমস এক পর্যায়ে শেষ হয়ে যাবে (যদিও এটি খুব দীর্ঘ সময় নিতে পারে), এবং একজন খেলোয়াড় সর্বদা অপরের আগে কার্ডের বাইরে চলে যাবে।
  • প্রতিটি খেলোয়াড় একসাথে কার্ড এবং একসাথে একটি কার্ড রাখে, তাই কোন খেলোয়াড় প্রথমে কার্ডের বাইরে চলে গেল সে সম্পর্কে কোনও দ্বিধা নেই।

পরীক্ষার মামলা

পরীক্ষার কেসগুলি 23456789ABCDEর‌্যাঙ্কগুলি উপস্থাপন করতে ব্যবহার করে (আরোহী ক্রমে)।

D58B35926B92C7C4C7E8D3DAA2, 8E47C38A2DEA43467EB9566B95 -> False
669D9D846D4B3BA52452C2EDEB, E747CA988CC76723935A3B8EA5 -> False
5744B95ECDC6D325B28A782A72, 68394D9DA96EBBA8533EE7C6C4 -> True
87DB6C7EBC6C8D722389923DC6, E28435DBEBEA543AA47956594A -> False
589EAB9DCD43E9EC264A5726A8, 48DC2577BD68AB9335263B7EC4 -> True
E3698D7C46A739AE5BE2C49286, BB54B7D78954ED526A83C3CDA2 -> True
32298B5E785DC394467D5C9CB2, 5ED6AAD93E873EA628B6A4BC47 -> True
B4AB985B34756C624C92DE5E97, 3EDD5BA2A68397C26CE837AD48 -> False
9A6D9A5457BB6ACBC5E8D7D4A9, 73E658CE2C3E289B837422D463 -> True
96E64D226BC8B7D6C5974BAE32, 58DC7A8C543E35978AEBA34D29 -> True
C2978A35E74D7652BA9762C458, 9A9BB332BE8C8DD44CE3DE66A5 -> False
BEDB44E947693CD284923CEA82, 8CC3B75756255A683A6AB9E7DD -> False
EEDDCCBBAA8877665544332299, EEDDCCBBAA9988776655443322 -> False
EEDDCCBBAA9988776655443322, DDCCBBAA9988776655443E3E22 -> True

রেফারেন্স বাস্তবায়ন

এই রেফারেন্স বাস্তবায়ন পাইথন 3 এ লিখিত হয়েছে এবং পরীক্ষার কেসগুলির মতো একই ফর্ম্যাটে ইনপুট নেয় (কমা ও স্থানের পরিবর্তে একটি নিউলাইন দ্বারা পৃথক করা বাদে)।

#!/usr/bin/env python3

from collections import deque

p1, p2 = [deque(s) for s in (input(),input())]
print(''.join(p1))
print(''.join(p2))

try:
    while p1 and p2:
        p1s = [p1.popleft()]
        p2s = [p2.popleft()]
        while p1s[-1] == p2s[-1]:
            p1s.append(p1.popleft())
            p2s.append(p2.popleft())
            p1s.append(p1.popleft())
            p2s.append(p2.popleft())
        if p1s[-1] > p2s[-1]:
            p1.extend(p2s+p1s)
        else:
            p2.extend(p1s+p2s)
except IndexError:
    pass
finally:
    print(len(p1) > 0)


1
কার্ডের এক ডেকের জন্য 1, 2, 3গেমটির কোনও শেষ নেই কারণ আপনি নিজের প্রতিপক্ষকে জিততে চলেছেন 1। এটি কি বিজোড় সংখ্যক কার্ড রাখার একটি গৌরব?
নীল

@ নীল কি ডেক কার্ডের একটি আছে 1?
Suever

@ স্যুভার দুঃখিত, আমি খুব বেশি শক্ত ভাবিনি, আমি কেবল প্রথম তিনটি পৃথক নম্বর বেছে নিয়েছি যা আমার মাথায় এসেছিল। প্রথমটি সর্বনিম্ন যেখানে কোনও তিনটি কার্ড বেছে নিন।
নীল

@ নীল শুধু আপনাকে একটি কঠিন সময় দিচ্ছে :) পয়েন্ট নেওয়া!
Suever

উত্তর:


3

জাভাস্ক্রিপ্ট (ES6), 134 বাইট

f=([p,...r],[q,...s],t=[],u=[],v)=>!q||p&&(v|p==q?f(r,s,[...t,p],[...u,q],!v):p>q?f([...r,...u,q,...t,p],s):f(r,[...s,...t,p,...u,q]))
<div oninput=o.checked=f(p.value,q.value)>
Player 1's cards: <input id=p><br>
Player 2's cards: <input id=q><br>
<input id=o type="checkbox"> Player 2 loses

অন্যথায় undefined, প্লেয়ার 2 জিতলে ফিরে আসুন true। তুলনীয় পুনরাবৃত্তিকে গ্রহণ করে, সাধারণত পূর্ণসংখ্যার অ্যারে বা হেক্স অক্ষরের স্ট্রিং। উত্তরটি 22% এর বেশি .অক্ষরের সমন্বয়ে গঠিত , যা আমার কাছে মনে হয় এটি অবশ্যই আমার জন্য একটি রেকর্ড।


আমি পরীক্ষার কেসগুলির সাথে এটি চেষ্টা করার পরে সঠিক ফলাফল পাবে বলে মনে হয় না। দেখুন jsfiddle.net/xbq5xzco
চাক মরিস

@ চকমারিস এই সম্পর্কে দুঃখিত, আমি একটি নিয়ম উপেক্ষা করেছি। এখনই ঠিক করা উচিত।
নীল

@ মেগো আবার চেষ্টা করুন, আমি সবেমাত্র এটি আপডেট করেছি।
নীল

সবকিছু এখন চেক আউট বলে মনে হচ্ছে।
মেগো

ঠিক আছে, এখন আমি মুগ্ধ!
চক মরিস

4

পাইথন, 160 (155?) বাইট

f=lambda x,y,z=1:f(*((x,y,z+2),(x[z:]+y[:z]+x[:z],y[z:]),(x[z:],y[z:]+x[:z]+y[:z]))[(x[z-1]>y[z-1])+(x[z-1]<y[z-1])*2])if len(y)>z<len(x)else len(x)>len(y)

এই সমাধানটি তাত্ত্বিকভাবে বৈধ, তবে এটি পরীক্ষার ক্ষেত্রে কিছু ক্ষেত্রে ডিফল্ট অজগরকে সর্বোচ্চ পুনরাবৃত্তির গভীরতা বাড়ানো প্রয়োজন be

দ্বিতীয় সমাধানটি 5 বাইট দীর্ঘ, তবে সমস্ত পরীক্ষার ক্ষেত্রে কাজ করে।

f=lambda x,y,z=1:(f(x,y,z+2)if x[z-1]==y[z-1]else f(x[z:]+y[:z]+x[:z],y[z:])if x[z-1]>y[z-1]else f(x[z:],y[z:]+x[:z]+y[:z]))if len(y)>z<len(x)else len(x)>len(y)

সম্পাদনা: নিরবচ্ছিন্ন সমাধান 1:

def f(x,y,z=1):
    if len(y)<z>len(x):
        return len(x)>len(y)
    else:
        return f(*(
            (x,y,z+2),
            (x[z:],y[z:]+x[:z]+y[:z]),
            (x[z:]+y[:z]+x[:z],y[z:])
        )[(x[z-1]>y[z-1])+(x[z-1]<y[z-1])*2])

যেহেতু আয়রন পাইথন প্রথম সমাধানটি সূক্ষ্মভাবে চালাবে (ডিফল্ট পুনরাবৃত্তির গভীরতা সীমাহীন) তাই আমি বলতে যাচ্ছি যে প্রথম সমাধানটি বৈধ।
মেগো

2

পাইথন, 261 থেকে 265 বাইট

def f(a,b):
 if a==""or b=="":return b==""
 p=a[0];q=b[0];a=a[1:];b=b[1:]
 if p>q:a+=q+p
 if p<q:b+=p+q
 while p[-1]==q[-1]:
  if len(a)<2 or len(b)<2:return len(b)<2
  v=a[1];w=b[1];p+=a[0:2];q+=b[0:2];a=a[2:];b=b[2:]
  if v>w:a+=q+p
  if v<w:b+=p+q
 return f(a,b)

পোস্ট হিসাবে, এটি 265 বাইট এবং এটি পাইথন 2 এবং পাইথন 3 উভয় ক্ষেত্রেই কাজ করে while

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


2

হাস্কেল, 372

আমার প্রথম হাস্কেল প্রোগ্রাম

(এটি আমার প্রথম কার্যক্ষম প্রোগ্রামিংও ...)

w[]_=False
w _[]=True
w a b=if length j==0 then a>b else w (drop(d$head j)a++fst(head j))(drop(d$head j)b++snd(head j))where j=p a b
d(a,b)=quot(maximum[length a,length b])2
f (Just a)=a
p a b=map f$filter(/=Nothing)[t(a!!x,take(x+1)a,b!!x,take(x+1)b)|x<-[0,2..minimum[length a,length b]-1]]
t(a,b,c,d)=if a==c then Nothing else if a>c then Just(d++b,[])else Just([],b++d)

আমি কীভাবে উন্নতি করতে হবে তার টিপস পেতে চাই।

ব্যবহার:

w "D58B35926B92C7C4C7E8D3DAA2" "8E47C38A2DEA43467EB9566B95"
w "669D9D846D4B3BA52452C2EDEB" "E747CA988CC76723935A3B8EA5"
w "5744B95ECDC6D325B28A782A72" "68394D9DA96EBBA8533EE7C6C4"
w "87DB6C7EBC6C8D722389923DC6" "E28435DBEBEA543AA47956594A"
w "589EAB9DCD43E9EC264A5726A8" "48DC2577BD68AB9335263B7EC4"
w "E3698D7C46A739AE5BE2C49286" "BB54B7D78954ED526A83C3CDA2"
w "32298B5E785DC394467D5C9CB2" "5ED6AAD93E873EA628B6A4BC47"
w "B4AB985B34756C624C92DE5E97" "3EDD5BA2A68397C26CE837AD48"
w "9A6D9A5457BB6ACBC5E8D7D4A9" "73E658CE2C3E289B837422D463"
w "96E64D226BC8B7D6C5974BAE32" "58DC7A8C543E35978AEBA34D29"
w "C2978A35E74D7652BA9762C458" "9A9BB332BE8C8DD44CE3DE66A5"
w "BEDB44E947693CD284923CEA82" "8CC3B75756255A683A6AB9E7DD"
w "EEDDCCBBAA8877665544332299" "EEDDCCBBAA9988776655443322"
w "EEDDCCBBAA9988776655443322" "DDCCBBAA9988776655443E3E22"

হাস্কেল দ্রুত ... :)

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