Fondo
Inspirado por la interpretación muy conveniente de Octave (y, por extensión, MATL) de las matrices de verdad / falsedad, Jelly obtuvo el átomo Ȧ (Octave- all all ).
Ȧ toma una matriz como entrada y devuelve 1 si la matriz no está vacía y no contiene el número 0 (entero, flotante o complejo) en ninguna parte de la estructura de árbol ; de lo contrario, devuelve 0 .
Por ejemplo, la matriz [[]] es verdadera porque no está vacía y no contiene ceros, pero [[0]] es falsa porque contiene un 0 en el nivel más interno.
Tarea
En el lenguaje de programación que elija, escriba un programa completo o una función que tome una matriz de enteros posiblemente vacía y posiblemente irregular como entrada e imprima o devuelva un valor verdadero o falso que indica si Ȧ devolvería 1 o 0 , respectivamente.
Su presentación debe cumplir con las siguientes reglas.
Los valores verdadero y falso deben ser consistentes para todas las entradas , es decir, todas las matrices para las cuales Ȧ devuelve 1 deben mapearse al mismo valor de verdad, y todas las matrices para las cuales Ȧ devuelve 0 deben mapearse al mismo valor de falsedad.
Dado que los programas completos solo pueden tomar representaciones de cadenas de matrices como entrada, esto está permitido. Sin embargo, debe utilizar la representación canocical de su idioma, tal como lo devuelve
repr
o similar.En particular, no puede suponer que el primer elemento de la matriz estará precedido por un espacio.
Si (y solo si) su lenguaje no puede representar matrices irregulares de forma nativa, puede tomar una representación en cadena de la entrada, utilizando la sintaxis canónica de cualquier lenguaje de programación preexistente.
Si su idioma tiene varias formas de representar matrices irregulares (por ejemplo, listas y tuplas), solo debe admitir una de ellas.
Si su idioma tiene incorporado un envío válido para este desafío, no puede usarlo en su respuesta . Todos los demás elementos integrados están permitidos.
Se le recomienda que publique respuestas utilizando tanto la manipulación de matrices como la de cadenas, incluso si una es significativamente más corta que la otra.
Se aplican todas las reglas estándar de código de golf .
¡Que gane el código más corto en bytes!
Casos de prueba de verdad
[1]
[10]
[[]]
[[[[1]]]]
[[], [1], [1, 2]]
[[1], [1, [2]], [1, [2, [3]]]]
[[8], [8, [9]], [8, [9, [10]]]]
Casos de prueba de falsa
[]
[0]
[0, -1]
[-1, 0]
[[[[0]]]]
[[0], [1, 2], [3, 4, 5]]
[[8], [8, [9]], [8, [9, [1, 0]]]]
[-1, 0, 0, 0]
Object
... mi favorito es Haskell, donde no lo es. Tampoco en C, al menos no de una manera que le permita mezclar matrices e ints de forma segura. Ambos lenguajes son perfectamente capaces de matrices irregulares, pero aún no pueden usarlos para este problema.