Tantangan
Diberi matriks bilangan bulat positif, tentukan apakah ada "cincin" gunung. Definisi formal untuk tantangan ini adalah: diberi matriks bilangan bulat positif, apakah ada bilangan bulat positif n
yang ada cincin sel tertutup dalam matriks yang benar-benar lebih besar dari n
sehingga semua sel yang tertutup dalam cincin kurang dari atau sama dengan untuk n
.
Mari kita ambil contoh yang benar:
3 4 5 3
3 1 2 3
4 2 1 3
4 3 6 5
Jika kita mengatur n
ke 2
:
1 1 1 1
1 0 0 1
1 0 0 1
1 1 1 1
Seperti yang dapat kita lihat dengan jelas, 1
garis tepi sepanjang membentuk cincin.
Kami mendefinisikan cincin sebagai kumpulan sel yang terurut di mana sel-sel yang berdekatan dalam koleksi juga berdekatan (tepi atau sudut) pada kisi. Selain itu, cincin harus mengandung setidaknya 1 sel di dalamnya; yaitu, mencoba melakukan edge-only BFS-flofill seluruh matriks tidak termasuk sel dalam koleksi dan tidak pernah melintasi sel dalam koleksi harus kehilangan setidaknya satu sel.
Kasus Uji Kebenaran
4 7 6 5 8 -> 1 1 1 1 1
6 2 3 1 5 -> 1 0 0 0 1 (n = 3)
6 3 2 1 5 -> 1 0 0 0 1
7 5 7 8 6 -> 1 1 1 1 1
1 3 2 3 2
1 6 5 7 2
1 7 3 7 4
1 6 8 4 6
1 3 1
3 1 3
1 3 1
7 5 8 7 5 7 8 -> if you have n = 4, you get an interesting ridge shape around the top and right of the grid
8 4 4 2 4 2 7
6 1 8 8 7 2 7
5 4 7 2 5 3 5
5 6 5 1 6 4 5
3 2 3 2 7 4 8
4 4 6 7 7 2 5
3 2 8 2 2 2 8
2 4 8 8 6 8 8
5 7 6 8 6 8 7 -> there is an island in the outer ring (n = 4), but the island is a ring
5 3 2 4 2 4 7
6 3 7 8 5 1 5
8 2 5 2 8 2 7
8 3 8 8 8 4 7
6 1 4 1 1 2 8
5 5 5 5 7 8 7
150 170 150
170 160 170
150 170 150
Kasus Uji Falsy
1 2 3 2 1 -> this is just a single mountain if you picture it graphcially
2 3 4 3 2
3 4 5 4 3
2 3 4 3 2
1 2 3 2 1
4 5 4 3 2 -> this is an off-centered mountain
5 6 5 4 3
4 5 4 3 2
3 4 3 2 1
1 1 1 1 1 -> this is four mountains, but they don't join together to form a ring
1 2 1 2 1
1 1 1 1 1
1 2 1 2 1
1 1 1 1 1
3 3 3 3 3 -> there is a ring formed by the `3`s, but the `4` in the middle is taller so it doesn't qualify as a mountain ring
3 1 1 1 3
3 1 4 1 3
3 1 1 1 3
3 3 3 3 3
3 4 4 4 3
4 4 3 4 4
3 3 3 3 4
4 4 3 4 4
3 4 4 4 3
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
22 23 24 25 26
Aturan
- Celah Standar Berlaku
- Ini adalah kode-golf , jadi jawaban terpendek dalam byte di setiap bahasa dinyatakan sebagai pemenang bahasa. Tidak ada jawaban yang akan diterima.
- Input dapat diambil sebagai bentuk yang masuk akal untuk matriks bilangan bulat positif
- Keluaran dapat diberikan sebagai dua nilai wajar, konsisten, berbeda yang menunjukkan [benar] atau [salah].
sumber
n
kasus uji "kebenaran" ketiga apakah sebenarnya benar? [1,2] ?Jawaban:
Jelly , 38 byte
Cobalah online!
Output 1 jika matriks berisi rentang gunung, 0 sebaliknya.
Cara kerjanya (agak ketinggalan jaman)
Saya mungkin dapat mempersingkat kode sedikit, jadi bagian ini mungkin akan mengalami pengeditan berat.
Tautan pembantu
Misalnya diberi matriks dalam bentuk:
Ini mengembalikan array (urutannya tidak masalah):
Singkat cerita, ini menghasilkan baris dan kolom terluar, dengan sudut dihapus.
Tautan utama
sumber
Bersihkan ,
224... 161 byteCobalah online!
Menentukan fungsi
? :: [[Int]] -> Int
, mengembalikan0
jika ada dering, dan1
sebaliknya.Bekerja dengan mengubah matriks menjadi
2
s untuk gunung dan0
s untuk lembah, lalu banjir dengan1
s sampai hasilnya berhenti berubah. Jika ada0
yang masih ada untuk ketinggian gunung apa pun, produk akan menjadi0
.sumber
JavaScript (Node.js) , 302 byte
Cobalah online!
Cek apakah mengalir dari suatu titik tidak dapat mencapai perbatasan, sementara perbatasan dapat berjalan ke setiap titik
sumber