Prelude es un lenguaje de programación esotérico, que tiene muy pocas, pero inusuales, restricciones sobre lo que constituye un programa válido. Cualquier bloque de texto ASCII imprimible ("bloque" significa que las líneas de ASCII imprimibles están separadas por nuevas líneas - 0x0A) es válido siempre que:
- Cada columna de texto (vertical) contiene como máximo uno de
(
y)
. - Ignorando su posición vertical, los
(
y)
están equilibrados, es decir, cada uno(
está emparejado con exactamente uno)
a la derecha de la misma, y viceversa.
Escriba un programa o función que, dada una cadena que contenga ASCII imprimible y líneas nuevas, determine si constituye un programa Prelude válido. Puede recibir información a través de STDIN (o la alternativa más cercana), argumento de línea de comando o argumento de función. El resultado puede devolverse o imprimirse a STDOUT, utilizando cualquiera de los dos valores de verdad / falsedad fijos que elija.
Debe no asume que la entrada es rectangular.
Este es el código de golf, por lo que gana el envío más corto (en bytes).
Ejemplos
Los siguientes son programas Prelude válidos (de hecho, incluso son programas Prelude reales ):
?1-(v #1)-
1 0v ^(# 0)(1+0)#)!
(#) ^#1-(0 #
1(# 1) v # - 1+)
vv (##^v^+
? v-(0 # ^ #)
?
1+ 1-!
Y aquí hay una serie de entradas, todas las cuales no son válidas :
#(#(##)##)##(
)##(##(##)#)#
#(#)
)###
#(##
(##)
(##)
(#)#
(##)
(###
#(#)
(##)
#(#)
###)
#()#
()##
#(#)##
###
###(#)
)
y 2 (
. ¿No debería ser solo 1 por línea?