Ksatria mengisi adalah mengisi banjir menggunakan konektivitas bagian catur ksatria. Secara khusus:
1 1
1 1
0
1 1
1 1
(0 adalah titik awal, 1s menunjukkan sel yang terhubung)
Tantangan
Diberi kisi 2D ruang dan dinding, dan lokasi awal, melakukan knight-fill pada kisi. Kode terpendek menang.
Aturan
Anda dapat mengambil input dan menghasilkan output dalam format apa pun yang Anda suka (gambar, string, array, apa pun). Anda dapat mengambil lokasi awal sebagai bagian dari kisi masukan atau sebagai koordinat terpisah. Untuk tujuan penjelasan ini, format berikut akan digunakan:
######## # = wall ######## x = initial location ## x ## ## ## ######## ## ## ######## ########
Output adalah salinan dari grid input dengan hasil knight-fill ditambahkan
Isi Anda tidak boleh dalam "warna" yang sama dengan ruang atau dinding, tetapi bisa sama dengan penanda lokasi awal. Misalnya diberikan gambar di atas, output yang valid adalah:
######## # = wall ######## @ = fill (could also have been x) ## @ @## ## @ @## ######## ##@ @ ## ######## ########
Anda dapat mengasumsikan bahwa kisi input akan selalu berisi dinding 2 sel di semua sisi
- Anda mungkin berasumsi bahwa lokasi awal tidak akan pernah ada di dalam tembok
- Anda dapat berasumsi bahwa kisi tidak akan pernah lebih besar dari 1000x1000
- Builtin baik-baik saja
- Kode terpendek (dalam byte) menang
Uji Kasus
Dalam semua kasus uji, #
menunjukkan dinding, menunjukkan ruang kosong, dan
x
menunjukkan lokasi awal pengisian. @
menunjukkan isi keluaran.
Input 1:
########
########
## x ##
## ##
########
## ##
########
########
Output 1:
########
########
## @ @##
## @ @##
########
##@ @ ##
########
########
Input 2:
############
############
## ## x##
## ## ##
##### ##
## ##
############
############
Output 2:
############
############
## ##@@@@@##
##@##@@@@@##
#####@@@@@##
## @@@@@@@##
############
############
Input 3:
####################
####################
## ## ##
## ## ##
## ## ######## ##
## ## ######## ##
## ## ## ## ##
## ## ## ## ##
## ## ## ## ##
## ## ## ## ##
## ## ######## ##
## ## ######## ##
## ## ## ##
## ## x## ##
## ############ ##
## ############ ##
## ##
## ##
####################
####################
Output 3:
####################
####################
##@@##@@@@@@@@@@@@##
##@@##@@@@@@@@@@@@##
##@@##@@########@@##
##@@##@@########@@##
##@@##@@## ##@@##
##@@##@@## ##@@##
##@@##@@## ##@@##
##@@##@@## ##@@##
##@@##@@########@@##
##@@##@@########@@##
##@@##@@@@@@@@##@@##
##@@##@@@@@@@@##@@##
##@@############@@##
##@@############@@##
##@@@@@@@@@@@@@@@@##
##@@@@@@@@@@@@@@@@##
####################
####################
Input 4:
################
################
## ###
## x ###
## ####### ###
## ####### ###
## ## ## ###
## ## ## ###
## ## ## ###
## ######## ##
## ######## ##
## ## ##
## ## ##
################
################
Output 4:
################
################
## @ @ ###
## @ @ @ ###
## ####### ###
##@ ####### @###
## ## ## ###
## @## ##@ ###
## ## ## ###
##@ ########@ ##
## ######## ##
## @ @ ## @##
## @ @## ##
################
################
Input 5:
##############
##############
## ###
## ###
## ###
## ### ###
## #x# ###
## ### ###
## ###
## ###
## ###
##############
##############
Output 5:
##############
##############
##@@@@@@@@@###
##@@@@@@@@@###
##@@@@@@@@@###
##@@@###@@@###
##@@@#@#@@@###
##@@@###@@@###
##@@@@@@@@@###
##@@@@@@@@@###
##@@@@@@@@@###
##############
##############
Jawaban:
Oktaf, 73 byte
Demo online!
* Beberapa perubahan diterapkan untuk dijalankan di rextester.
Fungsi yang mengambil larik 2d 0 & 2 sebagai dinding dan larik 0 & 1 sebagai lokasi awal dan menghasilkan larik 0 & 1 & 2.
sumber
pkg load ...
saat dijalankan di luar kerangka uji? Jikaimdilate
&de2bi
tersedia tanpa impor eksplisit maka itu tidak masalah.-auto
dihapus, itu tidak masalah, dan saya menduga jawaban ini tidak menggunakan fitur baru.JavaScript (ES6), 116 byte
Berdasarkan jawaban saya untuk Mendeteksi Kastil Gagal . Mengisi menggunakan
x
s.sumber
Python 3 ,
394 387 381 356 352 347 319 313 154139 byteexcept:0
try: except
blok dan beberapa golf lainnyag[(a,b)]
hanyag[a,b]
Cobalah online!
sumber
except:pass
?except:0
Mathematica, 117 byte
Kisah yang biasa: built-in yang kuat tetapi nama panjang ...
Cobalah di kotak pasir Wolfram!
Dibutuhkan dua input: pertama adalah kisi input sebagai larik
0
s (untuk dinding) dan1
s (untuk spasi), kemudian bilangan bulat tunggal untuk posisi awal, ditemukan dengan memberi nomor kisi di sepanjang baris dari atas ke bawah, misalnyaAnda dapat memanggil fungsi seperti
HighlightGraph[...~Prepend~h]&[{{0,0,...,0}, {0,0,...,0}, ..., {0,0,...,0}}, 20]
.The
KnightTourGraph
Fungsi membangun grafik dengan simpul sesuai dengan posisi di grid dan tepi sesuai dengan bergerak ksatria valid, maka kita mengambilSubgraph
dari simpul yang tidak dinding, dan menemukanConnectedComponents
satu titik awal. Outputnya adalah grafik (ditunjukkan diputar 90º berlawanan arah jarum jam) dengan simpul non-dinding disorot merah, dan simpul yang diisi disorot kuning. Misalnya, untuk kasus uji pertama, hasilnya terlihat seperti:sumber
f=...
f[{0,...,0;0,...,0}, 19]
dan sejenisnya telah gagal total.HighlightGraph[g,ConnectedComponents[h=Subgraph[g=KnightTourGraph@@Dimensions@#,Flatten@#~Position~1],#2]~Prepend~h]&[{{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,1,1,1,1,0,0},{0,0,1,1,1,1,0,0},{0,0,0,0,0,0,0,0},{0,0,1,1,1,1,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0}},20]
(untuk kasus uji pertama). Saya telah mengeditnya dalam pertanyaan - maaf tidak ada di sana untuk memulai!