У нас багато проблем на основі 10, бази 2, бази 36 або навіть бази -10 , але як бути з усіма іншими раціональними основами?
Завдання
З огляду на ціле число в базі 10 та раціональну базу, поверніть ціле число в цій базі (як масив, рядок тощо).
Процес
Важко уявити собі раціональну базу, тому давайте візуалізуємо її за допомогою Exploding Dots :
Розглянемо цю анімацію, виразивши 17 в базі 3:
Кожна крапка являє собою одиницю, а поля - цифри: правий край - це місце, середній - 3 ^ 1 місце, а лівий край - 3 ^ 2 місце.
Ми можемо почати з 17 точок у своєму місці. Однак, це база 3, тому місця, яких належить, має бути менше 3. Тому ми «вибухаємо» 3 крапки і створюємо крапку в коробці зліва. Ми повторюємо це, поки не виявимося в стабільному положенні без крапок, що розгортаються (тобто 3 крапки в одному полі).
Отже 17 в базі 10 - це 122 в базі 3.
Дробова основа аналогічна вибуху деякої кількості крапок на більш ніж одну крапку. База 3/2 вибухає 3 крапки, щоб створити 2.
Вираження 17 в базі 3/2:
Отже 17 в базі 10 дорівнює 21012 в базі 3/2.
Негативні основи працюють аналогічно, але ми повинні слідкувати за знаками (використовуючи так звані антиточки, рівні -1; представлені відкритим колом).
Вираження 17 в базовій -3:
Зауважте, є додаткові вибухи, щоб зробити знак усіх коробок однаковим (ігноруючи нулі).
Таким чином, 17 в базі 10 становить 212 в базі -3.
Негативні раціональні основи працюють аналогічно, у поєднанні вищевказаних випадків.
Правила
- Немає стандартних лазівки
- Знак кожної "цифри" у висновку повинен бути однаковим (або нульовим).
- Абсолютне значення всіх цифр повинно бути менше абсолютного значення чисельника основи.
- Можна припустити, що абсолютна величина бази більша за 1.
- Можна припустити, що раціональна основа знаходиться у найменшій зниженій формі.
- Ви можете взяти числівник та знаменник основи окремо у вводі.
- Якщо число має кілька представлень, ви можете вивести будь-яке з них. (наприклад, 12 в базі 10 може бути,
{-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}
Оскільки деякі входи можуть мати кілька представлень, я рекомендую протестувати вихід, використовуючи цей фрагмент Mathematica на TIO.
Це код-гольф , тому подання з найменшими підрахунками байтів на кожній мові виграють!
Для отримання додаткової інформації про вибухи крапок відвідайте веб-сайт глобального математичного проекту ! У них купа класних математичних речей!