Munchausena ilość bazy , znany również jako Doskonałe cyfrowy, do-cyfrowego niezmiennika lub PDDI jest szczególny rodzaj dodatniego gdzie całkowita suma jej Base- cyfr podniesiona do siebie jest równa samą liczbę. Nazwano je od fikcyjnego barona Munchausena , który najwyraźniej podniósł się za pomocą własnego kucyka, aby uchronić się przed utonięciem. Pokrewną koncepcją są liczby narcystyczne .
Na przykład jest trywialnie liczbą Munchausena w każdej bazie, ponieważ . Ponadto każda dodatnia liczba całkowita jest z definicji liczbą podstawową 1 Munchausena.
Co ciekawsze, jest liczbą podstawową 10 Munchausen, ponieważ , i tak naprawdę jest to jedyny inny numer bazowy 10 Munchausen .
Częściową listę liczb Munchausena w każdej bazie do 35 można znaleźć w OEIS jako sekwencję A166623 .
Biorąc pod uwagę dodatnią liczbę całkowitą , określ, czy jest to liczba Munchausena w jakiejkolwiek bazie .
Zasady
- Obowiązują domyślne reguły we / wy, więc:
- Pełny program lub funkcje są dopuszczalne.
- Dane wejściowe mogą być od STDIN jako argument funkcji, a dane wyjściowe mogą być do STDOUT, jako wartość zwracana przez funkcję itp.
- Obowiązują domyślne luki.
- Wynik musi być jednym z dwóch różnych, spójnych wyników. Tak
TRUE
jest w porządku dla prawdy iFALSE
jest w porządku dla fałszu, ale możesz to odwrócić lub powrócićNone
do prawdy i1
dla fałszu lub czegokolwiek innego. Podaj wybrane wyniki w swojej odpowiedzi. - Twoja odpowiedź musi działać przynajmniej teoretycznie dla każdej dodatniej liczby całkowitej.
- Liczby Munchausena używają konwencji , więc jest liczbą podstawową 2 Munchausena jako . Twój kod musi być zgodny z tą konwencją.
- Wyjaśnienia są zdecydowanie zalecane, nawet jeśli w zgłoszeniach najprawdopodobniej zostanie użyta metoda wyszukiwania z użyciem siły brutalnej.
- Posługiwanie się językami ezoterycznymi przynosi ci punkty, ponieważ Munchausen był najwyraźniej dziwną osobą.
Przypadki testowe
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
To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w każdym języku (w bajtach)!
źródło
determine if it's a Munchausen number in any base b≥2.
Odpowiedzi:
05AB1E , 7 bajtów
Wypróbuj online!
Większe przypadki testowe przekroczą limit czasu dla TIO.
Wyjaśnienie
źródło
1^1
jest 1 .Galaretka , 8 bajtów
Wydajność
0
dla Munchausen i1
nie tylko.Wypróbuj online!
Lub zobacz pierwsze pięćset dodatnich liczb całkowitych podzielonych jako
[[Munchausen], [non-Munchausen]]
.W jaki sposób?
Alternatywa dla
1
Munchausen i0
poza tym:źródło
1
to Munchausen.J ,
332827 bajtówWypróbuj online!
e.
jest wejściem elementem ...1#.
suma każdego wiersza ...i.@>: ... ]
0.. wejście i samo wejście, przekazywane jako lewy i prawy argument do ...^~@(#.inv)"0
przekonwertuj prawy argument (dane wejściowe) na każdą bazę w lewym arg i podnieś każdy wynik elementowo do siebie^~@
.::1
w końcu jest to potrzebne, ponieważ nie można jednoznacznie przekonwertować na bazę 1, więc błędy. w tym przypadku zwracamy po prostu 1, który nie będzie pasował do żadnej liczby oprócz 1, a tego właśnie chcemyźródło
R ,
7269 bajtów-1 bajt dzięki digEmAll
Wypróbuj online!
Dane wyjściowe
TRUE
dla liczb Munchausena iFALSE
nie tylko.x%/%b^(0:log(x,b))%%b)
konwertujex
na bazęb
, a pętla for wykonuje resztę pracy (ponowne przypisanieF
, co jestFALSE
domyślnie).Musimy pozwolić bazie
b
przejść do samego końca,x+1
zamiastx
zajmować się sprawąx=1
.źródło
+
się|
i usuwanie!
, a potem zdałem sobie sprawę, pisał 71 ale mój kod był rzeczywiście 70: DJapt , 13 bajtów
Oszczędność jednego bajtu dzięki @Shaggy
Spróbuj
źródło
ÃÃøU
go<newline>øN
.N
, nigdy wcześniej jej nie używałem!Perl 6 , 51 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
Rubinowy , 50 bajtów
Upłynął limit czasu TIO na 591912. Jakoś przewyższa Perla o 1 bajt ... (w momencie pisania)
Wypróbuj online!
źródło
JavaScript (ES7), 60 bajtów
Zwraca wartość logiczną.
Wypróbuj online!
Skomentował
źródło
APL (dzaima / APL) ,
2313 bajtówWypróbuj online!
Dzięki Adámowi, ngn i dzaima udało nam się zgolić 10 bajtów tej odpowiedzi przy użyciu dzaima / APL.
Funkcja ukrywania przedrostka. Liczby Munchausena zwracają 1, w przeciwnym razie 0.
W jaki sposób
źródło
Wolfram Language (Mathematica) , 65 bajtów
Wypróbuj online!
-4 bajty od @attinat
źródło
Węgiel drzewny , 17 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Moja 16-bajtowa próba nie zadziałała, ale może to być błąd w Charcoal, więc uważaj na to miejsce. Wyprowadza,
-
chyba że liczba jest liczbą Munchausena. Wyjaśnienie:źródło
C # (interaktywny kompilator Visual C #) , 99 bajtów
Wypróbuj online!
źródło
Haskell, 61 bajtów
Zwraca
True
dla Munchausen iFalse
nie tylko.Wypróbuj online!
źródło
C (gcc)
-lm
,7975 bajtówWypróbuj online!
Zwraca
0
numery Munchausen i1
nie tylko.także 75 bajtów
Wypróbuj online!
źródło
Python 2 ,
8381 bajtówWypróbuj online!
Zwraca
1
za prawdę i0
falsey. Z powodu rekurencji praktycznie nie mogę sobie z tym poradzić591912
, ale działa w sposób abstrakcyjny.źródło
Perl 6 ,
6665 bajtówWypróbuj online!
źródło
JavaScript (ES6), 88 bajtów
źródło
Ikona , 109 bajtów
Wypróbuj online!
Przekroczono limit czasu
591912
. Ikona traktuje0^0
jak przepełnienie i dlatego potrzebuję dodatkowego sprawdzenia na zero.źródło
Stax , 15 bajtów
Uruchom i debuguj
Trwa bardzo długo w przypadku większych przypadków testowych.
Wyjaśnienie:
źródło