Arkadaşınız sizi son dakikada yüksek bahisli bir poker oyununa davet etti ve bir bilgisayar bilimcisi olarak, oyunda avantaj elde etmek için yeteneklerinizi kullanmaya karar verdiniz. Göreviniz verilecektir 2 cards
(eliniz) ve 0, 3, 4 or 5 cards
(dağıtılmış kartlar), mümkün olan en iyi elin ne olacağına karar vermelisiniz. Eğer 7 kartın hepsi argüman olarak verilirse, cevap oldukça açıktır. Daha az verilirse, sorun daha karmaşık hale gelir. Ancak, bu size aradığınız kenarı vermek için yeterli değildir, rakiplerinizin de neler yapabileceğini anlamak için kalan kartlardan mümkün olan en iyi eli de hesaplamanız gerekir.
Hold'em Tazeleme
Hold'em'i bilmiyorsanız, oyundaki her oyuncu 'el' olarak 2 kartla başlar. 3 'tur' boyunca, tüm oyuncuların paylaşacağı ek kartlar ortaya çıkar. İlk turda 3 kart çıkar. İkincisi, 1 tane daha ve üçüncü kez bir final kartı ortaya çıkar. Önce verilen iki kart elinizi temsil ederken, ikincisi art arda dönüşlerle verilen 0, 3, 4 veya 5 kartı temsil eder.
Olası Numaralar:
[2,3,4,5,6,7,8,9,T(10),J,Q,K,A]
Olası Suits:
[S,C,H,D]
Full Deck:
[2S,3S,4S,5S,6S,7S,8S,9S,TS,JS,QS,KS,AS, # Spades.
2C,3C,4C,5C,6C,7C,8C,9C,TC,JC,QC,KC,AC, # Clubs.
2H,3H,4H,5H,6H,7H,8H,9H,TH,JH,QH,KH,AH, # Hearts.
2D,3D,4D,5D,6D,7D,8D,9D,TD,JD,QD,KD,AD] # Diamonds.
El Sıralaması:
1:Royal Flush (A-K-Q-J-10, all from the same suit).
2:Straight Flush (Sequential cards, all from the same suit).
3:Four-of-a-Kind (Self explanatory).
4:Full House (3-of-a-kind and a 2-of-a-kind).
5:Flush (All cards are from the same suit).
6:Straight (Sequential Cards, any suits).
7:3-of-a-Kind (Self explanatory).
8:2-Pair (Double 2-of-a-Kind).
9:Pair (2-of-a-Kind).
10:High Card (You have absolutely nothing except a single card).
Bir veya iki örnek alalım ve bunlardan geçelim:
Basit örnek:
[AS, AC],[AH,AD,9S,9C,9H]
-> 3
(Ayni 3
Dörtlü ), ( Ayni Dörtlü)
Bu kurulumda sahip olabileceğiniz en iyi el, dört eldir. Rakiplerinizin sahip olabileceği en iyi el aynı zamanda bir 4'lüdür, çünkü 2 kartlı elinde bir KQJ10 olamaz.
[5C,2C],[6C,4C,JH,JD]
-> 2
(Straight Flush), 3
(Ayni 4)
Düz bir floş riski altındasınız, ancak elinizde 2 / 5C bulunduğundan, başka hiç kimse her iki orta kartı tutmanızdan kaynaklanmıyor. Onlar için en iyi umut 2 cep Jacks ve flop üzerinde bir Jack elde etmektir.
[JS,JC],[]
-> 1
(Floş Royal), 1
(Floş Royal)
Onlara karşı kullanabileceğiniz hiçbir bilgi verilmemiştir, şu anda söyleyebileceğiniz tek şey, elmas / kalplerde sadece bir floş royal olabilir, ancak mümkün olduğunca kraliyet floşunu elde etmeniz mümkündür. Aslında, flopun henüz gerçekleşmediği tüm girdiler 1-1 yanıtla sonuçlanmalıdır.
[2C,4S],[3C,7S,9D,AH,JD]
-> 10
(Yüksek Kart), 7
(Türünün Üçü)
Bu kesinlikle vidalandığınıza bir örnektir ve nehir göz önüne alındığında düz veya floş olasılığı yoktur. Buradaki en iyi el, bir tür 3'lü sonuç veren cep aslarıdır.
G / Ç Gereksinimleri
- Girdi, elinizdeki ve halkın bilgisi olan şey arasında ayrılmalıdır; uygulamadan bağımsız olarak bu şekilde daha kolay olacaktır.
- Kartlar size bağlı olarak tuples veya dize olabilir.
- El ve Oyun Alanı diziler veya sınırlandırılmış dizeler olabilir.
- Çıktı, sağladığım eller listesinden iki dizin olmalıdır (EG [2,1]).
- Bir işlevin bir parçası olarak iade edilebilir, konsola yazdırılabilir veya uygun bir şekilde çıkarılabilir.
- Biri en iyi eliniz için, diğeri mümkün olan en iyi için iki farklı değer olmalıdır.
- 10 sizin için anlamlı olan bir
T
veya olarak temsil edilebilir10
. - Standart boşluklara izin verilmez.
Kazanma Kriterleri
- Bu kod golf , posta tarihinin bir kravat kırıcı ile en düşük bayt sayımı.
A
ve a ile bir güverte görmedim 1
. Diğer her şey iyi görünüyor.
A
ve1
içinde olmamalı mı ? Ayrıca, yüz değerleri gibi sayısal değerlere gerek duymak için gerçekten zorlayıcı bir neden olduğunu düşünmüyorum11
.