W genişliğinde H yüksek metin ızgarasında , eğrinin bir bölümünü temsil eden ve boş alanı temsil eden ve başka hiçbir karakter kullanılmayan basit , açık , iki boyutlu bir eğri tasvir etmeyi düşünün .X
.
Her ızgara alanında 8 komşu ızgara alanı, Moore mahallesi var . Sınırların ötesindeki ızgara boşlukları boş kabul edilir.
Bir ızgarada tam olarak bir VEYA varsa birden fazla varsa bir eğri bulunur :X
X
- Tam olarak iki
X
s sadece bir komşusu vardırX
. Bunlar eğrinin uç noktalarıdır. - Her
X
bitiş noktaları komşuları tam iki yanındaX
s. Bunlar eğrinin büyük kısmını oluşturur.
Örneğin, W = 9 ve H = 4 olan bu ızgara bir eğri içerir:
....X.... .X.X.X.X. X..X..X.X .XX.....X
Benzer şekilde, bu ızgaraların (W = 4, H = 3) eğrileri vardır:
.... .X.. .... .... .X.X .... X..X ..X. XX.. X.X. ..X. .XX. .X.. .... ....
Ancak bu ızgaralar bir eğri içermez:
.... .XX. ...X XX.. .... X.X. .... X..X ..XX XX.. .X.X .X.. .... .XX. .X.. .... ...X X.X.
Komşu tüm X
s çiftleri arasındaki mesafeleri toplayarak bir eğrinin uzunluğunu bulabiliriz :
İki dikey komşu
X
s arasındaki mesafe 1 birimdir.XX
X X
Çapraz olarak komşu iki
X
s arasındaki mesafe √2 birimdir.X. .X
.X X.
Örneğin, ızgaradaki eğrinin uzunluğu
XXX. ...X ..X.
olarak görselleştirilebilir
yani 1 + 1 + √2 + √2 = 4.828427 olduğunu görebiliriz ...
Tek bir eğrinin uzunluğu X
sıfırdır.
Izgara bir eğri oluşturmadığında uzunluğu iyi tanımlanmamıştır.
Meydan okuma
X
S ve .
s metninden oluşan bir ızgara göz önüne alındığında , içerdiği eğrinin uzunluğunu çıktılar -1
veya Null
ızgarada eğri olmadığını belirtmek için veya gibi bir şey çıktılar .
Giriş için istenirse X
ve dışında başka karakterler kullanabilirsiniz ve .
gerekirse H ve W giriş olarak alınabilir. Dize yerine 1s ve 0s ile dolu iç içe liste veya matris olarak giriş de iyidir.
Eğri uzunluğu için bir şamandıra veya alternatif olarak iki A ve B tamsayısı çıktısı alabilirsiniz length = A + B*√2
.
Bayt cinsinden en kısa kod kazanır.
Test Durumları
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.]
geçerli bir eğri değil, değil mi?