Étant donné deux entiers positifs A et B , renvoyez la position p qui minimise le nombre de facteurs premiers (comptage des multiplicités) de l'entier résultant, lorsque B est inséré dans A en p .
Par exemple, étant donné A = 1234 et B = 32 , ce sont les insertions possibles (avec p étant indexé 0) et les informations correspondantes sur leurs facteurs premiers:
p | Résultat | Facteurs premiers | Ω (N) / Nombre 0 | 321234 | [2, 3, 37, 1447] | 4 1 | 132234 | [2, 3, 22039] | 3 2 | 123234 | [2, 3, 19, 23, 47] | 5 3 | 123324 | [2, 2, 3, 43, 239] | 5 4 | 123432 | [2, 2, 2, 3, 37, 139] | 6
Vous pouvez voir que le résultat a un nombre minimal de facteurs premiers, 3, lorsque p vaut 1. Donc, dans ce cas particulier, vous devez sortir 1 .
Spécifications
S'il existe plusieurs positions p qui minimisent le résultat, vous pouvez choisir de les afficher toutes ou l'une d'entre elles.
Vous pouvez choisir l'indexation 0 ou l'indexation 1 pour p , mais ce choix doit être cohérent.
A et B peuvent être considérés comme des entiers, des chaînes ou des listes de chiffres.
Vous pouvez concurrencer dans n'importe quel langage de programmation et pouvez prendre des entrées et fournir des sorties par n'importe quelle méthode standard , tout en prenant note que ces failles sont interdites par défaut. Il s'agit de code-golf, donc la soumission la plus courte (notée en octets) gagne!
Cas de test
A, B -> p (indexé 0) / p (indexé 1) 1234, 32 -> 1/2 3456, 3 -> 4/5 378, 1824 -> 0/1 1824, 378 -> 4/5 67, 267 -> Tout ou partie parmi: [1, 2] / [2, 3] 435, 1 -> Tout ou partie parmi: [1, 2, 3] / [2, 3, 4] 378100, 1878980901 -> Tout ou partie parmi: [5, 6] / [6, 7]
Pour plus de commodité, voici une liste de tuples représentant chaque paire d'entrées:
[(1234, 32), (3456, 3), (378, 1824), (1824, 378), (67, 267), (435, 1), (378100, 1878980901)]
la source
132234
au lieu de1
.Réponses:
Husk , 16 octets
Attend les entrées sous forme de chaînes, essayez-les en ligne!
Explication
la source
MATL , 25 octets
Les entrées sont des chaînes dans l'ordre inverse. La sortie est basée sur 1. S'il y a égalité, la position la plus basse est sortie.
Essayez-le en ligne! Ou vérifiez tous les cas de test .
Explication
la source
Pyth,
201311 octetsEssayez-le en ligne
Explication
la source
Gelée , 21 octets
Essayez-le en ligne!
-1 merci à M. Xcoder .
Renvoie toutes les positions possibles.
la source
Japt ,
2221 octetsCela m'a paru beaucoup trop long pendant que je l'écrivais mais, en regardant certaines des autres solutions, cela semble en fait quelque peu compétitif. Pourtant, il y a probablement un peu de place à l'amélioration - Cela
cNq)
me dérange en particulier. Explication à suivre.Prend la première entrée sous forme de chaîne et la seconde sous forme d'entier ou de chaîne. Le résultat est indexé 0 et renverra le premier index s'il existe plusieurs solutions.
Essayez-le
Explication
la source
PowerShell , 228 octets
Essayez-le en ligne!
(Semble long / suggestions de golf bienvenues. Expire également sur TIO pour le dernier cas de test, mais l'algorithme devrait fonctionner pour ce cas sans problème.)
PowerShell n'a pas de facteurs de factorisation principaux intégrés, donc cela emprunte du code à ma réponse sur Prime Factors Buddies . C'est la
function
déclaration de la première ligne .Nous prenons la saisie
$a,$b
et définissons ensuite$p
une table de hachage vide. Ensuite, nous prenons la chaîne$b$a
, la transformons en un tableau singleton avec l'opérateur virgule,
et nous concaténons le tableau avec des éléments . Le truc est une boucle$a
, insérée$b
à chaque point, enfin concaténée avec le tableau$a$b
.À ce stade, nous avons un tableau d'
$b
inséré à chaque point$a
. Nous envoyons ensuite ce tableau via une boucle for|%{...}
. Chaque itération, nous insérons dans notre Hashtable à la position$i++
du.count
combien de facteurs principaux def
cet élément particulier$_
a.Enfin, nous
sort
la table de hachage basée survalue
s, prenons la0
th de celui-ci, et sélectionnez sonName
(c'est-à-dire le$i
de l'index). Cela reste sur le pipeline et la sortie est implicite.la source
05AB1E , 18 octets
Essayez-le en ligne!
la source
05AB1E ,
2721 octetsEssayez-le en ligne!
Il renvoie le p le moins indexé .
Merci à @Enigma pour -6 octets!
Explication
la source
ηõ¸ì¹.sRõ¸«)øεIýÒg}Wk
.Nettoyer ,
165... 154 octetsEssayez-le en ligne!
la source
Python 2 ,
165146 bytesEssayez-le en ligne!
la source
JavaScript (ES6), 120 octets
Prend l'entrée en 2 chaînes. Renvoie une position indexée 0.
Cas de test
Afficher l'extrait de code
la source
J, 60 octets
Dyade explicite. Prend B à droite, A à gauche.
Sortie indexée 0.
Il pourrait être possible de s'améliorer en n'utilisant pas de boîtes.
Explication:
la source
Python 3, 128 octets
Indexé 0; prend les chaînes comme paramètres. -6 octets grâce à Jonathan Frech.
la source
:\n a
->:a
.Python, 122 octets
En pratique, cela dépasse assez rapidement la profondeur de récursivité maximale par défaut.
la source