Prelude adalah bahasa pemrograman esoterik, yang memiliki sangat sedikit, tetapi tidak biasa, pembatasan pada apa yang merupakan program yang valid. Setiap blok teks ASCII yang dapat dicetak ("blok" yang berarti bahwa garis ASCII yang dapat dicetak dipisahkan oleh baris baru - 0x0A) valid dengan ketentuan bahwa:
- Setiap kolom teks (vertikal) paling banyak berisi satu
(
dan)
. - Mengabaikan posisi vertikal mereka,
(
dan)
seimbang, yaitu masing(
- masing dipasangkan dengan tepat)
di sebelah kanannya, dan sebaliknya.
Tulis program atau fungsi yang, jika diberi string berisi ASCII yang dapat dicetak dan baris baru, menentukan apakah itu merupakan program Prelude yang valid. Anda dapat mengambil input melalui STDIN (atau alternatif terdekat), argumen baris perintah atau argumen fungsi. Hasilnya dapat dikembalikan atau dicetak ke STDOUT, menggunakan dua nilai kebenaran / kepalsuan tetap pilihan Anda.
Anda tidak boleh berasumsi bahwa input berbentuk persegi panjang.
Ini adalah kode golf, jadi pengiriman terpendek (dalam byte) menang.
Contohnya
Berikut ini adalah program Prelude yang valid (pada kenyataannya, mereka bahkan merupakan program Prelude yang nyata ):
?1-(v #1)-
1 0v ^(# 0)(1+0)#)!
(#) ^#1-(0 #
1(# 1) v # - 1+)
vv (##^v^+
? v-(0 # ^ #)
?
1+ 1-!
Dan di sini ada sejumlah input, yang semuanya tidak valid :
#(#(##)##)##(
)##(##(##)#)#
#(#)
)###
#(##
(##)
(##)
(#)#
(##)
(###
#(#)
(##)
#(#)
###)
#()#
()##
#(#)##
###
###(#)
)
dan 2 (
. Bukankah seharusnya hanya 1 per baris?