Wir haben viele Herausforderungen basierend auf Basis 10, Basis 2, Basis 36 oder sogar Basis -10 , aber was ist mit all den anderen rationalen Basen?
Aufgabe
Geben Sie bei einer Ganzzahl in Basis 10 und einer rationalen Basis die Ganzzahl in dieser Basis zurück (als Array, Zeichenfolge usw.).
Prozess
Es ist schwierig, sich eine rationale Basis vorzustellen. Visualisieren wir sie also mit Exploding Dots :
Betrachten Sie diese Animation und drücken Sie 17 in Basis 3 aus:
Jeder Punkt stellt eine Einheit dar, und Kästchen stellen Ziffern dar: Das Feld ganz rechts ist der Platz eines Menschen, das mittlere Feld ist der Platz 3 ^ 1 und das Feld ganz links ist der Platz 3 ^ 2.
Wir können mit 17 Punkten am eigenen Platz beginnen. Dies ist jedoch Basis 3, daher muss die Einerstelle kleiner als 3 sein. Daher "explodieren" wir 3 Punkte und erstellen einen Punkt auf dem Feld links. Wir wiederholen dies, bis wir eine stabile Position ohne explodierbare Punkte haben (dh 3 Punkte in derselben Box).
17 in Basis 10 ist also 122 in Basis 3.
Eine gebrochene Basis ist analog zum Explodieren einer bestimmten Anzahl von Punkten in mehr als einen Punkt. Basis 3/2 würde 3 Punkte explodieren lassen, um 2 zu erzeugen.
17 in Basis 3/2 ausdrücken:
17 in Basis 10 ist also 21012 in Basis 3/2.
Negative Basen funktionieren ähnlich, aber wir müssen die Zeichen im Auge behalten (unter Verwendung sogenannter Anti-Punkte, gleich -1; dargestellt durch einen offenen Kreis).
17 in Basis -3 ausdrücken:
Beachten Sie, dass es zusätzliche Explosionen gibt, um das Vorzeichen aller Kästchen gleich zu machen (Nullen werden ignoriert).
Somit ist 17 in Basis 10 212 in Basis -3.
Negative rationale Grundlagen funktionieren in einer Kombination der beiden oben genannten Fälle ähnlich.
Regeln
- Keine Standardlücken.
- Das Vorzeichen jeder "Ziffer" in der Ausgabe muss gleich (oder Null) sein.
- Der Absolutwert aller Ziffern muss kleiner sein als der Absolutwert des Zählers der Basis.
- Sie können davon ausgehen, dass der Absolutwert der Basis größer als 1 ist.
- Sie können annehmen, dass eine rationale Basis in ihrer niedrigsten reduzierten Form vorliegt.
- Sie können den Zähler und den Nenner der Basis separat in der Eingabe verwenden.
- Wenn eine Zahl mehrere Darstellungen hat, können Sie eine davon ausgeben. (zB 12 in Basis 10 kann
{-2, -8}
und{1, 9, 2}
in Basis -10 sein)
Testfälle:
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}
Da einige Eingaben möglicherweise mehrere Darstellungen haben, empfehle ich, die Ausgabe mit diesem Mathematica-Snippet auf TIO zu testen .
Dies ist Code-Golf , also gewinnen Einsendungen mit kürzesten Bytes in jeder Sprache!
Weitere Informationen zu explodierenden Punkten finden Sie auf der Website des globalen Mathematikprojekts ! Sie haben ein paar coole Mathe-Sachen!