Tugas:
Pertimbangkan masalahnya: "diberi papan catur dengan satu kotak yang hilang, potong menjadi 21 L-triomino". Ada bukti konstruktif yang terkenal bahwa ini dapat dilakukan untuk ukuran papan catur persegi yang merupakan kekuatan dua. Ia bekerja dengan memecah papan catur menjadi papan catur yang lebih kecil dengan lubang di dalamnya dan satu triomino besar dan kemudian mengamati bahwa triomino dapat dipotong menjadi empat triomino secara rekursif.
Dalam tugas ini, Anda diminta untuk memotong papan catur 8x8 menjadi triomino berbentuk L dan kemudian mewarnainya dengan empat warna sehingga tidak ada dua triomino yang berdekatan memiliki warna yang sama.
Spesifikasi:
Input Anda adalah posisi lubang, diberikan sebagai sepasang bilangan bulat. Anda dapat memilih mana yang merupakan indeks kolom dan mana yang merupakan indeks baris. Anda dapat memilih apakah masing-masing mulai dari 0 atau pada 1 dan jauh dari sudut mana mereka meningkat. Anda mungkin memerlukan A..H sebagai koordinat pertama, bukan 0..7 atau 1..8. Anda juga dapat menerima kedua koordinat yang dikemas dalam bilangan bulat tunggal 0..63 atau 1..64 dalam urutan leksikografis (baris-utama atau kolom-utama, kiri ke kanan atau kanan ke kiri, atas ke bawah atau ke bawah ke atas). Anda dapat menulis program lengkap, atau suatu fungsi.
Anda dapat menampilkan ubin sebagai ASCII, berwarna ASCII atau sebagai grafis primitif. Jika Anda memilih output ASCII, Anda dapat memilih empat karakter ASCII yang dapat dicetak untuk mewakili empat warna. Jika Anda memilih ASCII berwarna, Anda dapat memilih empat karakter ASCII yang dapat dicetak atau hanya satu karakter selain spasi. Lubang harus diwakili oleh karakter spasi. Jika salah satu karakter Anda adalah karakter luar angkasa, tidak ada triomino yang bersebelahan dengan lubang atau di tepi papan catur yang berwarna ini.
Jika Anda memilih ASCII berwarna atau keluaran grafis, Anda dapat memilih empat warna dari # 000, # 00F, # 0F0, # 0FF, # F00, # F0F, # FF0, #FFF atau padanan terdekatnya yang tersedia di lingkungan Anda. Jika Anda memilih output grafis, primitif grafis Anda harus diisi dengan kotak berukuran setidaknya 32x32 piksel dan dipisahkan oleh tidak lebih dari dua piksel warna lainnya. Jika hal di atas melebihi resolusi layar lingkungan Anda, persyaratan ukuran minimum disesuaikan dengan ukuran persegi terbesar yang masih pas di layar.
Anda dapat memilih ubin yang valid dari papan catur yang diberikan. Anda dapat memilih empat warna dari ubin yang Anda pilih. Pilihan Anda empat warna harus sama di semua output, tetapi Anda tidak diharuskan untuk menggunakan setiap warna di setiap output.
Contoh:
Output yang mungkin untuk input = [0, 0] (sudut kiri atas)
#??##??
##.?#..?
?..#??.#
??##.?##
##?..#??
#.??##.?
?..#?..#
??##??##
Output lain yang mungkin dari program yang sama (input = [0, 7]):
??#??#?
?##?##??
..xx..xx
.?x#.?x#
??##??##
..xx..xx
.?x#.?x#
??##??##
Program yang berbeda juga dapat menghasilkan, untuk input "D1" (perhatikan orientasi papan catur yang tidak standar tetapi diizinkan),
AABBCCAA
ACBACBAC
CCAABBCC
ABBAADD
AABDABDC
BBDDBBCC
BABBACAA
AABAACCA
sumber
Jawaban:
JavaScript (ES6),
184 ... 171163 byte(x)(y)
Cobalah online!
metode
Setiap triomino adalah salah satu dari:
Konfigurasi awal dari matriks adalah sebagai berikut:
Kami mengganti 2 warna pertama seperti yang kami lakukan pada papan catur mana pun, yang memberikan:
Langkah selanjutnya adalah:
Dan jika demikian, matriks terakhir adalah:
Berkomentar
Output grafis
Klik pada gambar untuk mengatur posisi lubang.
Tampilkan cuplikan kode
sumber
Arang , 78 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Keluaran menggunakan
#$%
karakter. Penjelasan:Masukkan koordinat dari kotak kosong.
Keluarkan string terkompresi. Berisi baris baru sehingga untuk menghindari putusnya aliran penjelasan ini Anda akan menemukan string di akhir jawaban.
Jika salah satu koordinat lebih besar dari
3
maka ingat fakta itu dan kurangi koordinasi dari 7.Lompat ke
%
kuadrat kiri atas terdekat%
dan timpa dengan a#
atau$
sesuai. (Tapi ini akan ditimpa oleh yang kosong jika sudah ada di alun-alun ini.)Kosongkan kotak pada koordinat yang dikurangi dan kemudian refleksikan output seperlunya untuk mendapatkan yang kosong ke posisi semula.
Saya mencoba memulai dengan kuadrat
%
s di tengah dan mencari jalan keluar ke koordinat yang diinginkan tetapi butuh 90 byte.sumber