sfondo
Ispirato dall'interpretazione molto conveniente di Octave (e, per estensione, di MATL) delle matrici verità / falsa, Jelly ottenne l'atomo Ȧ (stile ottava tutto ).
Ȧ accetta un array come input e restituisce 1 se l'array non è vuoto e non contiene il numero 0 (intero, float o complesso) in qualsiasi punto della struttura ad albero ; in caso contrario, restituisce 0 .
Ad esempio, l'array [[]] è vero perché non è vuoto e non contiene zero, ma [[0]] è falso perché contiene uno 0 al livello più interno.
Compito
In un linguaggio di programmazione a tua scelta, scrivi un programma completo o una funzione che accetta un array di numeri interi eventualmente vuoto, eventualmente frastagliato come input e stampa o restituisce un valore di verità o falsità che indica se Ȧ restituirà rispettivamente 1 o 0 .
La tua richiesta deve rispettare le seguenti regole.
I valori di verità e falsità devono essere coerenti per tutti gli input , ovvero tutti gli array per i quali Ȧ restituisce 1 devono essere associati allo stesso valore di verità e tutti gli array per i quali Ȧ restituisce 0 devono essere associati allo stesso valore di falsità.
Poiché i programmi completi possono accettare solo rappresentazioni di stringhe di matrici come input, ciò è consentito. Tuttavia, è necessario utilizzare la rappresentazione canocica della propria lingua, come restituita
repr
o simile.In particolare non si può presumere che il primo elemento dell'array sarà preceduto da uno spazio.
Se (e solo se) il tuo linguaggio non può rappresentare nativamente array frastagliati, puoi prendere una rappresentazione in stringa dell'input, usando la sintassi canonica di qualsiasi linguaggio di programmazione preesistente.
Se la tua lingua ha diversi modi di rappresentare array frastagliati (ad es. Elenchi e tuple), devi solo supportarne uno.
Se la tua lingua ha un built-in che è esso stesso un valido contributo a questa sfida, non puoi utilizzarlo nella tua risposta . Sono ammessi tutti gli altri built-in.
Siete incoraggiati a pubblicare risposte usando sia la manipolazione di array che di stringhe, anche se una è significativamente più corta dell'altra.
Si applicano tutte le regole standard del code-golf .
Che vinca il codice più breve in byte!
Casi di prova veritieri
[1]
[10]
[[]]
[[[[1]]]]
[[], [1], [1, 2]]
[[1], [1, [2]], [1, [2, [3]]]]
[[8], [8, [9]], [8, [9, [10]]]]
Casi di prova falsi
[]
[0]
[0, -1]
[-1, 0]
[[[[0]]]]
[[0], [1, 2], [3, 4, 5]]
[[8], [8, [9]], [8, [9, [1, 0]]]]
[-1, 0, 0, 0]
Object
... il mio preferito è Haskell, dove non lo è. Né in C, almeno non in un modo che consenta di mescolare array e ints in modo sicuro. Entrambe queste lingue sono perfettamente in grado di matrici frastagliate, ma non possono ancora usarle per questo problema.