Biorąc pod uwagę dwie dodatnie liczby całkowite A i B , zwróć pozycję p, która minimalizuje liczbę czynników pierwszych (licząc krotność) wynikowej liczby całkowitej, gdy B zostanie wstawione do A w punkcie p .
Na przykład, biorąc pod uwagę A = 1234 i B = 32 , są to możliwe wstawienia (przy czym p ma indeks 0) i odpowiednie informacje o ich czynnikach głównych:
p | Wynik | Czynniki pierwsze | Ω (N) / Count 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
Widać, że wynik ma minimalną liczbę czynników pierwszych, 3, gdy p wynosi 1. W tym konkretnym przypadku powinieneś otrzymać 1 .
Okular
Jeśli istnieje wiele pozycji p, które minimalizują wynik, możesz wybrać wyjście wszystkich z nich lub dowolnej z nich.
Możesz wybrać indeksowanie 0 lub indeksowanie 1 dla p , ale ten wybór musi być spójny.
A i B mogą być traktowane jako liczby całkowite, ciągi znaków lub listy cyfr.
Możesz konkurować w dowolnym języku programowania i możesz przyjmować dane wejściowe i generować dane wyjściowe za pomocą dowolnej standardowej metody , zwracając uwagę, że te luki są domyślnie zabronione. To jest golf golfowy, więc wygrywa najkrótsze zgłoszenie (w bajtach)!
Przypadki testowe
A, B -> p (indeksowane 0) / p (indeksowane 1) 1234, 32 -> 1/2 3456, 3 -> 4/5 378,1824 -> 0/1 1824, 378 -> 4/5 67, 267 -> Dowolne lub wszystkie spośród: [1, 2] / [2, 3] 435, 1 -> Dowolne lub wszystkie spośród: [1, 2, 3] / [2, 3, 4] 378100, 1878980901 -> Dowolne lub wszystkie spośród: [5, 6] / [6, 7]
Dla wygody oto lista krotek reprezentujących każdą parę danych wejściowych:
[(1234, 32), (3456, 3), (378, 1824), (1824, 378), (67, 267), (435, 1), (378100, 1878980901)]
źródło
132234
zamiast1
.Odpowiedzi:
Łuska , 16 bajtów
Oczekuje wprowadzania jako ciągów, spróbuj online!
Wyjaśnienie
źródło
MATL , 25 bajtów
Dane wejściowe są łańcuchami w odwrotnej kolejności. Wyjście jest oparte na 1. W przypadku remisu generowana jest najniższa pozycja.
Wypróbuj online! Lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie
źródło
Pyth,
201311 bajtówWypróbuj online
Wyjaśnienie
źródło
Galaretka , 21 bajtów
Wypróbuj online!
-1 dzięki Mr. Xcoder .
Zwraca wszystkie możliwe pozycje.
źródło
Japt ,
2221 bajtówWydawało mi się, że jest to zbyt długo, kiedy to pisałem, ale patrząc na niektóre inne rozwiązania, wydaje się to nieco konkurencyjne. Mimo to prawdopodobnie jest trochę miejsca na ulepszenia -
cNq)
w szczególności mnie to denerwuje. Wyjaśnienie do naśladowania.Pobiera pierwsze wejście jako ciąg znaków, a drugie jako liczbę całkowitą lub ciąg znaków. Wynik jest indeksowany na 0 i zwróci pierwszy indeks, jeśli istnieje wiele rozwiązań.
Spróbuj
Wyjaśnienie
źródło
PowerShell , 228 bajtów
Wypróbuj online!
(Wydaje się, że długie / golfowe sugestie są mile widziane. Również limit czasu dla TIO dla ostatniego przypadku testowego, ale algorytm powinien działać dla tego przypadku bez problemu.)
Program PowerShell nie ma żadnych wbudowanych głównych faktoryzacji, więc pożycza kod z mojej odpowiedzi na temat znajomych Prime Factors . To
function
deklaracja pierwszego wiersza .Bierzemy dane wejściowe,
$a,$b
a następnie ustawiamy$p
się jako pusta tablica mieszająca. Następnie bierzemy ciąg$b$a
, zamieniamy go w tablicę singletonową za pomocą operatora przecinka,
i konkatenujemy tablicę za pomocą rzeczy . Materiał jest pętla poprzez$a
wstawienie$b
w każdym punkcie, w końcu łączone z macierzach$a$b
.W tym momencie mamy tablicę
$b
wstawioną w każdym punkcie$a
. Następnie wysyłamy tę tablicę przez pętlę for|%{...}
. Każda iteracja, możemy wstawić do naszej hashtable w pozycji o ile czynniki pierwsze , że dany element ma.$i++
.count
f
$_
Na koniec mamy
sort
tablicę mieszającą opartą navalue
s, weźmy0
jej i wybierz jejName
(tj.$i
Indeks). Pozostaje to w potoku, a dane wyjściowe są niejawne.źródło
05AB1E , 18 bajtów
Wypróbuj online!
źródło
05AB1E ,
2721 bajtówWypróbuj online!
Zwraca najniższą p -indeksowaną przez 0 .
Dzięki @Enigma za -6 bajtów!
Wyjaśnienie
źródło
ηõ¸ì¹.sRõ¸«)øεIýÒg}Wk
.Czysty ,
165... 154 bajtówWypróbuj online!
źródło
Python 2 ,
165146 bajtówWypróbuj online!
źródło
JavaScript (ES6), 120 bajtów
Pobiera dane wejściowe jako 2 ciągi. Zwraca pozycję z indeksowaniem 0.
Przypadki testowe
Pokaż fragment kodu
źródło
J, 60 bajtów
Wyraźna diada. Bierze B po prawej, A po lewej.
Wyjście indeksowane 0.
Może być możliwe ulepszenie poprzez nieużywanie skrzynek.
Wyjaśnienie:
źródło
Python 3, 128 bajtów
0-indeksowane; przyjmuje parametry jako parametry. -6 bajtów dzięki Jonathanowi Frechowi.
źródło
:\n a
->:a
.Python, 122 bajty
W praktyce dość szybko przekracza domyślną maksymalną głębokość rekurencji.
źródło