Penjelasan
Acak yang sempurna adalah tempat setumpuk kartu terbelah menjadi dua dan kartu-kartu dari masing-masing tumpukan diselingi secara bergantian. Kartu bawah asli dan kartu teratas asli harus dipertahankan setelah pengocokan sempurna.
Setelah 8 mengocok sempurna, setumpuk kartu 52 standar kembali ke pesanan semula.
Tantangan
Tulis sebuah program yang menampilkan keadaan setumpuk kartu saat melewati 8 pengocokan sempurna berturut-turut. Anda dapat menggunakan representasi deck yang dapat dibaca manusia, asalkan itu menampilkan nomor dan jenis kartu di deck secara berurutan. Itu harus menampilkan representasi dari semua kartu, untuk semua sembilan negara.
Ini kode golf , jadi solusi terpendek menang.
Contoh Output
Berikut adalah contoh output yang dihasilkan oleh contoh implementasi ini dalam Javascript
AS,AC,AD,AH,2S,2C,2D,2H,3S,3C,3D,3H,4S,4C,4D,4H,5S,5C,5D,5H,6S,6C,6D,6H,7S,7C,7D,7H,8S,8C,8D,8H,9S,9C,9D,9H,10S,10C,10D,10H,JS,JC,JD,JH,QS,QC,QD,QH,KS,KC,KD,KH
AS,7D,AC,7H,AD,8S,AH,8C,2S,8D,2C,8H,2D,9S,2H,9C,3S,9D,3C,9H,3D,10S,3H,10C,4S,10D,4C,10H,4D,JS,4H,JC,5S,JD,5C,JH,5D,QS,5H,QC,6S,QD,6C,QH,6D,KS,6H,KC,7S,KD,7C,KH
AS,4C,7D,10H,AC,4D,7H,JS,AD,4H,8S,JC,AH,5S,8C,JD,2S,5C,8D,JH,2C,5D,8H,QS,2D,5H,9S,QC,2H,6S,9C,QD,3S,6C,9D,QH,3C,6D,9H,KS,3D,6H,10S,KC,3H,7S,10C,KD,4S,7C,10D,KH
AS,9S,4C,QC,7D,2H,10H,6S,AC,9C,4D,QD,7H,3S,JS,6C,AD,9D,4H,QH,8S,3C,JC,6D,AH,9H,5S,KS,8C,3D,JD,6H,2S,10S,5C,KC,8D,3H,JH,7S,2C,10C,5D,KD,8H,4S,QS,7C,2D,10D,5H,KH
AS,5S,9S,KS,4C,8C,QC,3D,7D,JD,2H,6H,10H,2S,6S,10S,AC,5C,9C,KC,4D,8D,QD,3H,7H,JH,3S,7S,JS,2C,6C,10C,AD,5D,9D,KD,4H,8H,QH,4S,8S,QS,3C,7C,JC,2D,6D,10D,AH,5H,9H,KH
AS,3S,5S,7S,9S,JS,KS,2C,4C,6C,8C,10C,QC,AD,3D,5D,7D,9D,JD,KD,2H,4H,6H,8H,10H,QH,2S,4S,6S,8S,10S,QS,AC,3C,5C,7C,9C,JC,KC,2D,4D,6D,8D,10D,QD,AH,3H,5H,7H,9H,JH,KH
AS,2S,3S,4S,5S,6S,7S,8S,9S,10S,JS,QS,KS,AC,2C,3C,4C,5C,6C,7C,8C,9C,10C,JC,QC,KC,AD,2D,3D,4D,5D,6D,7D,8D,9D,10D,JD,QD,KD,AH,2H,3H,4H,5H,6H,7H,8H,9H,10H,JH,QH,KH
AS,AD,2S,2D,3S,3D,4S,4D,5S,5D,6S,6D,7S,7D,8S,8D,9S,9D,10S,10D,JS,JD,QS,QD,KS,KD,AC,AH,2C,2H,3C,3H,4C,4H,5C,5H,6C,6H,7C,7H,8C,8H,9C,9H,10C,10H,JC,JH,QC,QH,KC,KH
AS,AC,AD,AH,2S,2C,2D,2H,3S,3C,3D,3H,4S,4C,4D,4H,5S,5C,5D,5H,6S,6C,6D,6H,7S,7C,7D,7H,8S,8C,8D,8H,9S,9C,9D,9H,10S,10C,10D,10H,JS,JC,JD,JH,QS,QC,QD,QH,KS,KC,KD,KH
sumber
Jawaban:
J,
66655452504743 karakterKeluaran:
Saya dipaksa lebih jauh dan lebih jauh ke dalam tutorial dan manual referensi J untuk tetap menjadi yang terdepan di sini. : -S
sumber
AS
dan terakhir selalu adaKH
.Haskell, 103
Keluaran:
Tidak tahu apakah ada masalah UTF-8 di sekitar sini, tidak seharusnya ... ini adalah dump hex program
dan dari jalur output pertama
( kartu bermain unicode )
sumber
Python 2, 79 karakter
Outputnya agak jelek tapi saya yakin itu harus diperhitungkan.
sumber
product
!Python2, 104
Ini mirip dengan solusi Ev_Genus. Saya menempatkan setelan di depan pangkat karena itu memungkinkan saya untuk menyelamatkan karakter.
Keluaran
sumber
[r,'10'][r>"Q"]
bagus. Saya tidak berpikir Anda perlu backticks di sekitar10
. Harga akan baik-baik saja.exec'print d;d=d[::2]+d[1::2];'*9
.sum
.APL (42)
Output top-down bukan kiri-kanan (tapi masih dapat dibaca manusia jadi saya kira itu tidak melanggar aturan).
Keluaran:
sumber
K,
555351Mencukur 2 karakter dengan mengubah dari representasi simbol ke string
keluaran
sumber
(2;26)
ke2 26
Ruby 1.9 (
959387)Keluaran:
sumber
a=(0..51).map{|i|:A23456789TJQK[i/4]+:SCDH[i%4]}
pop
bukannyaslice!
menyimpan 6 karakter.9.times{p a;a=a.zip(a.pop 26).flatten}
Python3,
180179Garis output seperti dalam tugas.
Format Asli 151
Outputnya seperti dalam versi Ruby.
sumber
import
dan*
: ideone.com/kQTbsGolfScript,
515046 karakterKode GolfScript ini menghasilkan output berikut (lihat di sini ):
sumber
{...}%
dengan4*
.Perl, 91 karakter
Adakah saran tentang cara yang lebih ringkas untuk membangun dek awal? Pendekatan saya menggunakan 2 substitusi untuk membangun
$_
dan kemudian kecocokan global dalam konteks daftar untuk menginisialisasi@_
.Menyeret ini kemudian dilakukan dengan berulang kali
splice
ing@_
ke@a
dan interleaving dua daftar denganmap
kembali ke@_
.sumber
Mathematica
131129120 12011410086 karakterDengan bantuan dari Mr.Wizard:
Keluaran:
sumber
NestList[Riffle@@#~Partition~26&,#<>""&/@Tuples@Characters@{"A23456789TJQK","HDCS"},8]
StringJoin
.CJam, 34 byte
CJam lebih baru dari pertanyaan, jadi jawaban ini tidak bersaing untuk tanda centang hijau, tapi saya pikir ini akan menjadi masalah yang bagus untuk dicoba di CJam.
Uji di sini.
Ini mencetak output seperti
Penjelasan
sumber
A,2>
mendapatkan angka, pemikiran yang bagus!R , 97 byte
Menyimpan beberapa byte dengan dek out-of-order nyaman
Cobalah online!
sumber
/// , 753 byte
Cobalah online!
Menggunakan contoh output (cukup pas untuk tujuan ini) tanpa spasi tambahan.
sumber
05AB1E , 24 byte
Menggunakan kartu huruf kecil untuk menghemat 2 byte dengan kompresi, karena output apa pun yang dapat dibaca manusia diizinkan.
Dek awal / akhir adalah:
Cobalah online (PS: Menggunakan TIO lawas karena jauh lebih cepat .. Semua bawaan yang digunakan dalam jawaban ini sama di kedua versi Python legacy dan Elixir menulis ulang versi 05AB1E.)
Penjelasan:
Lihat tip tambang 05AB1E ini (bagian Bagaimana mengompresi string bukan bagian dari kamus? ) Untuk memahami mengapa
.•-Ÿ•
ini"ajqk"
dan.•ôì•
itu"cdhs"
.sumber
Japt , 31 byte
Cobalah!
Meskipun Japt memiliki fungsi "interleave dua daftar" yang masuk akal, ia tidak memiliki opsi "terpisah menjadi dua" yang bagus. Alih-alih, saya memilih unshuffle deck dan hanya menampilkan langkah-langkah itu secara terbalik.
Penjelasan:
Saya bisa menghemat 2 byte jika saya bisa menggunakan 1 untuk ace, bukan A, tetapi tidak ada jawaban lain yang melakukannya
sumber
Perl 6 , 69 byte
Cobalah online!
{ .say; .[flat ^26 Z 26..*] }
adalah fungsi anonim yang mencetak daftar argumennya, lalu mengembalikan acak daftar ituxx 9
menghasilkan daftar yang berisi sembilan salinan dari fungsi anonim itu[o]
mengurangi daftar itu dengan operator komposisi fungsio
, menghasilkan fungsi yang memanggil fungsi anonim asli sembilan kali, melewati daftar yang dikocok di setiap tingkat«A {2..10} J Q K»
adalah daftar pangkat,<S C D H>
adalah daftar jas, danX~
menghasilkan produk silang dari daftar tersebut dengan operator rangkaian string~
.sumber