Mathematica, 42 byte
0!=##&@@d&&##&@@((d=IntegerDigits@#)∣#)&
Saya pikir 0!=##&@@d&&##&@@ini adalah rendahnya keterbacaan baru untuk ...
Penjelasan
Beberapa gula sintaksis dasar yang digunakan di sini:
& memiliki prioritas yang sangat rendah dan mengubah semuanya yang tersisa menjadi fungsi yang tidak disebutkan namanya.
&&hanya Andoperator.
# adalah argumen fungsi terlampir terdekat terlampir.
##adalah urutan semua argumen fungsi.
@adalah notasi awalan untuk panggilan fungsi, yaitu f@x == f[x].
@@adalah Apply, yang meneruskan elemen daftar sebagai argumen individu ke suatu fungsi, yaitu f@@{a,b,c} == f[a,b,c].
Dengan itu keluar dari jalan ...
(d=IntegerDigits@#)
Ini harus cukup jelas: ini memberi kita daftar angka desimal input dan menyimpan hasilnya d.
(...∣#)
Ini menguji input untuk dapat dibagi oleh masing-masing digit (karena operator dibagi adalah Listable). Ini memberi kita daftar Trues dan Falses.
...&@@...
Kami menerapkan fungsi di sisi kiri ke daftar boolean, sehingga setiap boolean adalah argumen yang terpisah.
...&@@d
Kami menerapkan fungsi lain d, sehingga digit individu diberikan sebagai argumen terpisah. Fungsinya 0!=##&, yaitu . Itu memeriksa bahwa semua digit berbeda (dan bahwa mereka berbeda dari tetapi yang diberikan oleh tantangan, dan jika tidak, itu tidak akan menjadi pembagi pula). benar-benar hanya penghemat 1-byte untuk menggunakan itu sendiri, dan itu berfungsi karena ada elemen 1-byte ( ) yang kita tahu tidak ada. Jadi hal pertama ini memeriksa bahwa angka-angka itu unik. Mari kita sebut hasil iniUnequal[0, d1, d2, ...]00!=##&Unequal0U
...&&##
Sekali lagi, ini benar-benar hanya singkatan And[U, ##]. Dengan ##menjadi urutan, boolean individu dari pemeriksaan keterbagian awal diperluas ke And, jadi kami mendapatkan pemeriksaan yang mana kedua digit tersebut unik dan setiap digit membagi input.And[U, d1∣n, d2∣n, ...]