Input yang diberikan n
, menghasilkan ukuran kotak kata n
, dalam sesedikit mungkin byte.
Detail
Jumlah yang diberikan akan selalu aneh. Alun-alun pusat kotak harus selalu kosong (karakter spasi). Surat-surat yang mengisi kisi-kisi harus dipilih secara acak dari distribusi surat Scrabble huruf Inggris. Artinya, setiap ubin harus dipilih secara acak, dengan probabilitas seragam, dari 100 karakter berikut:
??EEEEEEEEEEEEAAAAAAAAAIIIIIIIIIOOOOOOOONNNNNNRRRRRRTTTTTTLLLLSSSSUUUUDDDDGGGBBCCMMPPFFHHVVWWYYKJXQZ
di mana ?
menunjukkan ubin kosong.
Seperti halnya papan Scrabble, beberapa ubin di papan ini juga akan menjadi ubin bonus untuk skor yang lebih tinggi. Ubin ini hanya terlihat di papan dengan ukuran 9 atau lebih. dan harus terlihat setiap 3 baris dari alun-alun dalam pola yang keluar, tetapi seharusnya tidak pernah muncul pada huruf terluar. Kotak bonus dilambangkan dengan menggunakan huruf kecil, dengan ubin kosong diidentifikasi sebagai !
gantinya ?
. Silakan lihat demonstrasi visual ini atau implementasi referensi untuk lebih banyak contoh tentang cara mendistribusikan ubin bonus dengan benar.
Contohnya
Memasukkan: 5
Keluaran:
VNZNT
IFOSN
UD VD
ZIOO?
KTLED
Memasukkan: 9
Keluaran:
UWDESTKPW
ItDBaDEdI
TERMDYSTR
ROANJLEFT
EkCI OOsT
IPAJPGM?Y
MZLORETVI
G!EGgPUeI
MNROYOEER
Aturan
Ini adalah kode-golf sehingga kode terpendek dalam byte menang.
- Setiap format yang masuk akal dapat digunakan untuk I / O, dengan asumsi itu konsisten.
- Anda harus dapat menangani kisi-kisi setidaknya hingga 999.
- Semua celah standar dilarang.
Jawaban:
Jelly ,
67 65 64 66 6463 byteTautan monadik yang mengambil nomor dan mengembalikan daftar karakter, atau program lengkap mencetak hasilnya.
Cobalah online! (Saya lebih suka menggunakan
G
daripadaY
karena itu lebih persegi )Bagaimana?
sumber
?
dengan!
ketika mereka berada di posisi ubin bonus, aku berlari beberapa set (lebih mudah untuk spot di9
s!) Maaf ...⁾?!y
berarti persis seperti itu, tetapi tampaknya gagal.?
s) Saya akan memperbaikinya sekarang ...R ,
288281267257225214 byteterima kasih kepada @cole untuk -1 byte, menata ulang
?
untuk menciutkan 2 ke dalamrep(2,10)
-10 byte menyadari itu
row(m) == t(col(m))
-41 byte terima kasih kepada user2390246 untuk mengkonfigurasi ulang bobot, menurunkan indeks, dan beberapa tips R biasa
Cobalah online!
Mengembalikan matriks. Implementasi yang cukup sederhana; nilai sampel n ^ 2 dengan distribusi yang tepat, disimpan sebagai
nxn
matriks.K
adalah indeks pusat.L=col(m)
adalah matriks yang menunjukkan jumlah kolom setiap elemen dalam matriks. Oleh karena itu kami menghitung!(L-K)%%3
untuk mendapatkan kolom yang mungkin (termasuk tepi), yaitu, kelipatan 3 dari kolom tengah. Untuk menghapus tepi, kami mempertimbangkanL-1
danL-n
.L-1
adalah0
(palsu) untuk kolom pertama danL-n
adalah0
untuk kolom terakhir. Menerapkan&
(elemen-boolean bijaksanaAND
) untuk tiga ini menghasilkan matriks denganTRUE
di kolom tersebut kelipatan tiga dari pusat, tidak termasuk tepi. Kami menyimpan hasil ini sebagaix
.Jika kita mengambil transpos dari
x
,,t(x)
kita mendapatkan matriks yang sama, tetapi untuk baris, makax&t(x)
merupakan matriks yang kita simpan sebagaii
mengandung:TRUE
indeks untuk sel yang diperlukan, dan diFALSE
tempat lain.Kemudian kita gunakan
chartr
untuk melakukan transformasi yang diperlukanm[i]
dan menyimpan hasilnya sebagaim[i]
, mengubah sel pusat ke spasi, dan mengembalikan matriks.Yang penting seperti yang ditunjukkan oleh user2390246 , kita tidak perlu menguji
n>=9
karenan<7
, tidak ada sel kelipatan 3 dari pusat (selain dari pusat yang diubah menjadi spasi), dan untukn==7
, satu-satunya sel kelipatan 3 dari pusat berada di tepi sehingga tidak termasuk. Rapi!sumber
?
ke bagian string yang sesuairep(2,9)
dan hanya meningkatkannyarep(2,10)
?2,
dan mendapatkan 1 untuk10
.rep(c(12,8,9,6,4:1),c(1,1:4,1,10,5))
simpan 10 byte. (Anda harus mengubah urutan surat ke EOAI ...)JavaScript (ES6),
247242 byte-5 byte dengan bantuan dari @Shaggy
Cuplikan Tes
Tampilkan cuplikan kode
sumber
c
dalam salah satu panggilang
.Perl 6 ,
162161154153 byteCobalah online!
Mengambil (n-3) / 2 sebagai input, mengembalikan daftar daftar huruf.
Penjelasan:
sumber
Perl 5 ,
246244 + 1 (-n
) =247245 byteCobalah online!
sumber
[C64 basic v2,
210209 bytes]Input
n
5 dapat ditentukan sepertiAngka "5" sampai akhir harus diubah ke angka ganjil. Jangan memberi lebih dari 25, maka program akan menimpa dirinya sendiri.
Cara mencobanya: google for "vice c64 emulator", instal, dan salin-tempel kode dasar ini ke dalamnya. Untuk menjalankan program ini, ketik:
RUN
. Untuk menghapus layar, tekan shift / home.Dan hasilnya:
sumber
FOR
tokenzied sebagaifO
. AtauGOTO
sebagaigO
. Saya bisa membuatnya juga interaktif, tetapi sayangnyaINPUT
perintahnya adalah pengecualian, tidak ada token. Inilah sebabnya input harus diberikan denganDATA
perintah, yang tokennya adalahdA
.Python 3 ,
214236240 byteCobalah online!
Multiplisitas masing-masing karakter dinyatakan sebagai jumlah kekuatan dua, misalnya
12 = 8 + 4 => "E"*12 = "E"*2*2*2 + "E"*2*2
.((i-n//2)%3+(j-n//2)%3<1)*(i*j>0)*(i<n-1)*(j<n-1)
mungkin bisa bermain golf.sumber
i<n
selalu benar, bahkan ketikai=n-1
(bawah). Sama untukj
.