N , P > 1
Finden Sie bei gegebenen Ganzzahlen die größte Ganzzahl M
so, dass P ^ M ≤ N
.
I / O:
Die Eingabe erfolgt als 2 Ganzzahlen N
und P
. Die Ausgabe ist die Ganzzahl M
.
Beispiele:
4, 5 -> 0
33, 5 -> 2
40, 20 -> 1
242, 3 -> 4
243, 3 -> 5
400, 2 -> 8
1000, 10 -> 3
Anmerkungen:
Die Eingabe ist immer gültig, dh es sind immer ganze Zahlen größer als 1.
Credits:
Der Name geht an @cairdcoinheringaahing. Die letzten 3 Beispiele stammen von @Nitrodon und die Beschreibung wurde an @Giuseppe weitergeleitet.
code-golf
math
number
arithmetic
Muhammad Salman
quelle
quelle
Antworten:
Brain-Flak , 74 Bytes
Probieren Sie es online!
Dies verwendet dasselbe Konzept wie der Standardalgorithmus für die positive Ganzzahlteilung nach Brain-Flak.
quelle
JavaScript (ES6), 22 Byte
8 Bytes dank @Neil gespeichert
Übernimmt Eingaben in der Currying-Syntax
(p)(n)
.Probieren Sie es online!
quelle
Excel, 18 Bytes
Nimmt an A1 die Eingabe "n" und an A2 die Eingabe "p".
quelle
INT
Funktion verwendenTRUNC
, um 2 Bytes zu sparen.Gelee , 3 Bytes
Dies verwendet keine Gleitkomma-Arithmetik, daher gibt es keine Genauigkeitsprobleme.
Probieren Sie es online!
Wie es funktioniert
quelle
Retina 0.8.2 , 35 Bytes
Probieren Sie es online! Erläuterung:
Konvertieren Sie die Argumente in unary.
Wenn das zweite Argument das erste trennt, ersetzen Sie das erste Argument durch ein
#
Pluszeichen und verwerfen Sie den Rest. Wiederholen Sie diesen Vorgang, bis das erste Argument kleiner als das zweite ist.Zählen Sie, wie oft die Schleife ausgeführt wurde.
quelle
Japt, 8 Bytes
Versuch es
quelle
F.g()
-, aber sie sind unglaublich nützlich.Haskell , 30 Bytes
Probieren Sie es online!
quelle
until((>n).(p^))(1+)0-1
oderuntil(\x->p^x*p>n)(1+)0
bringt Sie auf 27 Bytes.Perl 6 , 13 Bytes
Probieren Sie es online!
Die Verkettung, die Protokoll und Floor zusammensetzt, hat implizit 2 Argumente, da das erste Funktionsprotokoll 2 erwartet. Ergebnis ist eine Funktion.
quelle
1000, 10
dies 2 zurück.Haskell , 16 Bytes
Probieren Sie es online!
Haskell wurde von Mathematikern entwickelt, sodass es in Prelude eine Reihe nützlicher mathematischer Funktionen enthält.
quelle
R , 25 Bytes
Probieren Sie es online!
Nehmen Sie das Protokoll der
P
BasisN
und teilen Sie die Ganzzahl mit1
, da es kürzer als istfloor()
. Dies leidet ein wenig unter der numerischen Genauigkeit, daher präsentiere ich auch die folgende Antwort, die, abgesehen von einem möglicherweise ganzzahligen Überlauf, nicht erfolgen sollte.R , 31 Bytes
Probieren Sie es online!
quelle
p
durchp+.1
in der 25-Byte-Antwort ersetzen und Sie werden immer noch in Ordnung sein, für 28 BytesPython 2 , 39 Bytes
Probieren Sie es online!
quelle
Ruby , 31 Bytes
OK, all diese logbasierten Ansätze neigen zu Rundungsfehlern. Hier ist eine andere Methode, die mit ganzen Zahlen funktioniert und frei von diesen Problemen ist:
Probieren Sie es online!
Zurück zu den Logarithmen, obwohl nicht klar ist, bis zu welcher Genauigkeit wir die Eingabe unterstützen müssen, würde dieser kleine Trick meiner Meinung nach das Rundungsproblem für alle mehr oder weniger "realistischen" Zahlen lösen:
Ruby , 29 Bytes
Probieren Sie es online!
quelle
C (gcc) +
-lm
24 BytesProbieren Sie es online!
quelle
long long
aber was istbytes bytes
? : Pf(n,m){n=(float)log(n)/log(m);}
scheint @ 31 Bytes zu arbeitenEmojicode ,
4948 BytesProbieren Sie es online!
quelle
APL (Dyalog Unicode) , 2 Bytes
Probieren Sie es online!
Ziemlich einfach.
⍟
Log⌊
Fußbodenquelle
⌊⍟
05AB1E , 6 Bytes
Probieren Sie es online!
quelle
JavaScript ,
4033 Bytes-3 Bytes dank DanielIndie
Übernimmt Eingaben in der Currying-Syntax.
Probieren Sie es online!
quelle
toString
Lösung funktioniert nur für Stützpunkte bis 36.Pari / GP, 6 Bytes
(Eingebaut in Version 2.7, März 2014. Ergibt zwei Argumente mit einem optionalen dritten Verweis, der, falls vorhanden, auf die Basis gesetzt wird, die auf das Ergebnis angehoben wird.)
quelle
logint
was gültig ist und 5 Bytes weniger zählt.Python 2, 3, 46 Bytes
-1 danke an jonathan
Python 1, 47 Bytes
quelle
n~-i
ist ein Byte kürzer alsn i-1
.JavaScript (Node.js) , 22 Byte
Probieren Sie es online!
Curry-rekursive Funktion. Verwenden Sie als
g(P)(N)
. Es ist weniger anfällig für Gleitkommafehler als die VerwendungMath.log
, und (glaube ich) der Code gibt korrekte Werte an, solange beide Eingaben sichere Ganzzahlen (unter2**52
) sind.quelle
Haskell ,
3534 BytesDanke @Laikoni für das Speichern von 1 Byte
Probieren Sie es online!
quelle
J , 5 Bytes
Probieren Sie es online!
quelle
Wolfram-Sprache (Mathematica)
1510 Bytes(erfordert umgekehrte Reihenfolge bei der Eingabe)
Ursprüngliche Vorlage
quelle
⌊Log@##⌋&
ist ein Byte kürzerViertens (viertens) , 35 Bytes
Probieren Sie es online!
Konnte 5 Bytes einsparen, indem die erwarteten Eingabeparameter ausgetauscht wurden, aber die Frage gibt an, dass N an erster Stelle stehen muss (ein Argument könnte lauten, dass "First" in einer Postfix-Sprache "Top-of-Stack" bedeutet, aber ich halte mich an den Buchstaben der Regeln für jetzt)
Erläuterung
quelle
Pyth,
64 BytesDank Mmenomic 2 Bytes gespart
Probieren Sie es online aus
Wie es funktioniert
.l
ist log B (A)Um ehrlich zu sein, ich habe keine Ahnung, wie das
F
funktioniert. Aber wenn es funktioniert, funktioniert es.s
schneidet ein Float auf ein Int ab, um die höchste Ganzzahl für zu erhaltenM
.quelle
/FlM
Wunder , 9 Bytes
Beispielverwendung:
Erläuterung
Ausführliche Version:
Dies ist pointfree Stil geschrieben.
sS
Übergibt Listenelemente als Argumente an eine Funktion (in diesem Falllog
).quelle
Gforth , 31 Bytes
Verwendung
Probieren Sie es online!
Erläuterung
Leider verwendet FORTH einen dedizierten Gleitkommastapel. Dafür muss ich
SWAP
die Eingabewerte austauschen, damit sie in der richtigen Reihenfolge zum Gleitkommastapel gelangen. Ich muss auch die Werte zu diesem Stapel mit verschiebenS>F
. Beim Verschieben des Gleitkommaergebnisses zurück auf Ganzzahl (F>S
ich ) verschiebe, habe ich den Vorteil, dass ich die Kürzung kostenlos bekomme.Kürzere Version
Ausgehend von den Anforderungen und der Bereitstellung der Eingabe im Float-Format und in der richtigen Reihenfolge gibt es eine kürzere Version mit 24 Bytes.
Probieren Sie es online!
quelle
: f .... ;
oder in ein Programm konvertiert werden, das Eingaben mithilfe vonKEY
orACCEPT
Schale ,
874 BytesProbieren Sie es online!
quelle
C (gcc) , 61 Bytes
Probieren Sie es online!
quelle
Japt , 5 Bytes
Probieren Sie es online!
8 Bytes
Probieren Sie es online!
quelle
ì
anstatts
wies
es fehlschlagen wird wennV>36
.V>36
.