Un numero di scrutinio , che etichettiamo con B , è il numero di modi per disporre i numeri da 1 a B (B + 1) / 2 in un triangolo, in modo tale che ogni riga e colonna sia in ordine crescente. I primi quattro numeri di scrutinio sono:
a(0) = 1
a(1) = 1
a(2) = 1
a(3) = 2
a(3)
è 2, il che significa che ci sono 2 modi per disporre i numeri da 1 a 3(3+1)/2 = 6
in un triangolo del genere:
1 1
2 3 or 2 4
4 5 6 3 5 6
Vedere la voce della sequenza OEIS per maggiori dettagli.
La tua sfida, dato un triangolo di scrutinio, è di verificarne la correttezza. Se soddisfa le condizioni di un triangolo di scrutinio (righe e colonne in aumento), dovresti generare quanti altri modi (escluso quello nell'input) ci sono per disporre correttamente il triangolo. Se il triangolo di input non è stato costruito correttamente, non si dovrebbe produrre nulla.
Sono consentite nuove righe finali.
Ingresso
Un triangolo di numeri, che può essere o meno un triangolo di scrutinio valido. Per esempio:
1
2 3
4 5 6
1
10 5
9 8 2
7 6 4 3
1
3 2
9
2 11
14 3 5
12 8 1 7
15 13 10 4 6
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
16 17 18 19 20 21
Produzione
Se l'input è un triangolo di voto valido, il numero rimanente di modi per disporre gli stessi numeri in un triangolo di voto valido. Se l'input non è un triangolo di scrutinio valido, niente. Ad esempio, gli input sopra generano questi output ( <nothing>
è un segnaposto per un output vuoto effettivo):
1 # the same as a(3)-1
<nothing>
<nothing>
<nothing>
33591 # the same as a(6)-1
punteggio
Questo è code-golf : come al solito, vince il conteggio dei byte più basso. Tiebreaker viene pubblicato per la prima volta.
1/4 5/2 3 6
valido?