Contexte
Inspirée par l'interprétation très pratique d'Octave (et, par extension, de MATL) des matrices véridiques / fausses, Jelly a obtenu l' atome Ȧ ( tout style Octave ).
Ȧ prend un tableau en entrée et renvoie 1 si le tableau n'est pas vide et ne contient le numéro 0 (entier, flottant ou complexe) nulle part dans la structure arborescente ; sinon, il renvoie 0 .
Par exemple, le tableau [[]] est véridique car il n'est pas vide et ne contient pas de zéros, mais [[0]] est faux car il contient un 0 au niveau le plus intérieur.
Tâche
Dans un langage de programmation de votre choix, écrivez un programme complet ou une fonction qui prend en entrée un tableau d' entiers éventuellement vide, peut-être dentelé, et imprime ou retourne une valeur vraie ou fausse qui indique si Ȧ retournerait 1 ou 0 , respectivement.
Votre soumission doit respecter les règles suivantes.
Les valeurs véridiques et fausses doivent être cohérentes pour toutes les entrées , c'est-à-dire que tous les tableaux pour lesquels Ȧ renvoie 1 doivent correspondre à la même valeur véridique, et tous les tableaux pour lesquels Ȧ renvoie 0 doivent correspondre à la même valeur falsifiée.
Étant donné que les programmes complets ne peuvent prendre que des représentations de chaînes de tableaux en entrée, cela est autorisé. Cependant, vous devez utiliser la représentation canocale de votre langue, telle que renvoyée par
repr
ou similaire.En particulier, vous ne pouvez pas supposer que le premier élément du tableau sera précédé d'un espace.
Si (et seulement si) votre langage ne peut pas représenter nativement des tableaux irréguliers, vous pouvez prendre une représentation sous forme de chaîne de l'entrée, en utilisant la syntaxe canonique de tout langage de programmation préexistant.
Si votre langue a plusieurs façons de représenter des tableaux irréguliers (par exemple, des listes et des tuples), vous n'avez qu'à prendre en charge l'un d'eux.
Si votre langue a une fonction intégrée qui est elle-même une soumission valide à ce défi, vous ne pouvez pas l'utiliser dans votre réponse . Tous les autres éléments intégrés sont autorisés.
Nous vous encourageons à publier des réponses en utilisant à la fois la manipulation de tableaux et de chaînes, même si l'une est beaucoup plus courte que l'autre.
Toutes les règles de code-golf standard s'appliquent.
Que le code le plus court en octets gagne!
Cas de test authentiques
[1]
[10]
[[]]
[[[[1]]]]
[[], [1], [1, 2]]
[[1], [1, [2]], [1, [2, [3]]]]
[[8], [8, [9]], [8, [9, [10]]]]
Cas de test de falsification
[]
[0]
[0, -1]
[-1, 0]
[[[[0]]]]
[[0], [1, 2], [3, 4, 5]]
[[8], [8, [9]], [8, [9, [1, 0]]]]
[-1, 0, 0, 0]
Object
... mon préféré est Haskell, où il ne l'est pas. Ni en C, du moins pas d'une manière qui vous permette de mélanger les tableaux et les entiers en toute sécurité. Ces deux langues sont parfaitement capables de tableaux irréguliers, mais ne peuvent toujours pas les utiliser pour ce problème.