Dados enteros N , P > 1
, encuentre el entero más grande M
tal que P ^ M ≤ N
.
E / S:
La entrada se da como 2 enteros N
y P
. La salida será el entero M
.
Ejemplos:
4, 5 -> 0
33, 5 -> 2
40, 20 -> 1
242, 3 -> 4
243, 3 -> 5
400, 2 -> 8
1000, 10 -> 3
Notas:
La entrada siempre será válida, es decir, siempre serán enteros mayores que 1.
Créditos
El crédito por el nombre va a @cairdcoinheringaahing. Los últimos 3 ejemplos son de @Nitrodon y el crédito por mejorar la descripción va a @Giuseppe.
code-golf
math
number
arithmetic
Muhammad Salman
fuente
fuente
Respuestas:
Brain-Flak , 74 bytes
Pruébalo en línea!
Utiliza el mismo concepto que el algoritmo de división de enteros positivo Brain-Flak estándar.
fuente
JavaScript (ES6), 22 bytes
Guardado 8 bytes gracias a @Neil
Toma entrada en la sintaxis de curry
(p)(n)
.Pruébalo en línea!
fuente
Excel, 18 bytes
Toma la entrada "n" en A1 y la entrada "p" en A2.
fuente
INT
función en lugar deTRUNC
guardar 2 bytes.Jalea , 3 bytes
Esto no utiliza aritmética de punto flotante, por lo que no hay problemas de precisión.
Pruébalo en línea!
Cómo funciona
fuente
Retina 0.8.2 , 35 bytes
Pruébalo en línea! Explicación:
Convierta los argumentos a unario.
Si el segundo argumento divide el primero, reemplace el primer argumento con un resultado
#
más el entero, descartando el resto. Repita esto hasta que el primer argumento sea menor que el segundo.Cuente la cantidad de veces que se ejecutó el ciclo.
fuente
Japt, 8 bytes
Intentalo
fuente
F.g()
, pero son increíblemente útiles.Haskell , 30 bytes
Pruébalo en línea!
fuente
until((>n).(p^))(1+)0-1
ountil(\x->p^x*p>n)(1+)0
se pone manos a 27 bytes.Perl 6 , 13 bytes
Pruébalo en línea!
La concatenación que compone el registro y el piso, implícitamente tiene 2 argumentos porque el registro de la primera función espera 2. El resultado es una función.
fuente
1000, 10
esto devuelve 2.Haskell , 16 bytes
Pruébalo en línea!
Haskell fue diseñado por matemáticos por lo que tiene un buen conjunto de funciones relacionadas con las matemáticas en Prelude.
fuente
R , 25 bytes
Pruébalo en línea!
Tome el registro de
P
baseN
y haga una división entera con1
, ya que es más corto quefloor()
. Esto sufre un poco de precisión numérica, por lo que también presento la respuesta a continuación, que no debería, aparte de un posible desbordamiento de enteros.R , 31 bytes
Pruébalo en línea!
fuente
p
porp+.1
en la respuesta de 25 bytes y aún estará bien, por 28 bytesPython 2 , 39 bytes
Pruébalo en línea!
fuente
Ruby , 31 bytes
OK, entonces todos esos enfoques basados en registros son propensos a errores de redondeo, por lo que aquí hay otro método que funciona con enteros y está libre de esos problemas:
Pruébalo en línea!
Pero volviendo a los logaritmos, aunque no está claro hasta qué precisión debemos apoyar la entrada, pero creo que este pequeño truco resolvería el problema de redondeo para todos los números más o menos "realistas":
Ruby , 29 bytes
Pruébalo en línea!
fuente
C (gcc) +
-lm
, 24 bytesPruébalo en línea!
fuente
long long
pero ¿qué esbytes bytes
? : Pf(n,m){n=(float)log(n)/log(m);}
parece funcionar a 31 bytesEmojicode ,
4948 bytesPruébalo en línea!
fuente
APL (Dyalog Unicode) , 2 bytes
Pruébalo en línea!
Muy claro.
⍟
Iniciar sesión⌊
pisofuente
⌊⍟
05AB1E , 6 bytes
Pruébalo en línea!
fuente
JavaScript ,
4033 bytes-3 bytes gracias a DanielIndie
Toma entrada en la sintaxis de curry.
Pruébalo en línea!
fuente
toString
solución solo funciona para bases de hasta 36.Pari / GP, 6 bytes
(incorporado en la versión 2.7, marzo de 2014. Toma dos argumentos, con una tercera referencia opcional que, si está presente, se establece en la base elevada al resultado)
fuente
logint
cuál es válido y cuenta 5 bytes menos.Python 2, 3, 46 bytes
-1 gracias a Jonathan
Python 1, 47 bytes
fuente
n~-i
es un byte más corto quen i-1
.JavaScript (Node.js) , 22 bytes
Pruébalo en línea!
Función recursiva al curry. Usar como
g(P)(N)
. Menos propenso a errores de coma flotante que el usoMath.log
, y (creo) el código proporciona valores correctos siempre que ambas entradas sean enteros seguros (debajo2**52
).fuente
Haskell ,
3534 bytesGracias @Laikoni por guardar 1 byte
Pruébalo en línea!
fuente
J , 5 bytes
Pruébalo en línea!
fuente
Wolfram Language (Mathematica)
1510 Bytes(requiere orden inverso en la entrada)
Presentación original
fuente
⌊Log@##⌋&
es un byte más cortoAdelante (gforth) , 35 bytes
Pruébalo en línea!
Podría ahorrar 5 bytes intercambiando los parámetros de entrada esperados, pero la pregunta especifica que N debe ser primero (se podría argumentar que en un lenguaje de postfijo "Primero" significa la parte superior de la pila, pero me atendré a la letra de las reglas para ahora)
Explicación
fuente
Pyth,
64 bytesGuardado 2 bytes gracias a Mmenomic
Pruébelo en línea
Cómo funciona
.l
es log B (A)Para ser honesto, no tengo idea de cómo
F
funciona. Pero si funciona, funciona.s
trunca un flotante a un int para darnos el entero más altoM
.fuente
/FlM
Maravilla , 9 bytes
Ejemplo de uso:
Explicación
Versión detallada:
Este es un estilo escrito sin puntos.
sS
pasa elementos de la lista como argumentos a una función (en este casolog
).fuente
Gforth , 31 bytes
Uso
Pruébalo en línea!
Explicación
Desafortunadamente, FORTH usa una pila de punto flotante dedicada. Para eso tengo que
SWAP
(intercambiar) los valores de entrada para que lleguen a la pila de coma flotante en el orden correcto. También tengo que mover los valores a esa pila conS>F
. Al mover el resultado de coma flotante de nuevo a entero (F>S
) tengo el beneficio de obtener el truncamiento de forma gratuita.Versión más corta
Extendiendo los requisitos y proporcionando la entrada en formato flotante y en el orden correcto, hay una versión más corta con 24 bytes.
Pruébalo en línea!
fuente
: f .... ;
o convertida a un programa queKEY
ACCEPT
Casco ,
874 bytesPruébalo en línea!
fuente
C (gcc) , 61 bytes
Pruébalo en línea!
fuente
Japt , 5 bytes
Pruébalo en línea!
8 bytes
Pruébalo en línea!
fuente
ì
lugar des
comos
fallará siV>36
.V>36
.