Gegeben seien zwei positive ganze Zahlen A und B , Rückkehr der Position p das minimiert die Anzahl von Primfaktoren (Zählen Multiplizitäten) der resultierenden ganze Zahl ist , wenn B ist eingefügt in A bei p .
Bei A = 1234 und B = 32 sind dies beispielsweise die möglichen Einfügungen (wobei p mit 0 indiziert ist) und die entsprechenden Informationen zu ihren Primfaktoren:
p | Ergebnis | Primfaktoren | Ω (N) / Anzahl 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
Sie können sehen, dass das Ergebnis eine minimale Anzahl von Primfaktoren hat, 3, wenn p 1 ist. In diesem speziellen Fall sollten Sie also 1 ausgeben .
Technische Daten
Wenn es mehrere Positionen p gibt , die das Ergebnis minimieren, können Sie alle oder nur eine davon ausgeben.
Sie können 0-Indizierung oder 1-Indizierung für p wählen , aber diese Auswahl muss konsistent sein.
A und B können als ganze Zahlen, Zeichenfolgen oder Ziffernlisten verwendet werden.
Sie können in jeder Programmiersprache antreten und über jede Standardmethode Eingaben und Ausgaben vornehmen. Beachten Sie jedoch, dass diese Lücken standardmäßig verboten sind. Das ist Code-Golf, also gewinnt die kürzeste Einsendung (in Bytes)!
Testfälle
A, B -> p (0-indiziert) / p (1-indiziert) 1234, 32 -> 1/2 3456, 3 -> 4/5 378, 1824 -> 0/1 1824, 378 -> 4/5 67, 267 -> Irgendwelche oder alle unter: [1, 2] / [2, 3] 435, 1 -> Beliebige oder alle unter: [1, 2, 3] / [2, 3, 4] 378100, 1878980901 -> Beliebige oder alle unter: [5, 6] / [6, 7]
Der Einfachheit halber finden Sie hier eine Liste von Tupeln, die jedes Eingangspaar darstellen:
[(1234, 32), (3456, 3), (378, 1824), (1824, 378), (67, 267), (435, 1), (378100, 1878980901)]
quelle
132234
statt1
.Antworten:
Schale , 16 Bytes
Erwarten Sie die Eingabe als Zeichenfolge, versuchen Sie es online!
Erläuterung
quelle
MATL , 25 Bytes
Eingaben sind Zeichenfolgen in umgekehrter Reihenfolge. Die Ausgabe ist 1-basiert. Bei Gleichstand wird die niedrigste Position ausgegeben.
Probieren Sie es online! Oder überprüfen Sie alle Testfälle .
Erläuterung
quelle
Pyth,
201311 BytesProbieren Sie es online aus
Erläuterung
quelle
Jelly , 21 Bytes
Probieren Sie es online!
-1 Danke an Herrn Xcoder .
Gibt alle möglichen Positionen zurück.
quelle
Japt ,
2221 BytesDas fühlte sich viel zu lange an, als ich es geschrieben habe, aber wenn man sich einige der anderen Lösungen ansieht, scheint es tatsächlich etwas wettbewerbsfähig zu sein. Trotzdem gibt es wahrscheinlich ein bisschen Raum für Verbesserungen -
cNq)
nervt mich besonders. Erklärung folgt.Übernimmt die erste Eingabe als Zeichenfolge und die zweite entweder als Ganzzahl oder als Zeichenfolge. Das Ergebnis ist 0-indiziert und gibt den ersten Index zurück, wenn mehrere Lösungen vorhanden sind.
Versuch es
Erläuterung
quelle
PowerShell , 228 Byte
Probieren Sie es online!
(Scheint lang / Golf Vorschläge willkommen. Auch Timeout auf TIO für den letzten Testfall, aber der Algorithmus sollte für diesen Fall ohne Probleme funktionieren.)
PowerShell verfügt über keine eingebauten Primfaktor-Funktionen. Daher ist dieser Code aus meiner Antwort auf Prime Factors Buddies entlehnt . Das ist die erste Zeile
function
Erklärung .Wir nehmen Eingaben
$a,$b
und setzen$p
sie dann als leere Hashtabelle. Als nächstes nehmen wir den String$b$a
, wandeln ihn mit dem Komma-Operator in ein Singleton-Array um,
und verknüpfen das Array mit Dingen . Das Zeug ist eine Schleife$a
, die$b
an jeder Stelle eingefügt und schließlich mit einem Array verkettet wird$a$b
.Zu diesem Zeitpunkt haben wir
$b
an jedem Punkt in ein Array von eingefügt$a
. Wir senden dieses Array dann durch eine for-Schleife|%{...}
. Bei jeder Iteration fügen wir in unsere Hash-Tabelle$i++
die Anzahl der.count
Primfaktoren ein,f
die ein bestimmtes Element aufweist$_
.Schließlich nehmen wir
sort
die Hash-Tabelle, die aufvalue
s basiert0
, und wählen ihreName
(dh die$i
des Index) aus. Das bleibt in der Pipeline und die Ausgabe ist implizit.quelle
05AB1E , 18 Bytes
Probieren Sie es online!
quelle
05AB1E ,
2721 BytesProbieren Sie es online!
Es gibt das niedrigste 0-indizierte p zurück .
Danke an @Enigma für -6 Bytes!
Erläuterung
quelle
ηõ¸ì¹.sRõ¸«)øεIýÒg}Wk
.Sauber ,
165... 154 BytesProbieren Sie es online!
quelle
Python 2 ,
165146 BytesProbieren Sie es online!
quelle
JavaScript (ES6), 120 Byte
Nimmt die Eingabe als 2 Zeichenfolgen. Gibt eine 0-indizierte Position zurück.
Testfälle
Code-Snippet anzeigen
quelle
J, 60 Bytes
Explizite Dyade. Nimmt B rechts, A links.
0-indizierte Ausgabe.
Könnte sich verbessern, wenn keine Boxen verwendet werden.
Erläuterung:
quelle
Python 3, 128 Bytes
0-indiziert; nimmt Zeichenfolgen als Parameter auf. -6 Bytes dank Jonathan Frech.
quelle
:\n a
->:a
.Python, 122 Bytes
In der Praxis überschreitet dies ziemlich schnell die voreingestellte maximale Rekursionstiefe.
quelle