RoboCritters ( etimoloji ) yepyeni bir ezoterik programlama dilidir (aramayı zahmet etmeyin, sadece icat ettim). Bu , normal operatör ikame programlarından biraz daha karmaşık olan bir Brainfuck (BF) çeşididir . RoboCritters'daki her program, yalnızca yedi karakteri ve ızgarayı şekillendirmek için yeni satırları içeren dikdörtgen bir metin ızgarasıdır.. []/\|
Örnek RoboCritters programı:
|\/||./|[]||
[..][][] |
|/\|[..][..]
[..] \/\/
Bir RoboCritters programını BF'ye çevirmek için, ızgaradaki yeni satır olmayan her karaktere normal okuma sırasında (soldan sağa, yukarıdan aşağıya) bakın, örn |\/||./|[]||[..][][] ||/\|[..][..][..] \/\/
.
Geçerli karakterden sağa ve aşağı doğru uzanan ızgaranın 4 × 2 bölümü, aşağıda listelenen sekiz robot yaratıkla tam olarak eşleşiyorsa , ilgili BF komutunu ( ><+-.,[]
) (başlangıçta boş) BF programına ekleyin .
4 × 2 ızgara bölümü robot yaratıklarının hiçbiriyle eşleşmezse veya sınırların dışına çıkarsa , BF programına hiçbir şey eklenmez.
Joybot,
>
komut:[..] \][/
Calmbot,
<
komut:[..] /][\
Squidbot,
+
komut:[..] //\\
Spiderbot,
-
komut:[..] ||||
Bunnybot,
.
komut:[][] [..]
Toothbot,
,
komut:[..] |/\|
Foxbot,
[
komut:|\/| [..]
Batbot,
]
komut:[..] \/\/
Yani, örnek programı okumak
|\/||./|[]||
[..][][] |
|/\|[..][..]
[..] \/\/
önce bir Foxbot (sütun 1, satır 1'de), sonra bir Toothbot (c1, r2), sonra bir Bunnybot (c5, r2) ve son olarak bir Batbot (c9, r3) ile karşılaştığımızı görebiliriz. Bu, BF programına karşılık gelir [,.]
.
Foxbot ve Toothbot'un üst üste geldiğine dikkat edin. Bu kasıtlıdır; robot yaratıkları örtüştüklerinde farklı yorumlanmazlar .
Meydan okuma
Bir RoboCritters programında yer alan ve BF eşdeğerini veren mümkün olan en kısa programı yazın. BF'yi çalıştırmanız veya geçerli olup olmadığını kontrol etmeniz gerekmez, sadece RoboCritters kodunu BF koduna çevirin.
ayrıntılar
Tüm giriş RoboCritters programları geçerli olacak, yani sadece yedi karakteri içeren tam olarak dikdörtgen bir metin bloğu ve
. []/\|
onu şekillendirmek için yeni satırlar olacaklar . Yeni satırlar herhangi bir uygun ortak sunumda olabilir . İsteğe bağlı olarak, programların tek bir son satırsonu olduğunu varsayabilirsiniz.0 × 0 boş (veya tek satırsonu) programı dahil, 4 × 2'den küçük RoboCritters programlarını desteklemelisiniz. Bunların hepsi boş BF programına (boş dize) karşılık gelir.
Çıktı BF programı yalnızca sekiz BF komut karakterini içeren tek satırlık bir dize olmalıdır
><+-.,[]
. İsteğe bağlı olarak tek bir son satır olabilir.Girişi normal şekilde alın (stdin / metin dosyası / komut satırı) ve stdout'a veya dilinizin en yakın alternatifine çıktı alın.
Bir program yerine, RoboCritters programını dize olarak alan ve BF program dizesini yazdıran veya döndüren bir işlev yazabilirsiniz.
Örnekler
Girdi: (yukarıdaki örnek varyantı)
|\/|[][] [..][][] |/\|[..] \/\/
Çıktı:
[,.]
Girdi: (tüm robot yaratıklarını test eder)
[..][[[[[..]]. ]|\/| \][/[..]//\\[..][..] [..]/][\[][]|/\|[..] ||||/\| [..]| |\/\/
Çıktı:
>+[<,-.]
Giriş:
[..] [..] [..] [..] [..] [..] [..] [..] |\/| [..] [..] [..] [..] [..] |\/| [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] |\/| [..] [..] [..] [..] [..] [..] [..] [][] [..] [..] [..] [..] [][] [..] [..] [..] [..] [..] [..] [..] [][] [][] [..] [..] [..] [][] [..] [..] [][] [..] [..] [][] [..] [][] [..] [..] [..] [][] [..] [..] [..] [..] [..] [..] [][] [..] [..] [..] [..] [..] [..] [..] [..] [][] [..] [..] [..] [][] [..] [..] [..] [][] //\\ //\\ //\\ //\\ //\\ //\\ //\\ //\\ [..] \][/ //\\ //\\ //\\ //\\ [..] \][/ //\\ //\\ \][/ //\\ //\\ //\\ \][/ //\\ //\\ //\\ \][/ //\\ /][\ /][\ /][\ /][\ |||| \/\/ \][/ //\\ \][/ //\\ \][/ |||| \][/ \][/ //\\ [..] /][\ \/\/ /][\ |||| \/\/ \][/ \][/ [..] \][/ |||| |||| |||| [..] //\\ //\\ //\\ //\\ //\\ //\\ //\\ [..] [..] //\\ //\\ //\\ [..] \][/ \][/ [..] /][\ |||| [..] /][\ [..] //\\ //\\ //\\ [..] |||| |||| |||| |||| |||| |||| [..] |||| |||| |||| |||| |||| |||| |||| |||| [..] \][/ \][/ //\\ [..] \][/ //\\ //\\ [..]
Çıktı: ( BF Hello World programı )
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
Girdi: (robot yaratık yok)
/\\\[]. ]..[..] \\//||\
Çıktı: (boş dize)
puanlama
Bayt cinsinden en kısa gönderim kazanır. ( Handy byte counter. ) Tiebreaker en yüksek oy alan yazı.