Euchre'de En İyi Kart Oynayın


13

Giriş:

Öncelikle
, her bir oyuncu tarafından oynanan ve

[JD][TH][9S]

Temsil

Jack of Diamonds, 10 of Hearts, and Nine of Spades.

Euchre'deki takım arkadaşınızın karşısında her zaman oturduğunuz için, ikinci unsur takım arkadaşınızın oyununu temsil eder. İşte,TH ,.

İkincisi
, gibi biçimlendirilmiş koz takımını temsil eden Tek Bir Char, String, vb.

S, D, C, H

temsil eden

Spades, Diamonds, Clubs, Hearts

Üçüncüsü, elinizi temsil eden dört kart dizisi

[KD][JC][QH][AS]

temsil eden

King of Diamonds, Jack of Clubs, Queen of Hearts, Ace of Spades

Amaç:

Üç giriş göz önüne alındığında, oynanan kartlara aşağıdaki kriterleri karşılayacak şekilde eklemek için mümkün olan en iyi kartı çıkarın:

  1. En değerli kartın çıktısını almıyorsa elinden çıkarır
  2. Eğer yapabilirse elini tutuyor, ancak kaçınılmaz olmadıkça takım arkadaşınızı zorlamıyor
  3. Elini tutabilirse, en az değerli kartı kullanarak yapar. (Ası ve eli kazanabilecek bir kraliçeniz varsa, kraliçeyi oynarsınız).
  4. Herhangi bir oyun, alttaki kuralların gerektirdiği şekilde uymalıdır.

Çıktı biçimi gibi [JD]

Biçimlendirme

A - Ace
K - King
Q - Queen
J - Jack
T - Ten
9 - Nine

H - Hearts
D - Diamonds
S - Spades
C - Clubs

TH, 9D, JD, QH, AD, 9C, TC

Örnekler

In: [QD][KD][9C], "C",[AH][JH][QH][9H]

Dışarı: 9H

Sebep: Kulüpler koz olduğu için 9C eli kazanıyor, elimizi alamıyoruz, bu yüzden en düşük kartımızı atmalıyız, burada 9H

In: [QD][KD][AD], "H",[AH][JH][QH][9H]

Dışarı: 9H

Sebep: Kalpler koz olduğu için, Elmas Ası şu anda eli kazanıyor, eli koyabiliriz, bu yüzden en düşük kartımızı kullanmalıyız, burada 9H

In: [QD][KD][TD], "D",[AD][JH][QH][9D]

Dışarı: 9D

Sebep: elmas koz vardır ve şu anda eli kazanan olduğundan ortağımız şu anda eli kazanıyor çünkü biz oynamak istiyorum ki, biz, 9D oynaması gerektiğini 9DüzerindeAD

In: [QH][KH][JH], "D",[AD][JD][QH][9D]

Dışarı: QH

Sebep: Elmaslar koz olduğu için rakiplerimiz sol Bower ile kazanıyor JHDoğru bower'ımız var ama onu koyamıyoruz çünkü QH liderliğindeydi ve uymak zorundayız,QH

In: [QH][KH][JH], "D",[AD][JD][QC][9D]

Dışarı: JD

Sebep: Elmaslar koz olduğu için rakiplerimiz sol Bower ile kazanıyor JHDoğru bower'a sahibiz ve elimizde olmadığı için DiamondsonuJD

Euchre Kart Güçlü Yönleri

Hearts koz ise:

JH
JD
AH
KH
QH
TH
9H

Eğer farklı kartların gücüne alışık değilseniz Euchre Kuralları bakın Euchre'de

Bu Code-Golf olduğundan en kısa kod kazanır!

İyi şanslar ve iyi eğlenceler!


2
Bence oyun burada bir linkle değil tarif edilmelidir.
Jonathan Allan

@JonathanAllan Düşündüm, ama bağlantıda daha iyi açıklanmış. Muhtemelen oyuna aşina olmayanlar için en iyi zorluk değil. Anında öğrenmek istemedikleri sürece.
jacksonecac

Sonuç olarak örnek 9Dkalpleri koz olarak ayarlanmıştır (bu sonucu etkilediğini düşünmeme rağmen).
Jonathan Allan

@JonathanAllan güzel yakaladın, teşekkürler.
jacksonecac

