Anda akan diberi angka bulat positif (yang tidak akan pernah mengandung 0) sebagai input. Tugas Anda adalah memeriksa apakah itu nomor Lynch-Bell atau tidak.
Angka adalah nomor Lynch-Bell jika semua digitnya unik dan nomornya dapat dibagi oleh masing-masing digitnya.
Bahkan, sebenarnya hanya ada 548 nomor Lynch-Bell, jadi hard-coding adalah suatu kemungkinan, tetapi hampir pasti akan lebih lama.
126 adalah nomor Lynch-Bell karena semua digitnya unik, dan 126 dapat dibagi dengan 1, 2, dan 6.
Anda dapat menampilkan nilai apa pun yang benar dan salah.
Contoh:
7 -> truthy
126 -> truthy
54 -> falsy
55 -> falsy
3915 -> truthy
Ini adalah OEIS A115569 .
Jawaban:
Mathematica, 42 byte
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.&&
hanyaAnd
operator.#
adalah argumen fungsi terlampir terdekat terlampir.##
adalah urutan semua argumen fungsi.@
adalah notasi awalan untuk panggilan fungsi, yaituf@x == f[x]
.@@
adalahApply
, yang meneruskan elemen daftar sebagai argumen individu ke suatu fungsi, yaituf@@{a,b,c} == f[a,b,c]
.Dengan itu keluar dari jalan ...
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 daftarTrue
s danFalse
s.Kami menerapkan fungsi di sisi kiri ke daftar boolean, sehingga setiap boolean adalah argumen yang terpisah.
Kami menerapkan fungsi lain
d
, sehingga digit individu diberikan sebagai argumen terpisah. Fungsinya0!=##&
, 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, ...]
0
0!=##&
Unequal
0
U
Sekali lagi, ini benar-benar hanya singkatan
And[U, ##]
. Dengan##
menjadi urutan, boolean individu dari pemeriksaan keterbagian awal diperluas keAnd
, jadi kami mendapatkan pemeriksaan yang mana kedua digit tersebut unik dan setiap digit membagi input.And[U, d1∣n, d2∣n, ...]
sumber
##&@@d&&##&@@
? Apa yang bahkan dilakukannya?0!=
dengan0<
?Python 3 , 56 byte
Cobalah online!
Output
False
jika itu adalah nomor Lynch-Bell,True
jika tidak.sumber
0
dalam inputBrachylog , 10 byte
Cobalah online!
Penjelasan
sumber
C #,
8783 byteSaya menulis ini di notepad sebelum pengujian di Visual Studio, di mana ia bekerja dengan baik, jadi baru sadar saya sekarang tingkat nerd ...
Versi Lengkap / Diformat:
sumber
JavaScript (ES6),
4241 byteMengambil input sebagai string dan mengembalikan
true
ataufalse
jika perlu. Sunting: Disimpan 1 byte berkat @RickHitchcock. Versi lain:Mengambil input sebagai string dan mengembalikan
0
atau1
(yaitu pembalikan logis) untuk 40 byte:Mengambil input sebagai angka dan mengembalikan
0
atau1
selama 43 byte:Mengambil input sebagai angka dan mengembalikan
1
atau0
selama 45 byte:sumber
s=>![...s].some((e,i)=>s%e|s.search(e)<i)
[...new Array(9999999)].map((_,n)=>n+1+"").filter(s=>![...s].some((e,i)=>s%e|s.search(e)<i)).length
saya mendapatkan5081
bukan yang diharapkan548
, jadi ini tidak benar seperti yang tertulis. Kode yang sangat ketat..filter(x => x.indexOf('0')===-1)
ini mengembalikan 548 seperti yang dijanjikan.Jelly ,
64 byteCobalah online!
Bagaimana itu bekerja
sumber
gQV=
jika Anda lebih suka solusi ASCII saja.Python 3 , 54 byte
Kembali
False
ketika nomor adalah nomor Lynch-Bell. Mengambil string sebagai input. Datang dengan saya sendiri tetapi sangat mirip dengan Rod. Saya akan berkomentar di bawah posnya tetapi saya belum memiliki reputasi.Cobalah online!
sumber
Jelly , 8 byte
Cobalah online!
sumber
PHP,
6248 byteJalankan sebagai pipa dengan
-nR
atau uji secara online . Keluaran kosong untuk kepalsuan,1
untuk kebenaran.kerusakan
sumber
Haskell , 61 byte
Cobalah online!
Menentukan fungsi anonim
(#)=<<show
yang, diberi nomor, kembaliTrue
atauFalse
.sumber
05AB1E , 4 byte
Cobalah online!
Algoritma yang sama dengan jawaban ini untuk pertanyaan terkait .
sumber
05AB1E , 8 byte
Menggunakan penyandian 05AB1E . Cobalah online!
sumber
Mathematica, 57 byte
sumber
IsLynchBellNumber
LynchBellNumberQ
. ;)Python 2 , 66 byte
Ini adalah solusi dalam Python 2, yang seluruh tujuannya adalah untuk menghasilkan
True
kebenaran danFalse
kepalsuan:Cobalah online!
sumber
Haskell,
260241201162 bytePenjelasan
Secara signifikan telah mempersingkat thanx ke Laikoni
sumber
Japt ,
151411109 bytesCobalah
sumber
©!
->«
untuk -1 byteNeim , 9 byte
Cobalah online!
Terima kasih kepada Okx .
Hmm, ada simetri yang bagus ...
oO.O.O.Oo
sumber
𝐂D𝐮𝔼
ke𝐮ℚ
(uniquify, cek untuk kesetaraan mengabaikan jenis)Perl 6 , 27 byte
Cobalah online!
.comb
adalah metode yang, ketika tidak diberi argumen, membagi string menjadi karakter individu. Sejumlah secara implisit dikonversi menjadi string, dan karenanya.comb
mengembalikan digit-digitnya..comb.all
adalah dan-persimpangan dari semua digit.$_ %% .comb.all
adalah dan-persimpangan persimpangan argumen input$_
oleh semua digitnya. Misalnya, jika$_
ada123
, persimpangan adalahall(True, False, True)
, yang runtuh keFalse
dalam konteks yang benar.[!=] .comb
mengurangi digit argumen input dengan!=
operator, yang mengevaluasiTrue
apakah semua digit berbeda.sumber
Retina , 37 byte
Cobalah online! Tautan termasuk kasus uji. Penjelasan: Tahap pertama menggantikan setiap digit duplikat dengan nol. Tahap kedua menggantikan setiap digit dengan representasi unary diikuti oleh representasi unary dari nomor aslinya. Tahap ketiga kemudian menghitung sisa pembagian angka asli dengan masing-masing angka bukan nol. Jika nomor tersebut adalah nomor Lynch-Bell maka ini akan menghapus semuanya dan ini diuji pada tahap akhir.
sumber
Ruby 2.4, 42 byte
(Belum ada TIO, maaf)
sumber
CJam, 17 byte
CJam adalah Java dari bahasa golf. Itu bahkan ditafsirkan di Jawa!
Penjelasan:
sumber
VBScript, 177 byte
Hai semua, ini adalah posting CG pertama saya, dan upaya pertama, jadi harap saya mengikuti semua aturan ...
Ini dapat dijalankan dari Notepad dengan menambahkan garis di bagian akhir
Dan kemudian menyimpannya sebagai .vbs, lalu klik dua kali.
Penjelasan:
VBScript adalah instrumen tumpul untuk bermain golf, tapi hei, saya belum belajar Ruby ...
sumber
PHP , 51 byte
mencetak nol untuk true dan satu untuk false
Cobalah online!
PHP , 62 byte
mencetak nol untuk true dan satu untuk false
Cobalah online!
sumber
Pyth , 10 byte
Verifikasi semua kasus uji.
Bagaimana?
Pyth , 11 byte
Verifikasi semua kasus uji.
Bagaimana?
sumber
Perl 5 , 34 byte
33 byte kode + 1 untuk
-p
benderaCobalah online!
Keluaran
0
untuk kebenaran, angka lain untuk kepalsuansumber
Kotlin 1.1,
986659 byteYg diperindahkan
Uji
sumber
APL (Dyalog Unicode) , 24 byte
Cobalah online!
Dfn sederhana, mungkin bisa bermain golf lebih banyak. Hasilkan booleans APL standar 1 untuk truey, 0 for falsy.
Perlu disebutkan bahwa fungsi mengambil argumen sebagai string daripada int.
Bagaimana:
sumber
Julia 1.0 , 39 byte
rem.(x,d)
adalah vektor yang berisi sisa setelah membagi x dengan setiap digit dalamx
.0*unique(d)
adalah vektor dengan panjang sama dengan jumlah digit unik, dengan semua nilai nol. Periksa apakah keduanya sama.Cobalah online!
sumber
ruby -n , 40 byte
Cobalah online!
Baca angka sebagai string. Gantikan setiap karakter (digit) dengan kemunculan karakter berikutnya, jika ada, atau seluruh nomor modulo digit itu. Ini akan menghasilkan string hanya
0
s jika dan hanya jika ini adalah nomor Lynch-Bell. Mengapa? Jika ada digit yang diulang, setiap instance dari yang terakhir tetap sama, dan karena input tidak mengandung nol yang berarti digit bukan nol. Kalau tidak, kami hanya memeriksa apakah setiap digit membagi angka secara merata.Karena tidak ada angka Lynch-Bell 8 atau lebih digit (bukti formal: OEIS mengatakan demikian), memeriksa apakah string yang dihasilkan secara leksikografis lebih awal daripada string
'00000000'
sama dengan memeriksa apakah semuanya nol.sumber
R , 86 byte
Mengambil input sebagai string. Saya tentu merasa ini golf.
Cobalah online!
sumber