Find palindromic numbers in both binary and ternary bases: Difference between revisions
Content added Content deleted
Line 1,048: | Line 1,048: | ||
=={{header|Julia}}== |
=={{header|Julia}}== |
||
⚫ | |||
{{Output?}} |
|||
prin3online(n) = println(lpad(n, 15), lpad(string(n, base=2), 40), lpad(string(n, base=3), 30)) |
|||
{{works with|Julia|0.6}} |
|||
reversebase3(n) = (x = 0; while n != 0 x = 3x + (n %3); n = div(n, 3); end; x) |
|||
⚫ | |||
ispalindrome(n::Int) = ispalindrome(dec(n)) |
|||
ispalindromeinbase(n::Integer, bases::Integer...) = all(ispalindrome(base(b, n)) for b in bases) |
|||
prin3online(n) = @printf("%12d %28s %20s\n", n, base(2,n), base(3,n)) |
|||
function printpalindromes(N) |
|||
@printf("%12s %28s %20s", "Base 10", "Base 2", "Base 3\n") |
|||
lo, hi, pow2, pow3, count, i = 0, 1, 1, 1, 1, 0 |
|||
⚫ | |||
println(lpad("Number", 15), lpad("Base 2", 40), lpad("Base 3", 30)) |
|||
prin3online(1) |
|||
⚫ | |||
n = 1 |
|||
while true |
|||
k = 0 |
|||
for j in lo:hi-1 |
|||
while k < 6 |
|||
i = j |
|||
n = (3 * j + 1) * pow3 + reversebase3(j) |
|||
if ispalindromeinbase(n, 2, 3) |
|||
if ispalindrome(n, 2) |
|||
prin3online(n) |
|||
count += 1 |
|||
⚫ | |||
if count >= N |
|||
⚫ | |||
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 |
|||
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}}== |
=={{header|Kotlin}}== |