Eine Münchhausen-Zahl in der Basis , die auch als perfekte Ziffer-zu-Ziffer-Invariante oder PDDI bezeichnet wird, ist ein besonderer Typ einer positiven Ganzzahl, bei der die Summe ihrer zur Basis erhobenen Ziffern der Zahl selbst entspricht. Sie sind nach dem fiktiven Baron Münchhausen benannt , der sich anscheinend mit seinem eigenen Pferdeschwanz aufgerichtet hat, um sich vor dem Ertrinken zu retten. Ein verwandtes Konzept sind narzisstische Zahlen .
Zum Beispiel ist trivial eine Münchhausen-Zahl in jeder Basis, weil . Außerdem ist jede positive ganze Zahl per Definition eine Zahl zur Basis 1 Münchhausen.
Interessanterweise ist eine Basis-10-Münchhausen-Zahl, weil , und tatsächlich ist es die einzige andere Basis-10-Münchhausen-Zahl .
Eine unvollständige Liste der Münchhausen-Nummern in jeder Basis bis zu 35 ist im OEIS als Sequenz A166623 zu finden .
Bestimmen Sie bei einer positiven ganzen Zahl , ob es sich um eine Münchhausen-Zahl in einer beliebigen Basis .
Regeln
- Es gelten die Standard-E / A-Regeln.
- Vollständiges Programm oder Funktionen sind akzeptabel.
- Die Eingabe kann von STDIN als Funktionsargument und die Ausgabe von STDOUT als Funktionsrückgabewert usw. erfolgen.
- Es gelten Standardlücken.
- Die Ausgabe muss eines von zwei unterschiedlichen, konsistenten Ergebnissen sein. Also
TRUE
ist es in Ordnung für Wahres undFALSE
ist es in Ordnung für Falsches, aber Sie können dies umkehren oderNone
für Wahres und1
Falsches oder was auch immer zurückkehren. Bitte geben Sie die ausgewählten Ergebnisse in Ihrer Antwort an. - Ihre Antwort muss zumindest theoretisch für eine positive ganze Zahl funktionieren.
- Münchhausen-Zahlen verwenden die Konvention , also ist eine Basis-2-Münchhausen-Zahl als . Ihr Code muss dieser Konvention entsprechen.
- Erklärungen werden nachdrücklich empfohlen, auch wenn bei Einsendungen höchstwahrscheinlich die Brute-Force-Suchmethode verwendet wird.
- Die Verwendung von esoterischen Sprachen bringt Ihnen Brownie-Punkte, da Münchhausen anscheinend eine seltsame Person war.
Testfälle
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
Das ist Code-Golf , also gewinnt die kürzeste Antwort in jeder Sprache (in Bytes)!
quelle
determine if it's a Munchausen number in any base b≥2.
Antworten:
05AB1E , 7 Bytes
Probieren Sie es online!
Bei den größeren Testfällen tritt bei TIO eine Zeitüberschreitung auf.
Erläuterung
quelle
1^1
ist 1 .Gelee , 8 Bytes
Erträge
0
für Münchhausen und1
sonst.Probieren Sie es online!
Oder sehen Sie die ersten fünfhundert positiven ganzen Zahlen aufgeteilt als
[[Munchausen], [non-Munchausen]]
.Wie?
Alternative für
1
für Münchhausen und0
sonst:quelle
1
Münchhausen war.J ,
332827 BytesProbieren Sie es online!
e.
ist der Eingang ein Element von ...1#.
die Summe jeder Reihe von ...i.@>: ... ]
0..input und die Eingabe selbst, übergeben als linkes und rechtes Argument an ...^~@(#.inv)"0
Wandle das rechte Argument (Eingabe) in jede Basis im linken Argument und erhöhe jedes Ergebnis elementweise auf sich^~@
.::1
Schließlich ist dies erforderlich, weil Sie nicht eindeutig zur Basis 1 konvertieren können, so dass es Fehler gibt. In diesem Fall geben wir einfach 1 zurück, die für keine Zahl außer 1 passt , was wir wollenquelle
R ,
7269 Bytes-1 Byte dank digEmAll
Probieren Sie es online!
Ausgänge
TRUE
für Münchhausen-Nummern undFALSE
sonstiges.x%/%b^(0:log(x,b))%%b)
konvertiertx
in baseb
und die for-Schleife erledigt den Rest der Arbeit (NeuzuweisungF
, dieFALSE
standardmäßig ist).Wir müssen zulassen, dass die Basis
b
den gesamten Weg zurücklegt,x+1
anstattx
den Fall zu behandelnx=1
.quelle
+
mit|
und Entfernen!
, dann merkte ich , dass ich schrieb 71 , aber mein Code war eigentlich 70: DJapt , 13 Bytes
Dank @Shaggy ein Byte gespeichert
Versuch es
quelle
ÃÃøU
mit<newline>øN
.N
ich es noch nie benutzt habe!Perl 6 , 51 Bytes
Probieren Sie es online!
Erläuterung:
quelle
Ruby , 50 Bytes
TIO hat ein Zeitlimit von 591912 überschritten. Perl wird irgendwie um 1 Byte verdrängt ... (zum Zeitpunkt des Schreibens)
Probieren Sie es online!
quelle
JavaScript (ES7), 60 Byte
Gibt einen Booleschen Wert zurück.
Probieren Sie es online!
Kommentiert
quelle
APL (dzaima / APL) ,
2313 BytesProbieren Sie es online!
Dank Adám, ngn und dzaima konnten wir mit dzaima / APL 10 Byte dieser Antwort einsparen.
Präfix implizite Funktion. Münchhausen-Zahlen geben 1 zurück, sonst 0.
Wie
quelle
Wolfram Language (Mathematica) , 65 Byte
Probieren Sie es online!
-4 Bytes von @attinat
quelle
Kohle , 17 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Mein 16-Byte-Versuch hat nicht funktioniert, aber das könnte ein Fehler in Charcoal sein. Wird ausgegeben,
-
sofern die Nummer keine Münchhausen-Nummer ist. Erläuterung:quelle
C # (Visual C # Interactive Compiler) , 99 Byte
Probieren Sie es online!
quelle
Haskell, 61 Bytes
Rückgabe
True
für Münchhausen undFalse
ansonsten.Probieren Sie es online!
quelle
C (GCC)
-lm
,7975 BytesProbieren Sie es online!
Rückgabe
0
für Münchhausen-Nummern und1
sonst.auch 75 Bytes
Probieren Sie es online!
quelle
Python 2 ,
83-81BytesProbieren Sie es online!
Returns
1
für truthy und0
für Falsey. Wegen der Rekursion kann praktisch nicht damit umgehen591912
, aber es funktioniert abstrakt.quelle
Perl 6 ,
6665 BytesProbieren Sie es online!
quelle
JavaScript (ES6), 88 Byte
quelle
Icon , 109 Bytes
Probieren Sie es online!
Mal raus für
591912
. Icon wird0^0
als Überlauf behandelt und deshalb brauche ich eine zusätzliche Prüfung auf Null.quelle
Stax , 15 Bytes
Führen Sie es aus und debuggen Sie es
Dauert sehr lange für die größeren Testfälle.
Erläuterung:
quelle