Hintergrund
Inspiriert von Octaves (und, im weiteren Sinne, MATLs) sehr praktischer Interpretation von Wahrheits- / Falschmatrizen, erhielt Jelly das Ȧ- Atom (Octave-style all ).
Ȧ nimmt ein Array als Eingabe und gibt 1 zurück, wenn das Array nicht leer ist und an keiner Stelle in der Baumstruktur die Zahl 0 (Integer, Float oder Complex) enthält . Andernfalls wird 0 zurückgegeben .
Beispielsweise ist das Array [[]] wahr, weil es nicht leer ist und keine Nullen enthält, aber [[0]] ist falsch, weil es auf der innersten Ebene eine 0 enthält .
Aufgabe
Schreiben Sie in einer Programmiersprache Ihrer Wahl ein vollständiges Programm oder eine Funktion, die ein möglicherweise leeres, möglicherweise gezacktes Array von Ganzzahlen als Eingabe verwendet und einen wahren oder falschen Wert ausgibt oder zurückgibt , der angibt, ob Ȧ 1 oder 0 zurückgeben würde .
Ihr Beitrag muss den folgenden Regeln entsprechen.
Die Wahrheits- und Falschwerte müssen für alle Eingaben konsistent sein , dh alle Arrays, für die Ȧ 1 zurückgibt, müssen demselben Wahrheitswert zugeordnet sein, und alle Arrays, für die Ȧ 0 zurückgibt, müssen demselben Falschwert zugeordnet sein.
Da vollständige Programme nur Zeichenfolgendarstellungen von Arrays als Eingabe verwenden können, ist dies zulässig. Sie müssen jedoch die kanokische Darstellung Ihrer Sprache verwenden, wie sie von
repr
oder ähnlich zurückgegeben wurde.Insbesondere können Sie nicht davon ausgehen, dass vor dem ersten Element des Arrays ein Leerzeichen steht.
Wenn (und nur wenn) Ihre Sprache keine gezackten Arrays nativ darstellen kann, können Sie eine Zeichenfolgendarstellung der Eingabe unter Verwendung der kanonischen Syntax einer vorhandenen Programmiersprache vornehmen.
Wenn Ihre Sprache über mehrere Darstellungsmöglichkeiten für gezackte Arrays verfügt (z. B. Listen und Tupel), müssen Sie nur eines davon unterstützen.
Wenn Ihre Sprache über eine integrierte Funktion verfügt, die selbst eine gültige Vorlage für diese Herausforderung darstellt, können Sie sie in Ihrer Antwort möglicherweise nicht verwenden . Alle anderen Einbauten sind erlaubt.
Es wird empfohlen, Antworten sowohl mit Array- als auch mit String-Manipulation zu veröffentlichen, auch wenn eine deutlich kürzer ist als die andere.
Es gelten alle gängigen Code-Golf- Regeln.
Möge der kürzeste Code in Bytes gewinnen!
Wahrheitstestfälle
[1]
[10]
[[]]
[[[[1]]]]
[[], [1], [1, 2]]
[[1], [1, [2]], [1, [2, [3]]]]
[[8], [8, [9]], [8, [9, [10]]]]
Falsche Testfälle
[]
[0]
[0, -1]
[-1, 0]
[[[[0]]]]
[[0], [1, 2], [3, 4, 5]]
[[8], [8, [9]], [8, [9, [1, 0]]]]
[-1, 0, 0, 0]
Object
... Mein Favorit ist Haskell, wo es nicht ist. Auch in C nicht, zumindest nicht so, dass Sie Arrays und Ints sicher mischen können. Beide Sprachen sind durchaus in der Lage, gezackte Arrays zu erstellen, können sie jedoch für dieses Problem nicht verwenden.