Cheat adalah permainan kartu di mana Anda mencoba menyingkirkan tangan Anda. Giliran terlihat kira-kira seperti ini:
- Tentukan peringkat kartu apa yang harus Anda mainkan pada giliran itu. Dalam sebagian besar varian ini adalah satu peringkat lebih tinggi dari giliran sebelumnya.
- Mainkan 1-4 kartu, menghadap ke bawah. Ini tidak harus cocok dengan peringkat yang valid. Jika tidak, itu dianggap cheat . Pada titik ini setiap pemain dapat menantang Anda.
- Jika tidak ada yang menantang Anda, mainkan terus ke pemain berikutnya.
- Jika seseorang menantang Anda dan Anda tidak curang, mereka harus mengambil semua kartu yang dimainkan.
- Jika seseorang menantang Anda dan Anda curang, Anda harus mengambil semua kartu yang dimainkan.
Strategi ini sebagian besar merupakan campuran dari bluffing dan penghitungan kartu. Aku buruk dalam matematika, jadi aku akan menipu Cheat dan membawa bot.
Memasukkan
Masukan akan berupa, dalam urutan atau format apa pun yang Anda inginkan:
- Tangan pemain. Jika saya tahu mereka harus memiliki kartu (misalnya, saya pernah melihat mereka mengambilnya), mereka akan terdaftar dalam urutan menaik. Setiap yang tidak diketahui akan terdaftar setelahnya sebagai
?
. Sebagai contoh, jika mereka memiliki enam kartu dan saya tahu bahwa dua kartu adalah 1 dan satu adalah kartu 4, representasi tangan yang benar adalah114???
. akan selalu terdaftar setelah kartu dikenal.141???
dan11???4
keduanya input yang tidak valid dan kode Anda tidak perlu menanganinya. - Kartu yang saya tahu pasti bukan bagian dari tangan mereka (saya memilikinya, saya melihat orang lain mengambilnya, dll). Daftar akan berada dalam urutan pangkat naik. Daftarnya mungkin kosong.
- Kartu yang diklaim pemain untuk dimainkan. Jika mereka mengaku bermain 3 7's, input yang mungkin di sini adalah
777
. Kartu akan selalu memiliki peringkat yang sama.
Jumlah kartu yang dimainkan akan selalu 1-4 dan peringkat akan selalu 0-9. Sebuah peringkat tidak akan pernah muncul lebih dari empat kali di tangan mereka + bukan di tangan mereka.
Ini adalah contoh input yang valid:
33577??
01555688
55
Ini adalah contoh input yang tidak valid:
35377?? # Out of order
7779 # Five 7's in total
23 # Two separate ranks played
Keluaran
Nilai truthy jika kita harus pasti menantang. Nilai falsey jika kita mungkin tidak ingin menantang.
Kami selalu menantang jika kami tahu mereka curang. Kami tahu mereka curang jika bermain kartu yang tidak mungkin mereka miliki:
12
3 # They don't have any 3's or ?'s
-------------
12?
33 # Fewer ?'s than played cards
-------------
123?
333
33 # Since we have three 3's they can't have two
Kali lain yang kami tantang adalah jika mereka memainkan kartu terakhir mereka. Bahkan jika permainan itu sah itu akan mengakhiri permainan jadi kami mungkin juga menantangnya.
1
1 # They'd win, so challenge anyway
Lebih Banyak Kasus Uji
Truthy (harus menantang)
11445678?
22
-------------
????????
4
4444
-------------
12345678
9
Falsey (seharusnya tidak menantang)
1?
222
2
-------------
12?
22
22
-------------
?????
1111
Mencetak gol
Kode terpendek menang.
sumber
Jawaban:
Pyth, 22 byte
Cobalah online.
sumber
JavaScript (ES6), 93 byte
Menerima tiga string kartu (karakter
0
-9
atau?
); kembali1
untuk tantangan,0
jika tidak. Penjelasan:sumber
C # 6, 134 byte
(Catatan: Sejalan dengan contoh OP, jawaban ini kembali salah bahkan jika lawan memiliki lebih dari satu kartu dan memainkan semua tangannya. Dalam hal strategi, ini harus kembali benar.)
Penjelasan:
a
: Tangan pemainb
: Kartu yang pasti saya tahu ...c
: Kartu diklaim dapat dimainkanTidak Disatukan:
sumber
a.Length==1
menjadia.Length==c.Length
. Anda tampaknya menyiratkan sesuatu seperti itu di catatan Anda, tetapi saya tidak tahu contoh OP yang Anda maksud yang memungkinkan lebih banyak kartu dimainkan daripada jumlah kartu yang dimiliki lawan.Java 8,
169135 bytePenjelasan:
Coba di sini.
CATATAN:
(s+0).split("c",-1).length-1
memberikan jumlah kali karakterc
muncul dalam Strings
. Jadi komentar dalam penjelasan di atas benar, tetapi kodenya mungkin tampak berbeda karenanya. Ini(a+0).split(x+"|\\?",-1).length-1<C
golf ke(a+0).split(x+"|\\?",-1).length<=C
dan4-(b+0).split(""+x,-1).length-1<C
golf ke5-(b+0).split(""+x,-1).length<C
.sumber