Mathematica, 42 байта
0!=##&@@d&&##&@@((d=IntegerDigits@#)∣#)&
Я думаю, что 0!=##&@@d&&##&@@это новый низкий уровень читаемости для Mathematica ...
объяснение
Некоторые из основных синтаксических сахара, используемых здесь:
& имеет очень низкий приоритет и превращает все, что от него осталось, в неназванную функцию.
&&это просто Andоператор.
# является аргументом ближайшей включающей безымянной функции.
##это последовательность всех аргументов функции.
@является префикс для обозначения вызовов функций, то есть f@x == f[x].
@@это Apply, который передает элементы списка в виде отдельных аргументов функции, то есть f@@{a,b,c} == f[a,b,c].
С этим из пути ...
(d=IntegerDigits@#)
Это должно быть достаточно понятным: это дает нам список десятичных цифр ввода и сохраняет результат в d.
(...∣#)
Это проверяет входные данные на делимость каждой из его цифр (потому что оператор делимости есть Listable). Это дает нам список Trueс и Falseс.
...&@@...
Мы применяем функцию слева к списку логических значений, так что каждый логический аргумент является отдельным аргументом.
...&@@d
Мы применяем еще одну функцию d, чтобы отдельные цифры задавались как отдельные аргументы. Функция 0!=##&, то есть . Он проверяет, что все цифры различны (и что они отличны от, но это дается заданием, и если это не так, он не будет делителем в любом случае). на самом деле просто 1-байтовая заставка при использовании себя, и это работает, потому что есть 1-байтовый элемент ( ), которого мы знаем, что нет. Итак, это первое, что проверяет, что цифры уникальны. Давайте назовем этот результатUnequal[0, d1, d2, ...]00!=##&Unequal0U
...&&##
Опять же, это действительно просто сокращение And[U, ##]. С ##Будучи последовательности, отдельные булевы от первоначальной проверки делимости подставляются в And, таким образом мы получаем , которая проверяет , что обе цифры являются уникальными , и каждая цифра делит вход.And[U, d1∣n, d2∣n, ...]