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.
fuente
1/4 5/2 3 6
válido?Respuestas:
Jalea , 20 bytes
Para triángulos de boleta válidos, el tiempo de ejecución y el uso de memoria son al menos O (n!) , Donde n es el número de entradas del triángulo. Los inválidos se reconocen al estrellarse, por lo que no imprimen nada.
Pruébalo en línea!
Prueba de funcionamiento
A nivel local, pude verificar que a (4) se calcula correctamente.
Cómo funciona
fuente
Brachylog , 44 bytes
Pruébalo en línea!
Esto se ejecuta en un tiempo doblemente exponencial, por lo que para casos de prueba verdaderos, necesitaría creerme que teóricamente produce el resultado correcto, para triángulos con una longitud mayor o igual a
3
.Aún puede hacer pruebas para detectar casos de prueba de falsey, que deberían terminar bastante rápido.
fuente
JavaScript (ES6), 143 bytes
Busca en el triángulo una entrada no válida y luego usa una formulación recursiva de la fórmula en OEIS para calcular el resultado.
fuente