Mamy wiele wyzwań w oparciu o bazę 10, bazę 2, bazę 36, a nawet bazę -10 , ale co z wszystkimi innymi racjonalnymi bazami?
Zadanie
Biorąc pod uwagę liczbę całkowitą w podstawie 10 i bazę wymierną, zwróć liczbę całkowitą w tej podstawie (jako tablicę, łańcuch itp.).
Proces
Trudno wyobrazić sobie racjonalną bazę, więc wyobraźmy ją sobie za pomocą Exploding Dots :
Rozważ tę animację, wyrażając 17 w bazie 3:
Każda kropka reprezentuje jednostkę, a pola reprezentują cyfry: skrajne pole po prawej to miejsce jednego, pole środkowe to miejsce 3 ^ 1, a skrajne pole po lewej to 3 ^ 2.
Możemy zacząć od 17 kropek w jednym miejscu. Jest to jednak podstawa 3, więc miejsce musi być mniejsze niż 3. Dlatego „eksplodujemy” 3 kropki i tworzymy kropkę na polu po lewej stronie. Powtarzamy to, dopóki nie osiągniemy stabilnej pozycji bez punktów wybuchowych (tj. 3 kropki w tym samym polu).
Zatem 17 w podstawie 10 wynosi 122 w podstawie 3.
Podstawa ułamkowa jest analogiczna do rozbijania pewnej liczby kropek na więcej niż jedną kropkę. Baza 3/2 eksplodowałaby 3 kropkami, tworząc 2.
Wyrażanie 17 w bazie 3/2:
Zatem 17 w podstawie 10 to 21012 w podstawie 3/2.
Zasady ujemne działają podobnie, ale musimy śledzić znaki (używając tak zwanych anty-kropek, równych -1; reprezentowanych przez otwarte koło).
Wyrażanie 17 w bazie -3:
Uwaga: istnieją dodatkowe eksplozje, aby znak wszystkich pól był taki sam (ignorując zera).
Zatem 17 w podstawie 10 wynosi 212 w podstawie -3.
Negatywne racjonalne podstawy działają podobnie, w kombinacji dwóch powyższych przypadków.
Zasady
- Brak standardowych luk.
- Znak każdej „cyfry” na wyjściu musi być taki sam (lub zero).
- Wartość bezwzględna wszystkich cyfr musi być mniejsza niż wartość bezwzględna licznika podstawy.
- Możesz założyć, że wartość bezwzględna podstawy jest większa niż 1.
- Możesz założyć, że racjonalna podstawa jest w najniższej zredukowanej formie.
- Możesz wziąć licznik i mianownik podstawy osobno na wejściu.
- Jeśli liczba ma wiele reprezentacji, możesz wypisać dowolną z nich. (przykład 12 w bazie 10 można
{-2, -8}
i{1, 9, 2}
w bazie -10)
Przypadki testowe:
Format: {in, base} -> result
{7, 4/3} -> {3, 3}
{-42, -2} -> {1, 0, 1, 0, 1, 0}
{-112, -7/3} -> {-6, -5, 0, -1, 0}
{1234, 9/2} -> {2, 3, 6, 4, 1}
{60043, -37/3} -> {-33, -14, -22, -8}
Ponieważ niektóre dane wejściowe mogą mieć wiele reprezentacji, zalecam testowanie danych wyjściowych przy użyciu tego fragmentu kodu Mathematica w TIO.
To jest golf golfowy , więc wygrane z najkrótszą liczbą bajtów w każdym języku wygrywają!
Aby uzyskać więcej informacji na temat eksplodujących kropek, odwiedź stronę globalnego projektu matematycznego ! Mają mnóstwo fajnych rzeczy matematycznych!