Untuk keperluan pertanyaan ini, setumpuk kartu diformat dengan cara ini:
[
"AS", "2S", "3S", "4S", "5S", "6S", "7S", "8S", "9S", "10S", "JS", "QS", "KS",
"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",
"AC", "2C", "3C", "4C", "5C", "6C", "7C", "8C", "9C", "10C", "JC", "QC", "KC",
"J", "J"
]
Kartu selalu diformat sebagai nilai, diikuti oleh kartu. Misalnya AS
adalah Ace of Spades. Dua single J adalah Jokers. Kami ingin mengocok tumpukan kartu ini, tetapi pengocokannya harus Superb ™.
A Superb Shuffle ™ adalah salah satunya:
- Tidak ada dua kartu (kecuali Pelawak) dari jenis yang sama yang berdekatan.
- Tidak ada kartu (kecuali Joker) yang berdekatan dengan salah satu dari nilai yang sama.
- Tidak ada kartu (kecuali Joker) yang berdekatan dengan salah satu dari nilai yang berdekatan (satu lebih tinggi atau lebih rendah dalam urutan ini, A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K, A. Perhatikan bahwa Ace tidak dapat berdekatan dengan 2 atau King).
- Jokers dapat berada di posisi apa pun.
- Definisi Superb Shuffle ™ tidak mengharuskan kartu berada dalam urutan berbeda setiap kali dikocok. Yang tidak terlalu luar biasa, tapi itu luar biasa ™.
Karena itu Superb ™.
Contohnya mungkin:
[
"AS", "5D", "9H", "KC", "2D", "6H", "10C", "QS", "3H", "7C", "9S",
"KD", "4C", "6S", "10D", "AC", "3S", "7D", "JH", "J", "4D", "8H",
"QC", "AD", "5H", "9C", "JS", "2H", "6C", "8S", "QD", "3C", "5S",
"9D", "KH", "2S", "6D", "10H", "J", "3D", "7H", "JC", "KS", "4H",
"8C", "10S", "AH", "5C", "7S", "JD", "2C", "4S", "8D", "QH"
]
Tantangan:
- Tulis beberapa kode untuk menjalankan shuffle yang luar biasa
- Gunakan bahasa apa pun.
- Input dapat berupa :
- setumpuk kartu seperti dijelaskan di atas dalam urutan yang sama , sebagai susunan atau struktur daftar lainnya.
- Tidak ada input (kode menghasilkan setumpuk kartu dalam urutan itu)
- Output harus setumpuk penuh kartu dalam Superb Shuffle ™ seperti dijelaskan di atas.
- Coba lakukan Superb Shuffle ™ Anda dalam jumlah terkecil byte.
- Tautan ke juru bahasa online seperti Try It Online lebih disukai, tetapi opsional.
Selamat mengocok!
T
bukan10
?Jawaban:
Japt,
654 bytePisahkan array input ke dalam sub-array setiap elemen ke-16 dan ratakan.
Cobalah
sumber
Ruby , 31 byte
Cobalah online!
Penjelasan:
Saya memilih satu kartu, kemudian melewatkan 16 kartu berikutnya dan mulai dari kartu pertama ketika saya mencapai kartu terakhir dari geladak. 17 dan 54 sama-sama prima, jadi saya yakin akan memilih semua kartu.
Posisi ke-17 dijamin menjadi suit yang berbeda dan selisih nilainya setidaknya 2: kartu ke-13 (atau ke-15) memiliki nilai yang sama dan suit yang berbeda, sehingga dengan melewatkan 4 (atau 2) yang lain, nilainya tepat .
sumber
Python 3 , 21 byte
Cobalah online!
Penjelasan:
Ide yang sama dengan jawaban Ruby saya, tetapi lebih pendek dengan Python: Saya menggunakan 17 deck, dan memilih setiap kartu ke-17.
sumber
JavaScript, 35 byte
Cobalah online!
Mengambil larik dek sebagai input, dan mengganti setiap nilai ganjil dengan kartu lain yang berjarak "20 kartu" di geladak.
sumber
Java 10,
7265 byteMirip dengan @GB 's Ruby answer , tetapi dengan menggunakan
i*7%54
pada hasil-array, bukani*17%54
pada input-array untuk menyimpan byte.Cobalah online.
Penjelasan:
sumber
AS, 6S, JS, 3D, 8D, KD,
.Perl 6 ,
21 2018 byteTerima kasih kepada Brad Gilbert b2gills untuk -2 byte
Cobalah online!
Namun port lain dari jawaban GB .
Perhatikan bahwa, sementara variabel globalNamun,$!
tidak me-reset fungsi, nilainya tidak masalah, karena urutan output apa pun yang valid.$
adalah ulang.Penjelasan:
sumber
$
seperti halnya dengan$!
atau$/
. Juga jika Anda digunakan$_
sebagai pengganti@_
Anda bisa memulainya dengan.[…]
bukannya@_[…]
menyimpan byte lain.05AB1E ,
975 bytePort dari Ruby menjawab @GB , jadi pastikan untuk menghapusnya!
-2 byte dengan mencetak setiap kartu dengan pembatas baris baru alih-alih membungkusnya ke daftar hasil
-2 byte berkat @ Mr.Xcoder
Cobalah online.
Penjelasan:
sumber
ā17*è
harus menyimpan 2 byte lagiJavaScript, 27
Satu lagi berdasarkan jawaban ruby
Diedit dengan singkat
sumber
T-SQL, 31 byte
Jika Anda tidak peduli dengan kolom tambahan di output, saya bisa turun ke 29 byte :
Jadi Anda dapat memverifikasi bahwa output saya "Luar Biasa", berikut adalah dek yang dihasilkannya:
(Dihasilkan menggunakan penambahan SQL 2017 baru,
STRING_AGG
):Bagian yang sulit bagi saya bukan kode pilih, itu mengisi tabel input (yang diizinkan untuk SQL sesuai aturan IO kami ).
Karena SQL secara inheren tidak berurutan (hanya menjamin urutan tertentu jika Anda memasukkan
ORDER BY
klausa eksplisit ), saya harus memasukkan urutan asli sebagai bidang i pada tabel input t . Ini juga berarti saya dapat menggunakannya untuk mengurutkan, menggunakan faktor / mod proses yang "relatif prima" yang digunakan semua orang. Saya menemukan bahwa itui*7%54
berfungsi dengan baiki*17%54
.Berikut adalah perintah untuk mengatur dan mengisi tabel input t , berdasarkan solusi saya untuk pertanyaan terkait ini :
sumber
i
input tambahan tidak dipertimbangkan di sini?Jeli ,
54 byteCobalah online!
Bergantian keluar cara
orang lainorang lain kecuali Orang random menghemat byte :(Kredit ke GB untuk metode mereka .
Cara saya pergi ...
Cobalah online!
Bagaimana?
Perbaiki setiap kartu lainnya dan selingi dengan rotasi geladak yang ditinggalkan oleh 20 tempat (18 dan 22 tempat juga berfungsi; lebih jauh demikian juga arah rotasi maupun pemasangan kartu ganjil atau genap)
Yang (menggunakan
T
untuk10
danrj
&bj
untukJ
s):sumber
PowerShell 3.0,
3026 Bytes-4 Berkat Mazzy
Old code pada 30 byte
Port lain dari metode GB.
sumber
$args[(0..53|%{$_*17%54})]
.The input can be either:... in the same order, as *an array*
.$args
adalah sebuah array. dan Anda bisa menggunakan splatting . misalnya$a=@("AS", ..., "J"); &{} @a
. Cobalah. :)&{
dan}
. Anda dapat menyimpanparam($d)0..53|%{$d[$_*17%54]}
ke file. dan panggil file ini tanpa&{...}
Arang , 8 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Port lain dari jawaban Ruby @ GB. Penjelasan:
sumber
Merah , 44 byte
Cobalah online!
Interpetasi lain dari kode GB. Saya menambahkan 16 salinan dek ke dirinya sendiri dan kemudian mengekstrak setiap kartu ke-17.
sumber