Podana jest dowolna liczba całkowita x> 0 i dowolna podstawa y> 3.
- Zsumuj wszystkie cyfry x (jeśli są zapisane w bazie podstawowej).
- Pomnóż to przez najwyższą możliwą cyfrę (zawsze
base -1
). - Powtarzaj, aż ta wartość wyniesie
(y - 1) ^ 2
Szukano liczby iteracji i kroków.
Przykład 1:
x= 739
y= 7
searched: (7 - 1) ^ 2 = 36
based: (b7)2104
sum: (dec)7
mul: (dec)42
based: (b7)60
sum: (dec)6
mul: (dec)36
2 steps needed -> answer is [2, 739, 42, 36] or [739, 42, 36, 2]
Przykład 2:
x = 1712
y = 19
s: 324
step1: 1712 -> 360
step2: 360 -> 648
step3: 648 -> 324
3 steps needed -> answer is [3, 1712, 360, 648, 324] or [1712, 360, 648, 324, 3]
Specjalne:
W niektórych przypadkach (niektóre kombinacje z bazą 3) nie będziesz mógł (y - 1) ^ 2
polubić x = 53
i y = 3
. Z tego powodu y
musi być większy niż 3 i możesz to zignorować.
Liczba iteracji musi być pierwszą lub ostatnią wartością
Jest to wygrana w najniższej liczbie bajtów kodu w golfa .
code-golf
combinatorics
base-conversion
Dirk Reichel
źródło
źródło
Odpowiedzi:
Galaretka ,
1413 bajtów-1 bajt, drukując w pętli (
Ṅ
zastępując separację łańcuchaµ
i konkatenację;
)TryItOnline!
W jaki sposób?
Alternatywny bajt 13 drukuje każde wejście do pętli plus znak linii (
Ṅ
), a na koniec drukuje pośrednio zmniejszoną liczbę zebranych wyników, eliminując potrzebę monadycznego oddzielania łańcucha (µ
) i konkatenacji (;
).źródło
Perl 6 , 60 bajtów
Rozszerzony:
Stosowanie:
źródło
C,
116113 bajtów-3 bajty do każdorazowego przeliczania kwadratu
Niegolfowane i użytkowanie:
źródło
JavaScript (ES6),
97918482 bajtówPrzypadki testowe
Pokaż fragment kodu
źródło
Galaretka , 16 bajtów
Wydaje mi się, że i tak to opublikuję, mimo że został pobity podczas pisania, ponieważ jest to znacząco inny algorytm i napisanie go było interesujące. (Nie mogłem rozgryźć, jak
ÐĿ
przeanalizowano te dokumenty i musiałem się z tego zrezygnować, mimo że wiedziałem, że prawdopodobnie doprowadziłoby to do krótszego rozwiązania).Wypróbuj online!
Wyjaśnienie:
Użycie
<’¥
jest w zasadzie krótkim sposobem na napisanie diady (link z dwoma argumentami), która zawsze zwraca -1 (ponieważ wiemy, że odpowiedź nigdy nie będzie mniejsza niż podstawa). Wybór między rekurencyjnym uruchomieniem a rekurencyjnym całym programem pozwala nam określić, kiedy przestać zapętlać. Następnie, gdy stos się odwija pod koniec rekurencji, zwiększamy -1, aby określić liczbę kroków.źródło
MATL,
2521 bajtów4 bajty zapisane dzięki @Luis
Wypróbuj online!
Wyjaśnienie
źródło
Mathematica, 80 bajtów
to prywatny znakU+F4A1
używany do reprezentowania\[Function]
. Jeśli liczba kroków nie była wymagana w odpowiedzi, można to zrobić w 60 bajtach:źródło