Preludio è un linguaggio di programmazione esoterico, che ha pochissime, ma inusuali, restrizioni su ciò che costituisce un programma valido. Qualsiasi blocco di testo ASCII stampabile ("blocco" significa che le linee di ASCII stampabile sono separate da nuove righe - 0x0A) è valida a condizione che:
- Ogni colonna (verticale) di testo contiene al massimo uno di
(
e)
. - Ignorando la loro posizione verticale, i
(
e)
sono bilanciati, cioè ognuno(
è accoppiato esattamente con uno)
alla sua destra e viceversa.
Scrivi un programma o una funzione che, data una stringa contenente ASCII stampabile e newline, determina se costituisce un programma Prelude valido. È possibile accettare input tramite STDIN (o alternativa più vicina), argomento della riga di comando o argomento della funzione. Il risultato può essere restituito o stampato su STDOUT, utilizzando due valori di verità / falsa fissi di propria scelta.
È necessario non assume che l'ingresso è rettangolare.
Questo è il golf del codice, quindi vince l'invio più breve (in byte).
Esempi
I seguenti sono programmi Prelude validi (in realtà, sono anche veri programmi Prelude):
?1-(v #1)-
1 0v ^(# 0)(1+0)#)!
(#) ^#1-(0 #
1(# 1) v # - 1+)
vv (##^v^+
? v-(0 # ^ #)
?
1+ 1-!
E qui ci sono una serie di input, tutti non validi :
#(#(##)##)##(
)##(##(##)#)#
#(#)
)###
#(##
(##)
(##)
(#)#
(##)
(###
#(#)
(##)
#(#)
###)
#()#
()##
#(#)##
###
###(#)
)
e 2 (
. Non dovrebbe essere solo 1 per riga?