Kart oyunu Savaşı , kartların oyun alanından alındığı ve destelere taşındığı sıra için belirli kurallara uyulduğu sürece, nihai sonucun tamamen destenin ilk düzenlemesi ile belirlenmesi ilginçtir. Bu mücadelede, sadece 2 oyuncu olacak ve işleri büyük ölçüde basitleştirecek.
Oyun
- Her oyuncuya 26 kartlık bir deste dağıtılır.
- Her oyuncu en üstteki kartı üst üste açık olarak yerleştirir. Daha yüksek rütbeli kartı (
Ace > King > Queen > Jack > 10 > 9 > 8 > 7 > 6 > 5 > 4 > 3 > 2
) olan oyuncu raundu kazanır ve kartını rakibinin kartının üstüne yerleştirir, ters çevirir ve destelerinin dibine ekler (böylece kazanan kartları destenin dibinde olur ve diğer oyuncunun kaybetme kartı hemen üstündedir). Bu, oyunculardan biri kart bitene kadar yapılır.- Kartlar eşit derecedeyse, her oyuncu destesinin ilk 2 kartını yüzü yukarı gelecek şekilde önceki kartlarının üstüne yerleştirir (böylece destenin üstündeki kart destedeki ikinci kart olur ve üstten ikinci olan kart üstte). Daha sonra, sıralar (her bir yığının üst kartının) tekrar karşılaştırılır ve kazanan tüm destelerini kaybedenlerin tüm yığının üstüne yerleştirir, yığını baş aşağı çevirir ve destelerinin altına yerleştirir. Başka bir beraberlik varsa, kazanan seçilene veya bir oyuncu kart bitene kadar aynı şekilde daha fazla kart oynanır.
Herhangi bir noktada oyunculardan birinin destesinden bir kart çekmesi gerekiyorsa, ancak desteleri boşsa, derhal oyunu kaybederler.
Meydan okuma
Oyuncuların destelerinde, herhangi bir uygun formatta iki kart listesi verildiğinde, Oyuncu 1 kazanırsa gerçek bir değer ve Oyuncu 2 kazanırsa bir falsey değeri verir.
Kolaylık sağlamak için, 10 kart a ile temsil edilecek T
ve yüz kartları kısaltılacaktır ( Ace -> A, King -> K, Queen -> Q, Jack -> J
), böylece tüm kartlar bir karakter uzunluğunda olacaktır. Alternatif olarak, sıralar ondalık tam sayı 2-14 ( Jack -> 11, Queen -> 12, King -> 13, Ace -> 14
) veya onaltılık basamak 2-E ( 10 -> A, Jack -> B, Queen -> C, King -> D, Ace -> E
) ile temsil edilebilir. Takım elbise önemli olmadığı için takım elbise bilgileri verilmeyecektir.
- Tüm oyunların bir noktada sona ereceğini (çok uzun zaman alabilmesine rağmen) ve bir oyuncunun her zaman diğerinden önce kartlarının biteceğini varsayabilirsiniz.
- Her oyuncu aynı anda ve her seferinde bir kart yerleştirir, bu yüzden hangi oyuncunun ilk önce kart tükettiği konusunda hiçbir belirsizlik yoktur.
Test Durumları
Test senaryoları 23456789ABCDE
kademeleri temsil etmek için kullanılır (artan sırada).
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
Referans uygulaması
Bu başvuru uygulaması Python 3'te yazılmıştır ve girdiyi test senaryolarıyla aynı biçimde alır (virgül ve boşluk yerine satırsonu ile ayrılmış olanlar hariç).
#!/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, 2, 3
için, rakibinizi kazanmaya devam ettiğiniz için oyunun sonu yoktur 1
. Bu tuhaf kartlara sahip olmak tuhaf mı?
1
?