O prelúdio é uma linguagem de programação esotérica, com poucas restrições, mas incomuns, sobre o que constitui um programa válido. Qualquer bloco de texto ASCII imprimível ("bloco" significa que as linhas de ASCII imprimíveis são separadas por novas linhas - 0x0A) é válido desde que:
- Cada coluna (vertical) de texto contém no máximo um de
(
e)
. - Ignorando sua posição vertical,
(
e)
são equilibradas, ou seja, cada uma(
é emparelhada com exatamente uma)
à direita e vice-versa.
Escreva um programa ou função que, dada uma sequência contendo ASCII imprimível e novas linhas, determine se constitui um programa Prelude válido. Você pode receber informações via STDIN (ou alternativa mais próxima), argumento de linha de comando ou argumento de função. O resultado pode ser retornado ou impresso em STDOUT, usando quaisquer dois valores fixos de verdade / falsidade de sua escolha.
Você não deve assumir que a entrada é retangular.
Isso é código de golfe, então a submissão mais curta (em bytes) vence.
Exemplos
A seguir, são apresentados os programas Prelude válidos (na verdade, são mesmo programas Prelude reais ):
?1-(v #1)-
1 0v ^(# 0)(1+0)#)!
(#) ^#1-(0 #
1(# 1) v # - 1+)
vv (##^v^+
? v-(0 # ^ #)
?
1+ 1-!
E aqui estão algumas entradas, todas inválidas :
#(#(##)##)##(
)##(##(##)#)#
#(#)
)###
#(##
(##)
(##)
(#)#
(##)
(###
#(#)
(##)
#(#)
###)
#()#
()##
#(#)##
###
###(#)
)
e 2 (
. Não deveria ser apenas 1 por linha?