Pertimbangkan untuk menggambarkan kurva dua dimensi yang sederhana , terbuka , pada W lebar dengan H grid teks tinggi di mana Xmerupakan bagian dari kurva dan .mewakili ruang kosong dan tidak ada karakter lain yang digunakan.
Setiap ruang grid memiliki 8 ruang grid tetangga, lingkungan Moore -nya . Ruang kotak di luar batas dianggap kosong.
Kotak berisi kurva jika memiliki tepat satu X ATAU jika memiliki lebih dari satu Xtempat:
- Tepatnya dua
Xs hanya memiliki satu tetanggaX. Ini adalah titik akhir kurva. - Setiap
Xselain titik akhir tetangga tepat duaXs. Ini membentuk sebagian besar kurva.
Misalnya, kisi ini di mana W = 9 dan H = 4 berisi kurva:
....X.... .X.X.X.X. X..X..X.X .XX.....XDemikian juga, kisi-kisi ini (W = 4, H = 3) memiliki kurva:
.... .X.. .... .... .X.X .... X..X ..X. XX.. X.X. ..X. .XX. .X.. .... ....Namun kisi-kisi ini tidak mengandung kurva:
.... .XX. ...X XX.. .... X.X. .... X..X ..XX XX.. .X.X .X.. .... .XX. .X.. .... ...X X.X.
Kita dapat menemukan panjang kurva dengan menjumlahkan jarak antara semua pasangan tetangga Xs:
Jarak antara dua
Xs yang bertetangga secara orthogonal adalah 1 unit.XXX XJarak antara dua
Xs diagonal yang bersebelahan adalah √2 unit.X. .X.X X.
Misalnya panjang kurva di kisi
XXX. ...X ..X.dapat divisualisasikan sebagai
jadi kita bisa melihatnya 1 + 1 + √2 + √2 = 4.828427 ...
Panjang kurva dengan hanya satu Xadalah nol.
Ketika kisi tidak membentuk kurva, panjangnya tidak didefinisikan dengan baik.
Tantangan
Diberi kisi-kisi teks Xs dan .s, mengeluarkan panjang kurva yang dikandungnya, atau menampilkan sesuatu seperti -1atau Nulluntuk menunjukkan kisi tidak memiliki kurva.
Untuk input Anda dapat menggunakan karakter lain selain Xdan .jika diinginkan, dan H dan W dapat diambil sebagai input jika diperlukan. Input sebagai daftar bersarang atau matriks diisi dengan 1s dan 0s sebagai ganti string juga baik-baik saja.
Anda dapat menampilkan pelampung untuk panjang kurva atau alternatif dua bilangan bulat A dan B di mana length = A + B*√2.
Kode terpendek dalam byte menang.
Uji Kasus
XXX.
...X
..X.
2 + 2*√2 = 4.828427...
....X....
.X.X.X.X.
X..X..X.X
.XX.....X
3 + 8*√2 = 14.313708...
....
....
..X.
0 + 0*√2 = 0
.X..
X..X
.XX.
1 + 3*√2 = 5.242640...
....
..X.
.X..
0 + 1*√2 = 1.414213...
....
XX..
....
1 + 0*√2 = 1
.X.X
X.X.
....
0 + 3*√2 = 4.242640...
....
....
....
....
-1
.XX.
X..X
.XX.
-1
...X
..XX
.X..
-1
....
.X.X
...X
-1
X.X.
.X..
X.X.
-1
[x.x,...,.x.]bukan kurva yang valid, bukan?
