Mathematica, 42 byte
0!=##&@@d&&##&@@((d=IntegerDigits@#)∣#)&
Penso che 0!=##&@@d&&##&@@sia un nuovo basso livello di leggibilità per Mathematica ...
Spiegazione
Alcuni degli zuccheri sintattici di base usati qui:
& ha una priorità molto bassa e trasforma tutto ciò che ne rimane in una funzione senza nome.
&&è solo l' Andoperatore.
# è l'argomento della funzione anonima che racchiude più vicina.
##è una sequenza di tutti gli argomenti della funzione.
@è la notazione del prefisso per le chiamate di funzione, ad es f@x == f[x].
@@è Apply, che passa gli elementi di un elenco come singoli argomenti a una funzione, ad es f@@{a,b,c} == f[a,b,c].
Con quello fuori mano ...
(d=IntegerDigits@#)
Questo dovrebbe essere abbastanza autoesplicativo: questo ci dà un elenco delle cifre decimali dell'input e memorizza il risultato d.
(...∣#)
Questo verifica l'input per la divisibilità per ciascuna delle sue cifre (perché l'operatore di divisibilità è Listable). Questo ci dà un elenco di Trues e Falses.
...&@@...
Applichiamo la funzione sul lato sinistro all'elenco dei booleani, in modo tale che ogni booleano sia un argomento separato.
...&@@d
Applichiamo un'altra funzione a d, in modo che le singole cifre siano fornite come argomenti separati. La funzione è 0!=##&, ad es . Verifica che tutte le cifre siano distinte (e che siano distinte da ma ciò è dato dalla sfida, e se non lo fosse, non sarebbe comunque un divisore). è davvero solo un risparmiatore di 1 byte sull'uso di se stesso e funziona perché c'è un elemento di 1 byte ( ) che sappiamo che non è presente. Quindi questa prima cosa controlla che le cifre siano uniche. Chiamiamo questo risultatoUnequal[0, d1, d2, ...]00!=##&Unequal0U
...&&##
Ancora una volta, questa è davvero solo una scorciatoia per And[U, ##]. Con ##essendo una sequenza, i singoli booleani dal controllo divisibilità iniziale espandono nella And, in modo da ottenere che controlli che entrambe le cifre sono unici e ogni cifra divide l'ingresso.And[U, d1∣n, d2∣n, ...]