1
@jacksonecac sorun için teşekkürler, onunla eğlendim.
Dave

Yanıtlar:


2

Perl - 557 532511 490482384 363

($p,$t,$h)=@ARGV;%L=(H=>D,D=>H,C=>S,S=>C);$B=%L{$t};$_="\]$p$h\[";s/(.$t)/0$1/g;s/J$B/01$B/;s/0J/00/;s/J/R/g;s/9/Z/g;($T,@C)=split/\]\[/,$_;$s=$C[0];$s=~s/.+(.)/$1/;$s=~s/$t/0/;$X=(sort@C[0..2])[0];@M=@C[3..6];@F=(grep{/$s/}@M);@M=@F if@F;$w=(sort@M)[@M-1];push@M,$X;foreach$g(sort@M){$g ne$X?$b=$g:last}$_=$C[1]eq$X||!$b?$w:$b;s/.(..)/$1/;s/Z/9/;s/0|1|R/J/;print

Nasıl çalışır

Çevrimiçi deneyin!

Önce args okur ve bir karma arama ile sol-bauer'in takımını (koz ile aynı renkteki jack) bulur:

($p,$t,$h)=@ARGV;
%L=(H=>D,D=>H,C=>S,S=>C);
$B=%L{$t};

Daha sonra tüm kartları tek bir dizede birleştirir ve bazı değişiklikler yapar ve kartları doğal olarak doğru şekilde sıraya göre sıralar:

$_="\]$p$h\[";
s/(.$t)/0$1/g; # trump cards start with '0'
s/J$B/01$B/;   # left-bauer's 'J' changes to '01', making it trump
s/0J/00/;      # right-bauer's 'J' changes to '0'
s/J/R/g;       # all other jacks have 'J' changed to 'R'
s/9/Z/g;       # all 9s change to Z
($T,@C)=split/\]\[/,$_;

Bu bloğun sonunda, kart dizesi köşeli parantezler üzerinde bölünür ve bu da tüm kartlardan oluşan bir dizi oluşturur:

  • dizin 0 = rakibin lider kartı

  • dizin 1 = takım arkadaşının kartı

  • dizin 2 = diğer rakibin kartı

  • 3-6 endeksleri eli temsil eder

Aday takım ilk karttan ayrıştırılır, ancak takım kozu yönetilirse kozu temsil etmek için '0' olarak değişir:

$s=$C[0];
$s=~s/.+(.)/$1/;
$s=~s/$t/0/;

Oyundaki en iyi kart, ilk üç kartı sıralayarak ve ilk kartı alarak bulunur:

$X=(sort@C[0..2])[0];

Oynanabilir kartlar bulunur. Eldeki herhangi bir kart kurşun takımıyla eşleşirse, yalnızca bu kartlar kalır. Aksi takdirde tüm kartların oynanabilir olduğu düşünülür:

@M=@C[3..6];
@F=(grep{/$s/}@M);
@M=@F if@F;

'Kullanılabilir' kart, sıralı oynanabilir kart dizisindeki son kartı döndürerek bulunur:

$w=(sort@M)[@M-1];

Hile kazanabilecek en düşük 'kazanan' kart, oynanabilir kartlar dizisine oyun içinde en yüksek kartı ekleyerek, diziyi sıralayarak ve oyun içinde en yüksek kart bulunana kadar tekrarlayarak bulunur. 'Kazanan' kart, bir önceki iterasyonun kartıdır:

push@M,$X;
foreach$g(sort@M){$g ne$X?$b=$g:last}

Daha sonra doğru oyun değerlendirilir. Aşağıdakilerden herhangi biri doğruysa 'boş' kart seçilir:

  1. Masadaki en iyi kart, tüm kartların sıralanmamış dizisinde 1 dizinine sahiptir, yani takım arkadaşımıza aittir.
  2. En düşük 'kazanan' kart arayışı boştu, yani rakibimizin en iyi kartı eldeki tüm kartlardan daha yüksek

Aksi takdirde 'kazanan' kart iade edilir:

$_=$C[1]eq$X||!$b?$w:$b;
s/.(..)/$1/; # remove the '0' that indicated trump
s/Z/9/;      # get those 9s back
s/0|1|R/J/;  # fix the jacks
print
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.