Biorąc pod uwagę dodatnią liczbę całkowitą n
, napisz program, który ukończy następujący proces.
- Znajdź najmniejszą dodatnią liczbę całkowitą większą niż
n
to jest idealny kwadrat i jest ona połączeniemn
i jakiejś innej liczby. Kolejność cyfrn
nie może zostać zmieniona.n
Można połączyć liczbę połączoną w celu uzyskania idealnego kwadratur_1
. - Jeśli
r_1
nie jest to idealny kwadrat, powtórz powyższy procesr_1
jako nowy wkład do procesu. Powtarzaj, ażr_k
będzie to idealny kwadrat, oznaczonys
. - Wydrukuj wartość
sqrt(s)
.
Dane wejściowe można przyjmować w dowolnym formacie. Możesz założyć, że n
jest to dodatnia liczba całkowita. Jeśli jakikolwiek r_k
ma zero wiodące (i r_k
≠ 0), zero można zignorować.
Przypadki testowe
Oto kilka przypadków testowych. Proces pokazuje powyższe kroki.
Input: 23
Process: 23, 2304, 4
Output: 2
Input: 10
Process: 10, 100, 0
Output: 0
Input: 1
Process: 1, 16, 6, 64, 4
Output: 2
Input: 5
Process: 5, 529, 29, 2916, 16
Output: 4
Input: 145
Process: 145, 145161, 161, 16129, 29, 2916, 16
Output: 4
Input: 1337
Process: 1337, 13373649, 3649, 36493681, 3681, 368102596, 2596, 25969216, 9216
Output: 96
To jest kod golfowy. Obowiązują standardowe zasady. Najkrótsza odpowiedź (w bajtach) wygrywa.
while x**.5%1:
może?Python,
200198178 bajtówźródło
math.sqrt
dom
.Brachylog , 26 bajtów
Wypróbuj online!
Ostatni przypadek testowy został pominięty w łączu TIO, ponieważ jego wykonanie zajmuje więcej niż minutę. Uruchomiłem go na moim laptopie, a poprawny wynik został osiągnięty w nie więcej niż dwie godziny.
Od drugiego do ostatniego
ℕ
jest konieczne, gdy początkowe wejście jest już doskonałym kwadratem, więc pierwszy idealny kwadrat, który ma go jako prefiks, jest sam i!
jest konieczny, aby upewnić się, że cofanie się iteruje zamiast znajdować większy połączony kwadrat, ale tak naprawdę nie wiem, dlaczego≜
jest to konieczne, po prostu wiem, że 5 daje złą odpowiedź bez tego.źródło
∧
is jest w rzeczywistości krótszy niż użycie kanapki.)Perl 6 , 101 bajtów
źródło
ES7, 116 bajtów
Tak, prawdopodobnie mógłbym zapisać bajt za pomocą
eval
.źródło