Ini adalah 3x3
puzzle ASCII:
_____ _____ _____
| _| |_ |
| (_ _ _) |
|_ _|_( )_|_ _|
| (_) |_ _| (_) |
| _ _) (_ _ |
|_( )_|_ _|_( )_|
| _| (_) |_ |
| (_ _) |
|_____|_____|_____|
Ini juga 3x3
puzzle ASCII:
_____ _____ _____
| |_ _| |
| _ _) (_ _ |
|_( )_|_ _|_( )_|
| _| (_) |_ |
| (_ _ _) |
|_ _|_( )_|_ _|
| (_) |_ _| (_) |
| _) (_ |
|_____|_____|_____|
Setiap baris dalam puzzle ASCII (tidak termasuk kasus tepi yaitu potongan-potongan secara harfiah di tepi) terdiri dari pola berikut:
_ _ _
_( )_ _ _ _( )_ _ _ _( )_
|_ _| (_) |_ _| (_) |_ _|
_) (_ _ _) (_ _ _) (_
|_ _|_( )_|_ _|_( )_|_ _| ...
(_) (_) (_)
Diberikan 2 bilangan bulat H
dan di W
mana H
tinggi (jumlah vertikal) dan W
lebar (jumlah horizontal) H
dan W
merupakan >1
output HxW
puzzle ASCII yang mungkin .
Contohnya
Test Case 1
Memasukkan: 2, 4
Keluaran:
_____ _____ _____ _____
| |_ _| |_ |
| _ _) (_ _ _) |
|_( )_|_ _|_( )_|_ _|
| _| (_) |_ _| (_) |
| (_ _) (_ |
|_____|_____|_____|_____|
Test Case 2
Memasukkan: 4, 4
Keluaran:
_____ _____ _____ _____
| |_ _| |_ |
| _ _) (_ _ _) |
|_( )_|_ _|_( )_|_ _|
| _| (_) |_ _| (_) |
| (_ _ _) (_ _ |
|_ _|_( )_|_ _|_( )_|
| (_) |_ _| (_) |_ |
| _ _) (_ _ _) |
|_( )_|_ _|_( )_|_ _|
| _| (_) |_ _| (_) |
| (_ _) (_ |
|_____|_____|_____|_____|
Test Case 3
Memasukkan: 3, 5
Keluaran:
_____ _____ _____ _____ _____
| |_ _| |_ _| |
| _ _) (_ _ _) (_ _ |
|_( )_|_ _|_( )_|_ _|_( )_|
| _| (_) |_ _| (_) |_ |
| (_ _ _) (_ _ _) |
|_ _|_( )_|_ _|_( )_|_ _|
| (_) |_ _| (_) |_ _| (_) |
| _) (_ _) (_ |
|_____|_____|_____|_____|_____|
Test Case 4
Memasukkan: 2, 2
Keluaran:
_____ _____
| _| |
| (_ _ |
|_ _|_( )_|
| (_) |_ |
| _) |
|_____|_____|
Klarifikasi
- Tinggi dan lebar untuk setiap potongan puzzle tidak boleh ditingkatkan atau diturunkan.
- Dengan
H
danW
lebih besar dari satu, dimensi terkecil yang mungkin adalah2x2
(lihat IO 4). - Anda dapat memiliki program atau fungsi lengkap.
- Input akan terdiri dari 2 baris
H
pada tanggal 1 danW
2 jika Anda menggunakan fungsi, Anda dapat memilikinya di parameter. - Output ke stdout (atau yang serupa).
- Ini adalah kode-golf sehingga jawaban terpendek dalam byte menang.
Jawaban:
JavaScript (ES6) 272
277 271Edit perbaikan bug
Edit 2 disimpan 6 byte thx @ L.Serné
Edit 3 perbaikan bug lagi
Kurang golf
Uji
sumber
for(t=z(' _____',0,0)+z('|_ _| ',2,--h)+z(b=' _) (_ _ ')+z(c='|_ _|_( )_',0);--h;a='|_ _| (_) ')
Ini menyimpan 4 koma, jadi Anda berakhir dengan hanya 273 karakter. EDIT: Cuplikan tes masih disadap ...t=...
ke dalam untuk, gagal untuk h == 2. Persis seperti bug yang saya perbaiki hari ini.undefined
ternyata menyatakana
di bagian terakhir darifor
loop. Saya mengubah kode sedikit, dan berakhir dengan ini. Anda harus dapat mengintegrasikannya dengan eval untuk penyimpanan 2B lainnya.(w,h,z=(s,q=3,i=h)=>'| '.slice(0,q)+s.repeat(w).substr(i%2*6+q,w*6-2*q+1)+' |\n'.slice(~q),a='|_ _| (_) ')=>{for(t=z(' _____',0,0)+z('|_ _| ',2,--h)+z(b=' _) (_ _ ')+z(c='|_ _|_( )_',0);--h;)t+=z(a,2)+z(b)+z(c,0);return t+z(a,2)+z(' _) (_ ')+z('|_____',1)}
(276 B).Python, 513 byte
Mungkin lebih merupakan latihan dalam kebingungan daripada di golf, yang satu ini bekerja dengan menentukan karakter apa yang masing-masing
(x,y)
koordinat lakukan daripada membangun setiap pola dengan string. Sepertinya tidak digabungkanPola itu sendiri terlihat seperti
kita bisa melihat ini sebagai tabel pencarian dari bilangan bulat dengan kolom yang diambil mod 6 dan baris mod 3
Strategi menggabungkan pola-pola yang berbeda ini tidak benar-benar berhasil bagi saya di sini karena mengekspresikannya cukup rumit (walaupun saya pikir saya bisa bermain golf lebih banyak) dan karena kasing tepi mengambil begitu banyak karakter untuk diperbaiki. Saya meletakkan ini terlepas karena butuh saya sebentar dan mungkin menarik.
sumber
Mathematica, 384 byte
Fungsi yang tidak disebutkan namanya mengambil sepasang integer yang dipesan sebagai argumennya, dan mengembalikan string yang berisi baris baru yang sesuai. Dengan spasi dan baris baru ditambahkan:
sumber
Batch,
562528 byteTerbukti tahan terhadap golf, karena pengulangan cenderung menghabiskan terlalu banyak byte untuk dihilangkan, misalnya, saya secara manual memasukkan nomor baris mod 3 karena terlalu mahal untuk dihitung. Sunting: Selain itu, saya secara tidak sengaja telah melakukan golf ekstra
|
di setiap baris ketiga, yang tidak benar. Memperbaiki ini sebenarnya menyelamatkan saya 2 byte (4 byte pada versi asli saya). Penjelasan:a
berisi berbagai potongan jigsaw. The:t
swap fungsi mereka lebih setiap set tiga baris, maka ekstrak substring yang diperlukan yang:c
fungsi kemudian mengulangi berpasangan, tetapi menghapus kolom pertama jikaw
ganjil. Kasing tepi kiri dan kanan kemudian ditangani sebelum baris ditampilkan.Kasing tepi lainnya adalah baris paling pertama di mana huruf!
s diubah menjadi spasi|
s (kode menghindari|
s karena sulit ditangani di Batch).sumber
Befunge,
263243 byteCobalah online!
Cara ini bekerja adalah dengan mengulangi koordinat x, y dari area yang ingin kita hasilkan, dan memetakan nilai x , y ke u , koordinat v dalam pola puzzle (disimpan pada tiga baris pertama dari playfield). Pemetaan ini dicapai dengan rumus dasar berikut:
The u berkoordinasi berulang setiap 12 kolom, tetapi juga perlu diimbangi dengan 6 setiap 3 baris. The v berkoordinasi mengulangi setiap 3 baris, tapi kita menambahkan
y==0
dengan nilai sehingga baris pertama dapat diberikan sebagai kasus khusus. Namun, untuk menangani tepi, kita perlu memperkenalkan nilai boolean tambahan, e , yang berlaku untuk berbagai lokasi tepi, dan yang menyesuaikan rumus sebagai berikut:Jadi jika kita berada di tepi, kita tambahkan 4 ke koordinat v sehingga menggunakan pola tepi yang lebih sederhana pada garis 5 hingga 7. Dan kita juga sekarang perlu mod koordinat u dengan 6 daripada 12, karena pola tepi ini ulangi setiap 6 kolom.
Adapun nilai e itu sendiri, yang membutuhkan formula yang cukup kompleks, karena lokasi tepi mencakup area perbatasan puzzle yang agak tidak beraturan.
Tanpa terlalu banyak detail, rincian dasarnya adalah bahwa elr cocok dengan lokasi tepi di sepanjang batas kiri dan kanan, sementara etb cocok dengan lokasi di sepanjang batas atas dan bawah.
sumber
JavaScript (ES6), 285 byte
Ini adalah port jawaban Batch saya, hanya untuk melihat apakah ia bersaing dengan jawaban @ edc65. Tali panjang yang mengganggu berisi potongan-potongan jigsaw. Enam keping pertama mewakili dua baris dari satu kolom interior jigsaw. Potongan ketujuh digunakan untuk garis kedua dari belakang jigsaw, di tempat potongan keempat. Sepotong kedelapan digunakan pada baris kedua jigsaw, sebagai pengganti keping kelima, dan juga melakukan tugas ganda sebagai tepi kiri jigsaw. Potongan kesembilan adalah baris terakhir dari jigsaw.
sumber