fundo
Inspirado pela interpretação muito conveniente de Octave (e, por extensão, MATL) de matrizes de verdade / falsidade, Jelly obteve o átomo Ȧ ( tudo em estilo oitava ).
Ȧ pega uma matriz como entrada e retorna 1 se a matriz não estiver vazia e não contiver o número 0 (número inteiro, flutuante ou complexo) em qualquer lugar da estrutura da árvore ; caso contrário, ele retornará 0 .
Por exemplo, a matriz [[]] é verdadeira porque não está vazia e não contém zeros, mas [[0]] é falsa porque contém 0 no nível mais interno.
Tarefa
Em uma linguagem de programação de sua escolha, escreva um programa completo ou uma função que use uma matriz de números inteiros possivelmente vazia e possivelmente irregular como entrada e imprima ou retorne um valor verdadeiro ou falso que indica se return retornaria 1 ou 0 , respectivamente.
Seu envio deve obedecer às seguintes regras.
Os valores truthy e falsy devem ser consistentes para todas as entradas , ou seja, todas as matrizes para as quais Ȧ retorna 1 devem ser mapeadas para o mesmo valor de verdade e todas as matrizes para as quais Ȧ retorna 0 devem ser mapeadas para o mesmo valor de falsy.
Como os programas completos só podem receber representações de string de matrizes como entrada, isso é permitido. No entanto, você deve usar a representação canocical do seu idioma, retornada por
repr
ou similar.Em particular, você não pode assumir que o primeiro elemento da matriz será precedido por um espaço.
Se (e somente se) sua linguagem não puder representar matrizes irregulares nativamente, você poderá fazer uma representação em string da entrada, usando a sintaxe canônica de qualquer linguagem de programação pré-existente.
Se o seu idioma tiver várias maneiras de representar matrizes irregulares (por exemplo, listas e tuplas), você precisará apenas oferecer suporte a uma delas.
Se seu idioma possui um envio interno válido para esse desafio, você não pode usá-lo em sua resposta . Todos os outros built-ins são permitidos.
Você é encorajado a postar respostas usando a manipulação de array e string, mesmo que uma seja significativamente menor que a outra.
Todas as regras padrão de código de golfe se aplicam.
Que ganhe o menor código em bytes!
Casos de teste de verdade
[1]
[10]
[[]]
[[[[1]]]]
[[], [1], [1, 2]]
[[1], [1, [2]], [1, [2, [3]]]]
[[8], [8, [9]], [8, [9, [10]]]]
Casos de teste de falsidade
[]
[0]
[0, -1]
[-1, 0]
[[[[0]]]]
[[0], [1, 2], [3, 4, 5]]
[[8], [8, [9]], [8, [9, [1, 0]]]]
[-1, 0, 0, 0]
Object
... meu favorito é Haskell, onde não é. Nem em C, pelo menos não de uma maneira que permita misturar matrizes e ints com segurança. Ambos os idiomas são perfeitamente capazes de matrizes irregulares, mas ainda não podem usá-los para esse problema.