Giriş
Çok fazla ASCII kayacım var. Çizgiler, borular, V'ler, şaryolar, köşeli parantezler, eğik çizgiler ve boşluklarla inşa edilmiştir. Misal:
/--\
| |
| |
\--/
Onları aşındırmak istiyorum, şöyle:
/\
/ \
\ /
\/
Tüm köşeler daha yuvarlak hale geldi. Daha karmaşık bir örnek:
/----\
| \------\
| |
| |
\------------/
/--\
/ \------\
| \
\ /
\----------/
Başka bir erozyondan sonra,
/\
/ \------\
< \
\ /
\--------/
Ve başka:
/\------\
< \
\ /
\------/
Meydan okuma
Zorluk, bir kez girdiyi aşındıracak bir program yazmaktır. Sadece bir kaya olduğunu ve bir kapalı döngü olduğunu varsayabilirsiniz. Giriş yalnızca karakterleri içerecek /\ -| <> ^V \n
ve dikdörtgen oluşturmak için arka boşluklara sahip olacaktır. Program ya STDIN'den girdi alabilir ve STDOUT'a çıktı verebilir ya da bir fonksiyon olabilir. Her satırın sonunda bir satırsonu karakteri bulunur. Erozyon aşağıda belirtilen kurallara uymalıdır (Not: kayada tamamlanmayan örneklerde, bu açıklama kolaylığı içindir). Çıktı, girdi ile aynı formatta ve girdi ile aynı boyutta olmalıdır. Ancak, sondaki boşluklar atlanabilir.
Eğik çizgiler boru hatlarına ve kesiklere yayılacak ve üzerinden geçecektir.
/---
|
|
/--
/
|
/-
/
/
İki eğik çizgi birlikte birleşirse, uygun karakter <>^V
kullanılmaz.
/-----\
| |
| |
| |
\-----/
/---\
/ \
| |
\ /
\---/
/-\
/ \
< >
\ /
\-/
^
/ \
< >
\ /
V
Kayanın bir kısmı birleşebiliyorsa, kayacak. Not: bir parça birleştirilebiliyor ancak diğeri (örneğin, örneğin /\
ikinci satırında) birleştirilemiyorsa, birleştirilebilecek kısım (örneğe bakın).
/\
/\-^-/\-/ \--
|
<
|
/
\
|
/
/
\
\
|
|
/-------/\--
/
|
|
|
|
|
|
/
\
|
|
|
Sonunda, tüm kayalar hiçbir şey olmayacak.
<> ^ /\
V \/
Test senaryoları
Test 1:
/----\
| \------\
| |
| |
\------------/
/--\
/ \------\
| \
\ /
\----------/
/\
/ \------\
< \
\ /
\--------/
/\------\
< \
\ /
\------/
/-----\
< \
\ /
\----/
/---\
< \
\ /
\--/
/-\
< \
\ /
\/
^
< \
\/
Test 2:
/----\
| |
| |
| |
| |
\----/
/--\
/ \
| |
| |
\ /
\--/
/\
/ \
/ \
\ /
\ /
\/
/\
/ \
\ /
\/
/\
\/
Test 3:
^ /\
/\--/\--/ \--/ \-\
\ |
| |
/ |
\ |
| |
| |
/ |
< |
\ |
| |
| |
/ |
/ |
\ |
\-----------------/
/-------^----/\-\
/ \
| |
| |
| |
| |
| |
| |
< |
| |
| |
| |
| |
/ |
\ /
\---------------/
/-------------\
/ \
/ \
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
\ /
\ /
\-------------/
/-----------\
/ \
/ \
/ \
| |
| |
| |
| |
| |
| |
| |
| |
\ /
\ /
\ /
\-----------/
/---------\
/ \
/ \
/ \
/ \
| |
| |
| |
| |
| |
| |
\ /
\ /
\ /
\ /
\---------/
/-------\
/ \
/ \
/ \
/ \
/ \
| |
| |
| |
| |
\ /
\ /
\ /
\ /
\ /
\-------/
/-----\
/ \
/ \
/ \
/ \
/ \
/ \
| |
| |
\ /
\ /
\ /
\ /
\ /
\ /
\-----/
/---\
/ \
/ \
/ \
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
\ /
\ /
\ /
\---/
/-\
/ \
/ \
/ \
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
\ /
\ /
\ /
\-/
^
/ \
/ \
/ \
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
\ /
\ /
\ /
V
^
/ \
/ \
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
\ /
\ /
V
^
/ \
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
\ /
V
^
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
V
^
/ \
/ \
/ \
\ /
\ /
\ /
V
^
/ \
/ \
\ /
\ /
V
^
/ \
\ /
V
^
V
puanlama
Bu kod golf , bu yüzden en az bayt ile program kazanır!
Standart boşluklara izin verilmez.
"\x20\x20\x20\x20\x20\x20/\\\n/-\\\x20\x20/\x20\x20\\-\\\n|\x20\x20\\/\x20\x20\x20\x20\x20|\n\\---------/\n"