Кто-нибудь знает (или может указать какой-то источник, о котором можно прочитать) метод или алгоритм преобразования числа, представленного в двоичной системе счисления, в троичную (мой конкретный случай) или универсальный алгоритм для таких преобразований?
Решение, которое я уже реализовал, состоит в том, чтобы сначала преобразовать число в десятичную систему счисления, а затем преобразовать его в требуемую систему счисления. Это работает, но есть два шага. Интересно, можно ли это сделать за один шаг без предварительной реализации троичной арифметики? Есть какая-то хитрость, ребята?
UPD: Кажется, мне не удалось четко описать, какой способ конвертации я ищу. Я не прошу какой-то способ преобразования базы 2 в базу 3, я знаю, как это сделать. Вы можете подумать, что у меня есть алгебраические структуры данных для троичных и двоичных чисел, в Haskell это выглядит так:
data BDigit = B0 | B1
type BNumber = [BDigit]
data TDigit = T0 | T1 | T2
type TNumber = [TDigit]
И есть два очевидных способа преобразовать одно в другое: во-первых, сначала преобразовать его в целое число и получить результат (неинтересный способ), во-вторых, реализовать собственное умножение и сложение в базе 3 и вычислить результат, умножив числовые значения на соответствующая степень двойки (прямая и тяжелая).
Поэтому мне интересно, есть ли другой метод, кроме этих двух.