Seviyorum> <>,> <> hayattır! 2D diller inanılmaz! Bu meydan okuma, kod golf yaparken bir "balık" yolun sonu olup olmadığını söylemek gerekir.
Tanım
Aşağıdakiler de dahil olmak üzere karolarla balıklı bir yol yapılır:
v (go down)
> (go right)
^ (go up)
< (go left)
/ (mirror)
\ (mirror)
-|+
Yolun kenarındaki bazı çiçekler (veya balık kafaları) gibi başka herhangi bir karakter (hariç ) dikkat dağıtıcı olarak kabul edilebilir.
Her zaman dikdörtgen bir ızgaranın sol üst köşesinde -|+
sembollerle sınırlandırılmış bir yol başlar . Yolun bir sonu vardır, eğer onu takip ederek, bir sınırda kalırsanız, aksi takdirde sonsuz bir yolda sıkışıp kalırsınız.
Yolda yolunuzu bulmak, yol tarifleri v>^<
ve aynalar takip edilerek gerçekleştirilir . Bir ayna nereden geldiğinize bağlı olarak 90 ° yansıtacaktır. Nasıl çalıştığı aşağıda ( v>^<
yol tariflerini göstermek için kullanarak ):
^ ^
>/< >\<
v v
</> <\>
^ ^
Bir yol biterse şu şekilde görünebilir:
+--------------------+
|>\/ this way >\/> | this one ends here
| v^ \/ |
| v^ ^.^ |
| \/\ >v |
| /\/ ^< |
+--------------------+
Sonsuz bir döngü:
+--------+
|>>\ This|
|\\ is |
| \\ a |
| \ /trap|
+--------+
Ayrıntılı Bilgiler
Bir yol mutlaka talimatlardan ibaret değildir. Boşlukları veya harfleri tamamlamak için kullanılabilir. Bu, bir karakteri geçmeniz durumu dışında aynı yönde ilerlemeye devam etmeniz gerektiği anlamına gelir <v^>-|
.
v>^<
Sol üst köşede her zaman biri olacaktır <
ya ^
da bu yolun bittiği anlamına gelir.
Bir dize parametre olarak alan bir işlevi veya STDIN / dilinizdeki en yakın alternatif olanı kullanarak bağımsız bir program gönderebilirsiniz.
Gönderiminiz tamamlandığında STDOUT gerçek / falsy değerlerine geri dönmeli veya yazdırmalıdır. Gerçek değerler yolun bir sonu olduğu anlamına gelirken, falsy ise sonsuz bir döngü olduğu anlamına gelir.
Test senaryoları
+--------------------+
|>\/ this way >\/> | this one ends here
| v^ \/ |
| v^ ^.^ |
| \/\ >v |
| /\/ ><> ^< |
+--------------------+
True
+--------+
|>>\ This|
|\\ is |
| \\ a |
| \ /trap|
+--------+
False
+--+
|<v|
|^<|
+--+
True
+--+
|>v|
|^<|
+--+
False
+----------+
|v Hello \ |
|\\/\/ / |
| \/\\ \ |
|/ // >\ |
| ^/\>\\/ |
|\ /\/\/ |
+----------+
False
+-----+
|>\/\\|
|//\\/|
|\/\\\|
|//\//|
|\/\/ |
+-----+
True
2 test cases added as suggested by @MartinBüttner
+----+
|v |
|\\ |
|//\ |
|\\v |
| \/ |
+----+
False
+----+
|v |
|\\ |
|//\ |
|\\^ |
| \/ |
+----+
False
Test case inspired by @ETHproductions
+-------------------------+
|><> |
|something smells fishy...|
+-------------------------+
False
Standart boşluklar yasaktır (her zamanki gibi).
Kazanan, bayt cinsinden en kısa koda sahip olan olacaktır. (bir> <> cevabı görmek harika olurdu :))