Hasilkan kisi-kisi surat / spasi 4x12:
Setiap dadu harus muncul tepat satu kali, lokasi dipilih secara acak. Lokasi harus mendekati permutasi acak dadu yang seragam. Peragakan wajah acak (sekali lagi, kurang seragam) dari setiap dadu. Kiri-benarkan wajah di jendela 3 karakter. Sebagai contoh,
A E A A
E C D E
D A Qu E
E A H D
Adalah papan non-acak dalam format yang saya inginkan. Ruang tambahan diperbolehkan.
Dadu:
A A E E G N
E L R T T Y
A O O T T W
A B B J O O
E H R T V W
C I M O T U
D I S T T Y
E I O S S T
D E L R V Y
A C H O P S
H I M N Qu U
E E I N S U
E E G H N W
A F F K P S
H L N N R Z
D E I L R X
Fakta lucu: hanya ada 1 K di set. Apa surat lain yang secara eksklusif berbagi yang mati?
Ini adalah kode-golf sehingga program dengan bytecount terpendek menang!
Jawaban:
GolfScript, 116 byte
Karena skor dalam byte, saya pikir itu berarti kita dapat menggunakan semua byte dalam solusi. Keluar dari set ASCII yang dapat dicetak memungkinkan solusi yang agak lebih pendek daripada Peter Taylor , dengan biaya membuat kode lebih sulit untuk ditampilkan di sini. Tanpa data yang tidak patut, kode saya terlihat seperti ini:
Ini sangat mirip dengan solusi Peter Taylor, dan saya akui meminjam bit tanpa malu-malu (seperti
.81=' u '2/=
trik), meskipun saya pikir saya berhasil mempersingkat shuffle-nya sedikit, bahkan setelah menghabiskan bytecharekstra untuk keacakan yang lebih baik.String biner di awal skrip berisi karakter yang tidak diinginkan, sehingga tidak dapat ditempelkan secara langsung di sini. Sebagai gantinya, saya akan memberikan script sebagai hex dump:
Di Linux, atau sistem apa pun dengan
xxd
utilitas yang diinstal, hex dump ini dapat diubah kembali menjadi program GolfScript 116-byte yang bekerja dengan meneruskannyaxxd -r
.Sunting: Diganti
999rand
dengan9.?rand
untuk keacakan yang jauh lebih baik. Acaknya sekarang harus sedekat mungkin dengan RNG yang mendasarinya.sumber
Python 2.7,
253 229215 karakterSebagian besar karakter hanyalah dadu itu sendiri. Saya tidak ingin menghabiskan terlalu banyak waktu untuk mengurangi terlalu banyak
suntingan kecil: menghapus 2 byte yang tidak perlu (ruang ekstra)
edit2: turun ke 229
sunting3: hingga 215
sumber
print a+' u'[a=='Q']
danprint'\n'[j%4:]
from random import*
dan hapus semuar.
. 2) Ubah pemisah dalam string menjadi `` (spasi) dan manfaatkanstr.split
argumen default. 3) Singkirkan segala sesuatu yang berhubungan denganj
dan gunakan'\n'[len(d)%4:]
. 4) Gunakanlist.pop
argumen default. 5) ... 6) Untung!j=0...+'\n'[j%4:]
membuatnya agar bisa berfungsiGolfScript (
141 139137charsbytes)Dari yang 94 diperluas ke string yang berisi dadu. Gambar tidak termasuk baris baru yang tidak perlu dimasukkan untuk membuatnya membungkus sehingga kode dapat dilihat tanpa menggulir:
sumber
Ruby,
201197 karakter(dan itu satu-liner)
Sunting 1: Digunakan% W () untuk menghindari .split dan sepasang tanda kutip.
Sunting 2: Dibuat sesuai spesifikasi (dua spasi di antara setiap kolom keluaran)
sumber
x.join(" ").gsub(/Q ?/,"Qu")
akan memperbaikinya dengan biaya tiga karakter tambahan.)join
string dan ruang ekstra dan tanda tanya di regex, jika perangkat lunak SE merusak ruang ...)Powershell, 234 karakter
Berikut kode yang sama dengan spasi putih tambahan, dalam upaya meningkatkan keterbacaan :-)
Saya tidak mengetahui
shuffle
fitur bawaan di PowerShell, jadi saya mengubah setiap hasil menjadi pasangan nilai kunci - kunci yang menyamakan hasil dadu dan nilai yang menyamai angka acak. Maka itu hanya kasus menyortir pasangan ini dengan nilai kemudian mengeluarkan kunci.sumber
Perl, 179 karakter
Inilah versi verbose dari program ini:
sumber