Mathematica, 42 bytes
0!=##&@@d&&##&@@((d=IntegerDigits@#)∣#)&
Eu acho que 0!=##&@@d&&##&@@é uma nova baixa legibilidade para o Mathematica ...
Explicação
Alguns dos açúcares sintáticos básicos usados aqui:
& tem precedência muito baixa e transforma tudo o que resta dele em uma função sem nome.
&&é apenas o Andoperador.
# é o argumento da função sem nome que o encerra mais próxima.
##é uma sequência de todos os argumentos da função.
@é uma notação de prefixo para chamadas de função, ie f@x == f[x].
@@é Apply, que passa os elementos de uma lista como argumentos individuais para uma função, ie f@@{a,b,c} == f[a,b,c].
Com isso fora do caminho ...
(d=IntegerDigits@#)
Isso deve ser bastante auto-explicativo: isso nos fornece uma lista dos dígitos decimais da entrada e armazena o resultado d.
(...∣#)
Isso testa a entrada quanto à divisibilidade de cada um de seus dígitos (porque o operador de divisibilidade é Listable). Isso nos dá uma lista de Trues e Falses.
...&@@...
Aplicamos a função no lado esquerdo à lista de booleanos, de modo que cada booleano seja um argumento separado.
...&@@d
Aplicamos outra função a d, para que os dígitos individuais sejam dados como argumentos separados. A função é 0!=##&, ie . Ele verifica se todos os dígitos são distintos (e que são distintos, mas isso é dado pelo desafio e, se não fosse, não seria um divisor de qualquer maneira). é realmente apenas uma economia de 1 byte no uso de si mesmo, e funciona porque há um elemento de 1 byte ( ) que sabemos que não está presente. Portanto, essa primeira coisa verifica se os dígitos são únicos. Vamos chamar esse resultadoUnequal[0, d1, d2, ...]00!=##&Unequal0U
...&&##
Novamente, isso é realmente apenas uma abreviação para And[U, ##]. Com ##sendo uma sequência, as booleans individuais a partir da verificação inicial divisibilidade são expandidos para o And, então temos que verifica que ambos os dígitos são únicas e cada dígito divide a entrada.And[U, d1∣n, d2∣n, ...]