Étant donné des entiers N , P > 1
, trouvez le plus grand entier M
tel que P ^ M ≤ N
.
E / S:
L'entrée est donnée sous la forme de 2 entiers N
et P
. La sortie sera l'entier M
.
Exemples:
4, 5 -> 0
33, 5 -> 2
40, 20 -> 1
242, 3 -> 4
243, 3 -> 5
400, 2 -> 8
1000, 10 -> 3
Remarques:
L'entrée sera toujours valide, c'est-à-dire qu'il s'agira toujours d'entiers supérieurs à 1.
Crédits:
Le nom revient à @cairdcoinheringaahing. Les 3 derniers exemples sont de @Nitrodon et le crédit pour l'amélioration de la description va à @Giuseppe.
code-golf
math
number
arithmetic
Muhammad Salman
la source
la source
Réponses:
Brain-Flak , 74 octets
Essayez-le en ligne!
Cela utilise le même concept que l'algorithme standard de division d'entiers positifs Brain-Flak.
la source
JavaScript (ES6), 22 octets
8 octets enregistrés grâce à @Neil
Prend des entrées dans la syntaxe de curry
(p)(n)
.Essayez-le en ligne!
la source
Excel, 18 octets
Prend l'entrée "n" à A1 et l'entrée "p" à A2.
la source
INT
fonction au lieu d'TRUNC
enregistrer 2 octets.Gelée , 3 octets
Cela n'utilise pas d'arithmétique à virgule flottante, il n'y a donc pas de problème de précision.
Essayez-le en ligne!
Comment ça fonctionne
la source
Retina 0.8.2 , 35 octets
Essayez-le en ligne! Explication:
Convertissez les arguments en unaire.
Si le deuxième argument divise le premier, remplacez le premier argument par un
#
plus le résultat entier, en éliminant le reste. Répétez cette opération jusqu'à ce que le premier argument soit inférieur au second.Comptez le nombre d'exécutions de la boucle.
la source
Japt, 8 octets
Essayez-le
la source
F.g()
- mais ils sont incroyablement utiles.Haskell , 30 octets
Essayez-le en ligne!
la source
until((>n).(p^))(1+)0-1
ouuntil(\x->p^x*p>n)(1+)0
vous descend à 27 octets.Perl 6 , 13 octets
Essayez-le en ligne!
La concaténation qui compose le journal et le sol, a implicitement 2 arguments car le premier journal de fonction en attend 2. Le résultat est une fonction.
la source
1000, 10
cela renvoie 2.Haskell , 16 octets
Essayez-le en ligne!
Haskell a été conçu par des mathématiciens et dispose donc d'un bel ensemble de fonctions liées aux mathématiques dans Prelude.
la source
R , 25 octets
Essayez-le en ligne!
Prenez le journal de
P
baseN
et faites une division entière avec1
, car il est plus court quefloor()
. Cela souffre un peu de la précision numérique, donc je présente également la réponse ci-dessous, qui ne devrait pas, à part un débordement d'entier possible.R , 31 octets
Essayez-le en ligne!
la source
p
parp+.1
dans la réponse de 25 octets et vous serez toujours d'accord, pour 28 octetsPython 2 , 39 octets
Essayez-le en ligne!
la source
Rubis , 31 octets
OK, donc toutes ces approches basées sur les journaux sont sujettes à des erreurs d'arrondi, voici donc une autre méthode qui fonctionne avec des entiers et est exempte de ces problèmes:
Essayez-le en ligne!
Mais revenons aux logarithmes, bien qu'il ne soit pas clair jusqu'à quelle précision nous devons prendre en charge l'entrée, mais je pense que cette petite astuce résoudrait le problème d'arrondi pour tous les nombres plus ou moins "réalistes":
Rubis , 29 octets
Essayez-le en ligne!
la source
C (gcc) +
-lm
, 24 octetsEssayez-le en ligne!
la source
long long
mais c'est quoibytes bytes
? : Pf(n,m){n=(float)log(n)/log(m);}
semble fonctionner @ 31 octetsEmojicode ,
4948 octetsEssayez-le en ligne!
la source
APL (Dyalog Unicode) , 2 octets
Essayez-le en ligne!
Assez simple.
⍟
Journal⌊
solla source
⌊⍟
05AB1E , 6 octets
Essayez-le en ligne!
la source
JavaScript ,
4033 octets-3 octets grâce à DanielIndie
Prend des entrées dans la syntaxe de curry.
Essayez-le en ligne!
la source
toString
solution ne fonctionne que pour les bases jusqu'à 36.Pari / GP, 6 octets
(intégré dans la version 2.7, mars 2014. Prend deux arguments, avec une troisième référence facultative qui, si elle est présente, est définie sur la base élevée au résultat)
la source
logint
ce qui est valide et compte 5 octets de moins.Python 2, 3, 46 octets
-1 merci à jonathan
Python 1, 47 octets
la source
n~-i
est un octet plus court quen i-1
.JavaScript (Node.js) , 22 octets
Essayez-le en ligne!
Fonction récursive curry. Utiliser comme
g(P)(N)
. Moins sujet aux erreurs en virgule flottante qu'à l' utilisationMath.log
, et (je crois) le code donne des valeurs correctes tant que les deux entrées sont des entiers sûrs (en dessous2**52
).la source
Haskell ,
3534 octetsMerci @Laikoni d'avoir sauvé 1 octet
Essayez-le en ligne!
la source
J , 5 octets
Essayez-le en ligne!
la source
Langue Wolfram (Mathematica)
1510 octets(nécessite un ordre inversé sur l'entrée)
Soumission originale
la source
⌊Log@##⌋&
est un octet plus courtForth (gforth) , 35 octets
Essayez-le en ligne!
Pourrait économiser 5 octets en échangeant les paramètres d'entrée attendus, mais la question spécifie que N doit être le premier (un argument pourrait être avancé que dans un langage de suffixe "Premier" signifie haut de la pile, mais je m'en tiendrai à la lettre des règles pour maintenant)
Explication
la source
Pyth,
64 octetsEnregistré 2 octets grâce à Mmenomic
Essayez-le en ligne
Comment ça fonctionne
.l
est log B (A)Pour être honnête, je ne sais pas comment ça
F
marche. Mais si ça marche, ça marche.s
tronque un flottant en un entier pour nous donner l'entier le plus élevé pourM
.la source
/FlM
Wonder , 9 octets
Exemple d'utilisation:
Explication
Version détaillée:
C'est un style écrit sans point.
sS
transmet des éléments de liste comme arguments à une fonction (dans ce cas,log
).la source
Gforth , 31 octets
Usage
Essayez-le en ligne!
Explication
Malheureusement, FORTH utilise une pile à virgule flottante dédiée. Pour cela, je dois
SWAP
(échanger) les valeurs d'entrée afin qu'elles arrivent à la pile à virgule flottante dans le bon ordre. Je dois également déplacer les valeurs vers cette pile avecS>F
. Lors du déplacement du résultat en virgule flottante vers integer (F>S
), j'ai l'avantage d'obtenir la troncature gratuitement.Version plus courte
En étendant les exigences et en fournissant l'entrée au format flottant et dans le bon ordre, il existe une version plus courte avec 24 octets.
Essayez-le en ligne!
la source
: f .... ;
soit convertie en un programme quiKEY
ACCEPT
Husk ,
874 octetsEssayez-le en ligne!
la source
C (gcc) , 61 octets
Essayez-le en ligne!
la source
Japt , 5 octets
Essayez-le en ligne!
8 octets
Essayez-le en ligne!
la source
ì
au lieu des
ass
échouera siV>36
.V>36
.