Find palindromic numbers in both binary and ternary bases: Difference between revisions
Find palindromic numbers in both binary and ternary bases (view source)
Revision as of 04:21, 15 May 2019
, 5 years ago→{{header|Julia}}
Line 1,048:
=={{header|Julia}}==
prin3online(n) = println(lpad(n, 15), lpad(string(n, base=2), 40), lpad(string(n, base=3), 30))
reversebase3(n) = (x = 0; while n != 0 x = 3x + (n %3); n = div(n, 3); end; x)
▲<lang julia>ispalindrome(str::String) = str == reverse(str)
function printpalindromes(N)
lo, hi, pow2, pow3, count, i = 0, 1, 1, 1, 1, 0
prin3online(0)▼
println(lpad("Number", 15), lpad("Base 2", 40), lpad("Base 3", 30))
▲ prin3online(0)
while true
for j in lo:hi-1
n = (3 * j + 1) * pow3 + reversebase3(j)
count += 1
end▼
if count >= N
end</lang>▼
return
end
end
end
if i == pow3
pow3 *= 3
else
pow2 *= 4
end
while true
while pow2 <= pow3
pow2 *= 4
end
lo2 = div(div(pow2, pow3) - 1, 3)
hi2 = div(div(pow2 * 2, pow3), 3) + 1
lo3 = div(pow3, 3)
hi3 = pow3
if lo2 >= hi3
pow3 *= 3
elseif lo3 >= hi2
pow2 *= 4
else
lo = max(lo2, lo3)
hi = min(hi2, hi3)
break
end
end
▲ end
end
printpalindromes(6)
<pre>
Number Base 2 Base 3
0 0 0
1 1 1
6643 1100111110011 100010001
1422773 101011011010110110101 2200021200022
5415589 10100101010001010100101 101012010210101
90396755477 1010100001100000100010000011000010101 22122022220102222022122
</pre>
=={{header|Kotlin}}==
|