Tulis sebuah program atau fungsi yang mengambil dalam tiga bilangan bulat positif, W, H, dan N. Cetak atau kembalikan kotak W × H .
di mana setiap Nth .
dalam urutan pembacaan bahasa Inggris yang normal diganti denganX
.
Misalnya, mengingat W = 7, H = 3, N = 3, kisi adalah 7 karakter lebar dan 3 tinggi, dan setiap pembacaan karakter ketiga dari kiri atas adalah X
:
..X..X.
.X..X..
X..X..X
Demikian pula, jika inputnya adalah W = 10, H = 4, N = 5, hasilnya adalah:
....X....X
....X....X
....X....X
....X....X
Catatan
- "Urutan pembacaan Bahasa Inggris Normal" berarti belok kiri ke kanan pada setiap baris, dari baris atas ke bawah.
- Ketika N adalah 1 maka semua
.
akan menjadiX
. - Anda dapat menggunakan dua karakter ASCII yang dapat dicetak untuk menggantikan
.
danX
.- Jika Anda menggunakan spasi (
- Anda mungkin tidak menggunakan sesuatu yang lain sebagai pengganti baris baru yang membentuk kisi.
- Jika Anda menggunakan spasi (
- Format input dan urutan W, H, dan N yang tepat tidak super penting. Hal-hal seperti
[H,W,N]
atauN\nW,H
baik-baik saja. - Baris baru yang tertinggal dalam output baik-baik saja.
- Kode terpendek dalam byte menang!
Contohnya
W = 5, H = 3, N = 1
XXXXX
XXXXX
XXXXX
W = 5, H = 3, N = 2
.X.X.
X.X.X
.X.X.
W = 5, H = 3, N = 3
..X..
X..X.
.X..X
W = 5, H = 3, N = 4
...X.
..X..
.X...
W = 5, H = 3, N = 5
....X
....X
....X
W = 5, H = 3, N = 6
.....
X....
.X...
W = 5, H = 3, N = 7
.....
.X...
...X.
W = 5, H = 3, N = 15
.....
.....
....X
W = 5, H = 3, N = 16 (or more)
.....
.....
.....
W = 1, H = 1, N = 1
X
W = 1, H = 1, N = 2 (or more)
.
W = 8, H = 6, N = 2
.X.X.X.X
.X.X.X.X
.X.X.X.X
.X.X.X.X
.X.X.X.X
.X.X.X.X
W = 8, H = 6, N = 3
..X..X..
X..X..X.
.X..X..X
..X..X..
X..X..X.
.X..X..X
W = 8, H = 6, N = 4
...X...X
...X...X
...X...X
...X...X
...X...X
...X...X
W = 8, H = 6, N = 7
......X.
.....X..
....X...
...X....
..X.....
.X......
W = 8, H = 6, N = 16
........
.......X
........
.......X
........
.......X
W = 37, H = 1, N = 4
...X...X...X...X...X...X...X...X...X.
W = 1, H = 10, N = 8
.
.
.
.
.
.
.
X
.
.
code-golf
arithmetic
grid
Hobi Calvin
sumber
sumber
["..X..X.", ".X..X..", "X..X..X"]
sebagai kisi "?Jawaban:
J,
95 byteMenggunakan spasi dan
1
dan mengharapkan input dalam formulirH W f N
Penjelasan:
Pemakaian:
Cobalah online di sini.
sumber
($":&1)
, bukankah itu akan dihitung sebagai 7 byte?()
itu bukan bagian dari fungsi; Anda bisa menulisf =. $":&1
dan kemudian3 7 f 3
.Python 2, 60 byte
Ini mencetak ruang dan
0
di tempat.
danX
. Input diambil sebagai tuple dalam bentukw,h,n
.sumber
J, 12 byte
Ini adalah fungsi diadik yang menggunakan array
H W
sebagai argumen kiri danN
argumen kanannya. Pemakaian:Penjelasan
sumber
X.
benar - benar terpendek?_1
dengan tanda kurung, dan memformat spasi antar kolom, dan akhirnya menjadi lebih lama.BBC Basic, 67 karakter ASCII, tosize file berukuran 43 byte
Unduh juru bahasa di http://www.bbcbasic.co.uk/bbcwin/download.html
BBC basic memiliki perintah praktis untuk membatasi lebar bidang. Kami menggunakan
STRING$
untuk membuatw*h
salinan stringn-1
periode diikuti oleh X. Kemudian kami menggunakan LEFT $ untuk memotong ini kew*h
karakter.sumber
Minkolang 0.14 ,
34302822 bytePeriksa satu kasing di sini dan periksa semua kasing di sini. Mengharapkan input seperti
N W H
.Penjelasan
Karena codebox Minkolang adalah toroidal, ini akan membungkus awal. Karena setiap
n
sekarang akan menerima-1
, ini akhirnya crash dengan kesalahan dan tidak ada output lebih lanjut, yang diizinkan.sumber
CJam (16 byte)
Mengambil input pada tumpukan dalam urutan
N W H
, mengembalikan string menggunakan karakter0
dan1
. Demo onlinePembedahan
sumber
APL, 13 byte
Ini diambil
H W
sebagai argumen kiri danN
sebagai argumen kanan.Penjelasan:
Cobalah secara online: pertama uji kasus , kasus tes terakhir . Perhatikan bahwa meskipun ini menunjukkan keluaran kotak, salinan Dyalog saya tidak.
sumber
CJam, 20 Bytes
Mengambil input sebagai HW N.
sumber
q~_@*,@(S*'X+f=/N*
dengan input agar NH W.'X
dengan0
, dan itu akan menjadi 17MATLAB,
61 5554 byteWow, saya pikir MATLAB akan kompetitif dalam hal ini, tetapi betapa salahnya saya!
Fungsi ini menciptakan array 1 dari dimensi yang benar, dan kemudian menetapkan setiap elemen ke-0 menjadi 0 (MATLAB secara implisit menangani pembungkusan di sekitar indeks ke dalam 2D). Kami kemudian menambahkan 45 ('-') ke nomor ini dan dikonversi ke array arang untuk dikembalikan.
Pertanyaan memungkinkan dua karakter ASCII yang berbeda untuk digunakan untuk grid, saya menggunakan '-' sebagai pengganti 'x' untuk menyimpan beberapa byte. Format input juga tidak tetap, jadi harus disediakan sebagai
[w h],n
- yaitu array lebar dan tinggi, dan kemudian n sebagai parameter kedua.Ini juga berfungsi dengan Oktaf dan dapat dicoba online di sini . Fungsi ini sudah diatur di ruang kerja yang ditautkan, jadi Anda bisa memanggil misalnya:
Output yang mana:
sumber
c=[b'+45,''];
Memproses, 93 byte (Jawa, 104 byte)
Alasan saya menggunakan Processing daripada Java adalah bahwa Anda tidak perlu mengakses pointer dengan memberi tip
System.out
karena variabel lokal dapat diakses secara langsung. Saya mendapatkan 11 byte dengan ini. Fungsi tidak mengembalikan hasilnya tetapi mencetaknya.sumber
i++%a...
), dan sepertinya Anda meninggalkan cadangan}
di akhir yang tidak Anda butuhkan.Japt ,
33322725 byteMengambil input dalam format
dan
W H N
. Penggunaan"
di tempat.
danX
, masing-masing. Cobalah online!Tidak terseret dan penjelasan
Saran diterima!
sumber
Vitsy ,
2523222119 BytesTerima kasih kepada @ Sp3000 untuk menunjukkan bahwa saya tidak perlu duplikat dan menyelamatkan saya 2 byte!
Mengambil input sebagai
N W H
. Cobalah online!sumber
K,
21191814 byteMembawa argumen sebagai
(H W;N)
:Beraksi:
sumber
Pyth -
191817 bytesHarapan untuk golf lebih banyak. Mengambil input sebagai
N\n[W, H]
.Test Suite .
sumber
R, 66 byte
Ini adalah fungsi yang menerima tiga bilangan bulat dan mengembalikan matriks nilai karakter. Untuk menyebutnya, tetapkan ke variabel.
Tidak Terkumpul:
sumber
JavaScript (ES6),
6560 bytePenjelasan
Uji
Tampilkan cuplikan kode
sumber
Mathematica, 85 byte
Seperti banyak solusi lain, ini menciptakan satu baris, lalu mem-partisi-nya.
sumber
JavaScript (ES6), 55 byte
Menggunakan IIFE
f
untuk mengulang untuk menyimpan pernyataan kembali.Output untuk w = 5, h = 3, n = 7:
sumber
C #, 185 byte
Untuk Bacaan yang lebih mudah dibaca:
Pemakaian:
sumber
Julia, 50 byte
Ini menciptakan fungsi
f
yang menerima tiga bilangan bulat dan mengembalikan deretan string 2 dimensi.Tidak Terkumpul:
sumber
Ruby,
6756 byteMencetak array karena diterima.
67 byte
Tidak Terkumpul:
Pemakaian:
sumber
MATLAB, 44 byte
Catatan: Pendekatan yang sangat berbeda dari yang digunakan oleh Tom Carpenter.
Menentukan fungsi anonim yang menerima input sebagai
[W,H],N
. Saya mendekati masalah ini menggunakan bukan-modulo-of- N untuk array 1: W * H dan kemudian hanya membentuk kembali solusi untuk array dua dimensi, yang kemudian dikonversi ke array karakter.Contoh output untuk
[5,3],7
:sumber
Lisp umum, SBCL, 94 byte
Penjelasan
(=(mod(1+ i)c)0)(=(mod(1+ i)a)0)
terlihat sangat konyol (karena sangat mirip tapi saya tidak tahu apakah itu bisa diselesaikan, menghemat byteSaya menggunakan
(1+ i)
bukani
karenadotimes
mulai darii=0
dan saya ingin memulai dari1
. Hal ini juga membantu karena saya dapat menggunakan(* a b)
bukan(1+(* a b))
sumber
Jawa,
185183 byteTerima kasih Thomas Kwa, karena telah menyelamatkan saya 2 byte!
Tidak digabungkan (ish):
Pemakaian:
Mungkin java akan menang suatu hari: P
sumber
>0
bukan!=0
, dan<1
bukannya==0
.