ベース10、ベース2、ベース36、さらにはベース-10に基づいて多くの課題がありますが、他のすべての合理的なベースはどうでしょうか?
仕事
基数10の整数と有理数基数を指定すると、その基数の整数を(配列、文字列などとして)返します。
処理する
合理的なベースを想像するのは難しいので、Exploding Dotsを使用して視覚化しましょう。
ベース3で17を表すこのアニメーションを検討してください。
各ドットは単位を表し、ボックスは数字を表します。右端のボックスは自分の場所、中央のボックスは3 ^ 1の場所、左端のボックスは3 ^ 2の場所です。
私たちは自分の場所に17個の点から始めることができます。ただし、これは3を基数としているため、1の場所は3未満でなければなりません。したがって、3つのドットを「爆発」させ、左側のボックスにドットを作成します。爆発可能なドットのない安定した位置になるまでこれを繰り返します(つまり、同じボックスに3つのドット)。
したがって、基数10の17は基数3の122です。
分数ベースは、いくつかのドットを複数のドットに分解することに似ています。ベース3/2は3ドットを爆発させて2を作成します。
ベース3/2で17を表現:
したがって、基数10の17は基数3/2の21012です。
負の基底も同様に機能しますが、記号を追跡する必要があります(-1に等しいいわゆるアンチドットを使用します。白丸で表されます)。
ベース-3で17を表現:
すべてのボックスの記号を同じにするために、余分な爆発があります(ゼロを無視して)。
したがって、基数10の17は基数-3の212です。
上記の2つのケースの組み合わせでは、負の有理数ベースも同様に機能します。
ルール
- 標準的な抜け穴はありません。
- 出力の各「数字」の符号は同じ(またはゼロ)でなければなりません。
- すべての数字の絶対値は、基数の分子の絶対値より小さくなければなりません。
- ベースの絶対値は1より大きいと仮定できます。
- 有理数ベースは、その最小の縮小形にあると仮定できます。
- 入力では、分子のベースと分母を別々に使用できます。
- 数値に複数の表現がある場合、それらのいずれかを出力できます。(例えば、ベース10に12とすることができる
{-2, -8}
と{1, 9, 2}
ベース-10で)
テストケース:
フォーマット: {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}
一部の入力には複数の表現がある場合があるため、TIOでこのMathematicaスニペットを使用して出力をテストすることをお勧めします。
これはcode-golfであるため、各言語でのバイト数が最短の提出が勝ちです!
爆発ドットの詳細については、グローバル数学プロジェクトのWebサイトをご覧ください!彼らにはたくさんのかっこいいマティーグッズがあります!