Un número de boleta , que etiquetaremos B , es el número de formas de organizar los números del 1 al B (B + 1) / 2 en un triángulo, de modo que cada fila y columna esté en un orden creciente. Los primeros cuatro números de boleta son:
a(0) = 1
a(1) = 1
a(2) = 1
a(3) = 2
a(3)
es 2, lo que significa que hay 2 formas de organizar los números del 1 al 3(3+1)/2 = 6
en ese triángulo:
1 1
2 3 or 2 4
4 5 6 3 5 6
Vea la entrada de secuencia OEIS para más detalles.
Su desafío, dado un triángulo electoral, es verificar su corrección. Si cumple las condiciones de un triángulo de votación (filas y columnas en aumento), debe indicar cuántas otras formas (excluyendo la de la entrada) hay para organizar el triángulo correctamente. Si el triángulo de entrada está construido incorrectamente, no debería generar nada.
Se permiten nuevas líneas al final.
Entrada
Un triángulo de números, que puede o no ser un triángulo de votación válido. Por ejemplo:
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
Salida
Si la entrada es un triángulo de boleta válido, el número restante de formas de organizar los mismos números en un triángulo de boleta válido. Si la entrada no es un triángulo de votación válido, nada. Por ejemplo, las entradas anteriores producen estas salidas ( <nothing>
es un marcador de posición para una salida vacía real):
1 # the same as a(3)-1
<nothing>
<nothing>
<nothing>
33591 # the same as a(6)-1
Puntuación
Este es el código de golf : como de costumbre, el conteo de bytes más bajo gana. Tiebreaker se publica más temprano.
1/4 5/2 3 6
válido?