Tugas Anda adalah menemukan panjang garis pantai dari peta pulau yang disediakan dalam peta ASCII. Peta input akan terdiri dari 1 atau lebih #
karakter yang menunjukkan tanah, dan spasi yang menunjukkan air. Garis pantai dianggap sebagai batas antara daratan dan air, termasuk danau dan pulau di daratan.
Solusi Anda harus berupa program lengkap yang membaca dalam file, string atau array string, dan menampilkan bilangan bulat tunggal ke layar atau stdout. Setiap jalur input mungkin memiliki ruang awal atau akhir, dan nol atau lebih karakter hash. Batas-batas peta diasumsikan sebagai ruang (air).
Garis mungkin memiliki panjang yang berbeda.
Contoh:
Input:
##
##
Output: 8
Input:
### ###
##### #
##
Output: 26
Input:
#####
# #
# # #
# #
#####
Output: 36
Ini adalah kode golf, sehingga jumlah byte terkecil menang.
Jawaban:
Siput , 8 byte
The
A
pilihan berarti untuk menghitung semua jalur yang cocok bukan yang titik awal pertandingan berhasil dari.\#
mengkonsumsi a#
,o
berputar dalam arah mata angin, dan!\#
merupakan pernyataan negatif yang berhasil jika tidak ada#
di depan kita.sumber
Pyth -
2523 bytePertama-tama input pad ke persegi. Kemudian menghitung kemunculan
" #"
lebih dari 4 permutasi transposisi dan pembalikan ruang input +.Cobalah online di sini .
sumber
ES6,
123115114 byteSunting: Disimpan 9 byte berkat @ edc65.
sumber
a=>['',...a,''].map((s,i,a)=>s.replace(/#/g,(_,j)=>r+=(s[j-1]!=_)+(s[j+1]!=_)+(a[i-1][j]!=_)+(a[i+1][j]!=_)),r=0)|r
a=>a.map((s,i)=>s.replace(/#/g,(_,j)=>r+=(s[j-1]!=_)+(s[j+1]!=_)+((a[i-1]||'')[j]!=_)+((a[i+1]||'')[j]!=_)),r=0)|r
MATL , 42 byte
Ini menerima input sebagai larik sel string, dari formulir
Pertama-tama mengkonversi input ke array char 2D, padding dengan spasi, dan kemudian ke matriks nol dan satu. Konvolusi 2D kemudian diterapkan dua kali, dengan dua topeng yang berbeda: pertama untuk memperluas matriks, kedua untuk mendeteksi tepi.
Cobalah online!
sumber
Japt,
2219 byteMengasumsikan input diisi dengan spasi untuk membentuk persegi panjang. Uji secara online!
Bagaimana itu bekerja
sumber