En el triángulo de Pascal cada número es la suma de los dos números directamente encima de él, tratando los espacios vacíos como cero:
Al girar el triángulo, podemos cortar matrices cuadradas de diferentes tamaños y rotaciones que llamaré las matrices de Pascal . Tenga en cuenta que esas matrices siempre deben contener el superior . Aquí hay unos ejemplos:
1 1 1 1
1 2 3 4
1 3 6 10
1 4 10 20
6 3 1
3 2 1
1 1 1
1 5 15 35 70
1 4 10 20 35
1 3 6 10 15
1 2 3 4 5
1 1 1 1 1
1
1 1
2 1
La tarea
Dada una matriz cuadrada que contiene números positivos en cualquier formato razonable, decida si es una matriz de Pascal .
Decidir significa devolver valores verdaderos o falsos dependiendo de si la entrada es una matriz de Pascal , o fijar dos valores constantes y devolver uno para las entradas verdaderas y el otro para las entradas falsas.
Este es el código de golf , así que trate de usar la menor cantidad de bytes posible en el idioma que elija. El código más corto en cada idioma gana, por lo tanto no aceptaré una respuesta.
Casos de prueba
Cierto
[[1, 1, 1, 1], [1, 2, 3, 4], [1, 3, 6, 10], [1, 4, 10, 20]]
[[6, 3, 1], [3, 2, 1], [1, 1, 1]]
[[1, 5, 15, 35, 70], [1, 4, 10, 20, 35], [1, 3, 6, 10, 15], [1, 2, 3, 4, 5], [1, 1, 1, 1, 1]]
[[1]]
[[1, 1], [2, 1]]
Falso
[[2]]
[[1, 2], [2, 1]]
[[1, 1], [3, 1]]
[[1, 1, 1, 1], [1, 2, 3, 4], [1, 4, 6, 10], [1, 4, 10, 20]]
[[6, 3, 1], [1, 1, 1], [3, 2, 1]]
[[2, 2, 2, 2], [2, 4, 6, 8], [2, 6, 12, 20], [2, 8, 20, 40]]
[[40, 20, 8, 2], [20, 12, 6, 2], [8, 6, 4, 2], [2, 2, 2, 2]]
[[1, 5, 15, 34, 70], [1, 4, 10, 20, 34], [1, 3, 6, 10, 15], [1, 2, 3, 4, 5], [1, 1, 1, 1, 1]]
[[40, 20, 8, 2], [20, 12, 6, 2], [8, 6, 4, 2], [2, 2, 2, 2]]
. Mi respuesta inicial fue incorrectamente veraz para esta, pero correcta para todos los casos de prueba actuales.