Memasukkan
Tidak ada
Keluaran
52 kartu. Tidak ada duplikat. Kartu direpresentasikan sebagai karakter unicode mereka, misalnya 🂹.
The Unicode codepoints mengikuti format berikut:
- Tiga digit pertama adalah
1F0
. - Digit berikutnya adalah
A
,B
,C
, atauD
untuk sekop, hati, berlian, dan klub masing-masing. - Digit berikutnya adalah
1
melaluiC
danE
untuk berbagai nomor / kartu wajah.1
adalah ace,2
-A
adalah kartu nomor, danB
,D
, danE
adalah jack, queen, dan king masing-masing. (C
Adalah ksatria, yang tidak ada di kebanyakan deck.)
Contoh output:
🂶🃁🃛🃎🂧🂵🃗🂦🂽🂹🂣🃊🃚🂲🂡🂥🂷🃄🃃🃞🂺🂭🃑🃙🂪🃖🂳🃘🃒🂻🃆🂮🃍🂱🂴🃋🂸🃈🃅🃂🂨🃓🃉🂾🃇🂩🂢🂫🃔🃕 🂤🃝
Aturan:
- Ini adalah kode-golf . Jawaban terpendek menang.
- Celah terlarang dilarang.
- Dek Anda harus benar-benar acak. Jika dijalankan 20 kali, 20 output acak (dan kemungkinan besar unik) harus dihasilkan.
Catatan
Jika Anda hanya melihat kotak, instal font DejaVu .
Jawaban:
Jelly ,
25 2321 byteTautan niladik yang mengembalikan daftar karakter, atau program lengkap yang mencetak dek yang dikocok.
Cobalah online!
Bagaimana?
sumber
JavaScript (ES6),
107106108 byteTampilkan cuplikan kode
-1 byte terima kasih @nderscore
JavaScript (ES6),
120119121 byteVersi sebelumnya.
sumber
[...'ABCD']
sebelumnya. Itu keren :)"ABCD".map(...)
. Saya yakin ada alasan masuk akal mengapa demikian.Python 3 ,
10694 byte-5 byte terima kasih kepada musicman523 (1. digunakan
sample(...,52)
sebagai inline yang setara denganshuffle
[terima kasih untuk benar-benar manusiawi]; 2. gunakan~v&2
sebagai gantiv%4<2
; ditambah 1 byte lebih lanjut sebagai konsekuensi karena ruang dapat dihilangkan)Cobalah online!
sumber
sample
. Cobalah online!v%4<2
ke~v&2
untuk menyimpan satu byte lagi.random
fungsi lain bisa membantu di sana. Byte lain di atas seperti yangor ~...
bisaor~...
.05AB1E ,
2221 byteDisimpan 1 byte berkat carusocomputing .
Cobalah online!
Penjelasan
sumber
…1F0A4£14L13KhJâ«Hç.r
untuk 21 byte (diedit karena saya lupa menghapus ksatria). Apakah membantu Anda mengikat jeli.Bash + coreutils, 56 byte
Kita gunakan
printf
untuk menulis setiap kartu pada barisnya sendiri, mengocok garis-garisnya, lalu menggabungkan semua garis dengan menghapus karakter baris baru.Perhatikan bahwa meskipun
printf
perintah coreutils membutuhkan tepat 8 digit heksadesimal setelahnya\U
, Bash bawaanprintf
memungkinkan kita menghilangkan nol di depan.sumber
echo 16iF09F8{2A,2B,38,39}{{1..9},A,B,D,E}0AP|dc|shuf|tr -d \\n
, tetapi milik Anda lebih baik. Saya tidak tahu%b
.Python 3 , 112 byte
Cobalah online!
sumber
del
pernyataan tidak rusak secara berurutan dari kiri ke kanan. Elemen pertama daria[::16]
adalah U + 1F0A0 MAIN KARTU KEMBALI, yang harus dihapus. Kita juga perlu menghapus kartu Knight dan Joker yang terjebak di antara 52 yang normal. Lihat en.wikipedia.org/wiki/… .Python 3 , 107 byte
Disimpan 6 byte berkat @totallyhuman dan 3 terima kasih ke @ CCB60!
Cobalah online!
sumber
,sep=''
perbaikan spasi, tentu saja - tetapi membuatnya 112 byterandom.sample
! Saya akan membiarkan OP memutuskan spasi. Saya dapat menambahkan,sep=''
untuk menghilangkannya, dan masih menyimpan 6 byte.PHP > = 7, 102 byte
Tidak ada Interpreter online tersedia untuk IntlChar :: chr metode
PHP , 112 byte
Cobalah online!
PHP , 116 byte
Cobalah online!
PHP, 121 Bytes
Cobalah online!
sumber
APL (Dyalog) ,
4038 byteMetode Jonathan Allan
(
...)
pada array berikut⍳62
62 bilangan bulat pertama127136+
tambahkan 127136 untuk itu(
...)/
filter itu dengan Boolean⍳62
62 bilangan bulat pertama16|
modulus 16180∨
GCD 180 dan itu11>
apakah 11 lebih besar dari itu[
...]
pilih elemen berikut?⍨52
kocok 52 integer pertama (pilih 52 integer acak dari tas 52 integer pertama)⎕UCS
dikonversi ke simbol yang sesuai di U nicode C haracter S etSolusi Versi 16.0 (saat ini dalam versi beta) (33 karakter)
(
...)
pada array berikut⍳62
62 bilangan bulat pertama16|
modulus 16180∨
GCD 180 dan itu11>
apakah 11 lebih besar dari itu⍸
indeks mana Benar127136+
tambahkan 127136 untuk itu[
...]
pilih elemen berikut?⍨52
kocok 52 integer pertama (pilih 52 integer acak dari tas 52 integer pertama)⎕UCS
dikonversi ke simbol yang sesuai di U nicode C haracter S etSolusi lama
(
...)
pada array berikut⍳14
14 bilangan bulat pertama12~⍨
kecuali 12(
...)∘.,
Disatukan dengan Cartesianly⍳4
4 bilangan bulat pertama9+
ditambahkan ke 9,
ravel (ratakan) itu16⊥¨
evaluasi masing-masing dalam basis 16126976+
tambahkan 126976 untuk itu[
...]
pilih elemen berikut?⍨52
kocok 52 integer pertama (pilih 52 integer acak dari tas 52 integer pertama)⎕UCS
dikonversi ke simbol yang sesuai di U nicode C haracter S etsumber
Arang , 50 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Membuat string dari semua 64 karakter di blok tetapi menyaring kartu yang tidak valid karena mereka dipilih secara acak. (Omong-omong, pemilihan acak tanpa penggantian dari string hanya 11 byte, dibandingkan dengan 17 untuk array.)
Sunting: Pengurangan dari larik dan peningkatan Arang lainnya telah mengurangi ukuran menjadi 41 byte: Cobalah secara online!
sumber
Alice , 34 byte
Cobalah online!
Penjelasan
sumber
> <> ,
495049 byteCobalah online!
(+1 byte untuk membuat keacakan menjadi lebih baik)
Saya menafsirkan "acak" berarti "setiap hasil yang mungkin memiliki probabilitas tidak nol". Ini bukan distribusi yang seragam.
Ada dua tahap untuk kode ini. Pertama, ikan meletakkan semua kartu di tumpukan, menggunakan dua baris pertama. Dimulai dengan kartu as sekop, ikan menduplikasi dan menambahkannya, kemudian memeriksa apakah kode hex kartu sebelumnya berakhir dengan 0, C atau F dengan mengalikan bersama x ( x -12) ( x -15), di mana x adalah mod kode sandi 16, dan memeriksa apakah itu nol. Jika ya, itu akan menghapus kartu yang menyinggung dari tumpukan. Itu berulang sampai tumpukan memiliki 52 kartu, lalu berenang ke tahap 2:
Kode sedikit ini mengocok dan mencetak tumpukan. The
x
menetapkan arah ikan secara acak:v
dan kembali kex
tanpa melakukan apa pun. Arah kiri serupa.{
, memutar seluruh tumpukan ke kiri, lalu kembali kex
.x
.Jelas bahwa setiap urutan kartu yang mungkin dapat diproduksi: pada titik mana pun di tahap 2, setiap kartu yang belum dicetak dapat dicetak berikutnya jika ikan berenang cukup ke kanan. Teknik pengocokan ini biasanya tidak memindahkan kartu dengan jarak yang sangat jauh jika mereka sudah saling berdekatan, tetapi sekali lagi, tidak juga pengocokan kartu dengan tangan .
sumber
R, 61 byte
Sampel secara acak vektor representasi bilangan bulat dari nilai kartu unicode (yang dapat diperoleh dari
utf8ToInt()
fucntion) dan lepaskan kartu ksatria / joker yang tidak diinginkan.sumber
C # (
146141 bytes)Demo online
Ini menggunakan gaya yang sangat buruk dalam mengocok
Guid.NewGuid()
, tapi ini kode-golf. Itu kemudian membangun pasangan pengganti secara manual.sumber
Perl 5, 75 byte
Perhatikan bahwa ini menggunakan titik kode untuk ratu seperti yang diberikan dalam pertanyaan (yaitu digit terakhir
C
). Untuk poin kode aktual (digit terakhirD
), ganti51,56
dengan47,52
.sumber
Java 8, 216 byte
Penjelasan:
Coba di sini.
CATATAN: Belum diuji karena meskipun saya sudah menginstal font yang ditautkan, saya masih melihat kotak. Mungkin harus me-restart PC saya atau sesuatu ..
sumber
Dyalog APL, 35 byte
berdasarkan jawaban Adám
menggunakan
⎕io←0
sumber
Japt ,
51413922 byteDengan beberapa inspirasi dari solusi Jonathan's Jelly .
Cobalah (atau lihat output dengan peningkatan
font-size
)Penjelasan
sumber