#!/usr/bin/ruby

#
## https://rosettacode.org/wiki/Find_palindromic_numbers_in_both_binary_and_ternary_bases
#

var format = "%11s %24s %38s\n"
format.printf("decimal", "ternary", "binary")
format.printf(0, 0, 0)

var nums = []

for n in (0 .. 1e3) {
    var pal = n.base(3)||''
    var b3 = (pal + '1' + pal.flip)
    var b2 = Num(b3, 3).base(2)
    if (b2 == b2.flip) {
        nums << Num(b2, 2)
        format.printf(Num(b2, 2), b3, b2)
    }
}

assert_eq(nums, [1, 6643, 1422773, 5415589])