Angka Munchausen dalam basis , juga dikenal sebagai Invarian digit-ke-digit Sempurna atau PDDI adalah jenis bilangan bulat positif yang aneh di mana jumlah digit basis- dibangkitkan untuk dirinya sendiri sama dengan angka itu sendiri. Mereka diberi nama untuk fiksi Baron Munchausen , yang tampaknya mengangkat dirinya melalui kucirnya sendiri untuk menyelamatkan dirinya dari tenggelam. Konsep terkait adalah angka narsis .
Misalnya, adalah angka Munchausen yang sepele di setiap basis karena . Selain itu, setiap bilangan bulat positif adalah angka dasar-1 Munchausen menurut definisi.
Lebih menarik, adalah nomor 10 Munchaus basis-10 karena , dan pada kenyataannya adalah satu-satunya nomor Munchaus-10 base-10 lainnya .
Sebagian daftar nomor Munchausen di setiap basis hingga 35 dapat ditemukan di OEIS sebagai urutan A166623 .
Diberikan bilangan bulat positif , tentukan apakah itu adalah bilangan Munchausen dalam basis apa pun .
Aturan
- Aturan I / O standar berlaku, jadi:
- Program atau fungsi penuh dapat diterima.
- Input bisa dari STDIN, sebagai argumen fungsi, dan output bisa ke STDOUT, sebagai nilai pengembalian fungsi, dll.
- Celah default berlaku.
- Keluaran harus merupakan salah satu dari dua hasil yang berbeda dan konsisten. Jadi
TRUE
baik untuk kebenaran danFALSE
baik untuk kepalsuan, tetapi Anda dapat membalikkan itu atau kembaliNone
untuk kebenaran dan1
untuk kepalsuan atau apa pun. Silakan tentukan hasil yang dipilih dalam jawaban Anda. - Jawaban Anda harus bekerja setidaknya secara teoritis untuk bilangan bulat positif.
- Angka Munchausen menggunakan konvensi , jadi adalah basis-2 angka Munchausen sebagai . Kode Anda harus mengikuti konvensi ini.
- Penjelasan sangat dianjurkan, meskipun pengiriman kemungkinan besar akan menggunakan metode pencarian brute-force.
- Menggunakan bahasa esoteris memberi Anda poin brownies karena Munchausen tampaknya orang yang aneh.
Uji Kasus
Truthy
1 (all bases)
2 (base 2)
5 (base 3)
28 (base 9 and base 25)
29 (base 4)
55 (base 4)
3435 (base 10)
923362 (base 9)
260 (base 128)
257 (base 64 and base 253)
Falsy
3
4
591912
3163
17
Ini adalah kode-golf , jadi jawaban tersingkat di setiap bahasa (dalam byte) menang!
sumber
determine if it's a Munchausen number in any base b≥2.
Jawaban:
05AB1E , 7 byte
Cobalah online!
Kasing uji yang lebih besar akan habis pada TIO.
Penjelasan
sumber
1^1
adalah 1 .Jelly , 8 byte
Hasil
0
untuk Munchausen dan1
lainnya.Cobalah online!
Atau melihat lima ratus bilangan bulat positif pertama berpisah sebagai
[[Munchausen], [non-Munchausen]]
.Bagaimana?
Alternatif untuk
1
Munchausen dan0
sebaliknya:sumber
1
adalah Munchausen.J ,
332827 byteCobalah online!
e.
adalah input elemen ...1#.
jumlah dari setiap baris ...i.@>: ... ]
0..input dan input itu sendiri, diteruskan sebagai argumen kiri dan kanan untuk ...^~@(#.inv)"0
konversikan arg (input) kanan ke setiap basis di arg kiri dan naikkan setiap hasil dengan elemen itu sendiri^~@
.::1
akhirnya ini diperlukan karena Anda tidak dapat mengonversi secara unik ke basis 1, sehingga kesalahan. dalam hal ini, kami hanya mengembalikan 1, yang tidak akan cocok dengan angka apa pun kecuali 1, yang kami inginkansumber
R ,
7269 byte-1 byte terima kasih untuk digEmAll
Cobalah online!
Output
TRUE
untuk nomor Munchausen danFALSE
lainnya.x%/%b^(0:log(x,b))%%b)
dikonversix
ke basisb
, dan loop untuk melakukan sisa pekerjaan (menugaskan kembaliF
, yang secaraFALSE
default).Kita harus mengizinkan pangkalan
b
untuk melangkah lebih jauhx+1
daripadax
menangani kasus inix=1
.sumber
+
dengan|
dan menghapus!
, kemudian saya menyadari saya menulis 71 tetapi kode saya sebenarnya 70: DJapt , 13 byte
Disimpan satu byte berkat @Shaggy
Cobalah
sumber
ÃÃøU
dengan<newline>øN
.N
, saya tidak pernah menggunakannya sebelumnya!Perl 6 , 51 byte
Cobalah online!
Penjelasan:
sumber
Ruby , 50 byte
TIO kehabisan waktu pada 591912. Entah bagaimana tepi Perl oleh 1 byte ... (pada saat penulisan)
Cobalah online!
sumber
JavaScript (ES7), 60 byte
Mengembalikan nilai Boolean.
Cobalah online!
Berkomentar
sumber
APL (dzaima / APL) ,
2313 byteCobalah online!
Berkat Adám, ngn dan dzaima, kami berhasil mencukur 10 byte dari jawaban ini dengan menggunakan dzaima / APL.
Awalan fungsi diam-diam. Angka Munchausen menghasilkan 1, jika tidak 0.
Bagaimana
sumber
Bahasa Wolfram (Mathematica) , 65 byte
Cobalah online!
-4 byte dari @attinat
sumber
Arang , 17 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Upaya 16 byte saya tidak berhasil tetapi itu mungkin bug di Charcoal, jadi perhatikan ruang ini. Keluaran
-
kecuali nomor tersebut adalah nomor Munchausen. Penjelasan:sumber
C # (Visual C # Interactive Compiler) , 99 byte
Cobalah online!
sumber
Haskell, 61 byte
Pengembalian
True
untuk Munchausen danFalse
sebaliknya.Cobalah online!
sumber
C (gcc)
-lm
,7975 byteCobalah online!
Pengembalian
0
untuk nomor Munchausen, dan1
sebaliknya.juga 75 byte
Cobalah online!
sumber
Python 2 ,
8381 byteCobalah online!
Kembali
1
untuk kebenaran dan0
kepalsuan. Karena rekursi, secara praktis tidak bisa berurusan dengan591912
, tetapi ia bekerja secara abstrak.sumber
Perl 6 ,
6665 byteCobalah online!
sumber
JavaScript (ES6), 88 byte
sumber
Ikon , 109 byte
Cobalah online!
Waktu habis untuk
591912
. Ikon memperlakukan0^0
sebagai overflow dan itu sebabnya saya perlu cek tambahan untuk nol.sumber
Stax , 15 byte
Jalankan dan debug itu
Butuh waktu sangat lama untuk kasus uji yang lebih besar.
Penjelasan:
sumber