Фон
Надихнувшись дуже зручною інтерпретацією матриць "фальшиві / фальсифіковані" матриці Октава (і, на розширення, MATL), Джеллі отримав атом Ȧ ( все в стилі Октави ).
Ȧ приймає масив як вхідний і повертає 1, якщо масив не порожній і не містить числа 0 (ціле число, плаваючий чи складний) де-небудь в структурі дерева ; в іншому випадку він повертає 0 .
Наприклад, масив [[]] є правдоподібним, тому що він не порожній і не містить нулів, але [[0]] є хибним, тому що містить 0 на найглибшому рівні.
Завдання
На обраній вами мові програмування напишіть повну програму або функцію, яка приймає, можливо, порожній, можливо зазубрований масив цілих чисел у якості вхідних даних і друкує або повертає значення truthy або хибного значення, яке вказує, чи return поверне 1 або 0 відповідно.
Ваше подання повинне дотримуватися наступних правил.
Значення truthy та Falsy повинні бути узгодженими для всіх вхідних даних , тобто всі масиви, для яких Ȧ повертає 1, повинні відображати одне і те ж значення truthy, а всі масиви, для яких Ȧ повертає 0, повинні відображати однакове хибне значення.
Оскільки повні програми можуть приймати як вхідні дані лише рядкові представлення масивів, це дозволено. Однак ви повинні використовувати канонічну репрезентацію своєї мови, повернуту
repr
чи подібною.Зокрема, ви не можете припустити, що першому елементу масиву буде передувати пробіл.
Якщо (і лише якщо) ваша мова не може вручну представляти зазубровані масиви, ви можете взяти рядкове введення даних, використовуючи канонічний синтаксис будь-якої раніше існуючої мови програмування.
Якщо у вашій мові є кілька способів представлення нерівних масивів (наприклад, списки та кортежі), вам потрібно підтримувати лише один із них.
Якщо у вашій мові є вбудований, який сам по собі є дійсним поданням на цей виклик, ви можете не використовувати його у своїй відповіді . Усі інші вбудовані дозволені.
Вам рекомендується розміщувати відповіді, використовуючи як маніпулювання, так і рядкові маніпуляції, навіть якщо один значно коротший за інший.
Діють усі стандартні правила коду-гольфу .
Нехай виграє найкоротший код у байтах!
Пробні кейси Truthy
[1]
[10]
[[]]
[[[[1]]]]
[[], [1], [1, 2]]
[[1], [1, [2]], [1, [2, [3]]]]
[[8], [8, [9]], [8, [9, [10]]]]
Фальшиві тестові справи
[]
[0]
[0, -1]
[-1, 0]
[[[[0]]]]
[[0], [1, 2], [3, 4, 5]]
[[8], [8, [9]], [8, [9, [1, 0]]]]
[-1, 0, 0, 0]
Object
... мій улюблений - Haskell, де його немає. Ні в C, принаймні, не таким чином, що дозволяє безпечно перемішувати масиви та ints. Обидві ці мови чудово здатні до зубчастих масивів, але все ще не можуть використовувати їх для цієї проблеми.