Knuth's power tree: Difference between revisions
Added 11l
No edit summary |
Alextretyak (talk | contribs) (Added 11l) |
||
Line 78:
::* link to Rosetta Code [http://rosettacode.org/wiki/Addition-chain_exponentiation addition-chain exponentiation].
<br><br>
=={{header|11l}}==
{{trans|Python}}
<lang 11l>V p = [1 = 0]
V lvl = [[1]]
F path(n)
I !n
R [Int]()
L n !C :p
[Int] q
L(x) :lvl[0]
L(y) path(x)
I !(x + y C :p)
:p[x + y] = x
q.append(x + y)
:lvl[0] = q
R path(:p[n]) [+] [n]
F tree_pow_i(x, n)
V (r, p) = ([0 = BigInt(1), 1 = BigInt(x)], 0)
L(i) path(n)
r[i] = r[i - p] * r[p]
p = i
R r[n]
F tree_pow_f(x, n)
V (r, p) = ([0 = 1.0, 1 = x], 0)
L(i) path(n)
r[i] = r[i - p] * r[p]
p = i
R r[n]
F show_pow_i(x, n)
print("#.: #.\n#.^#. = #.\n".format(n, path(n), x, n, tree_pow_i(x, n)))
F show_pow_f(x, n)
print("#.: #.\n#.^#. = #.6\n".format(n, path(n), x, n, tree_pow_f(x, n)))
L(x) 18
show_pow_i(2, x)
show_pow_i(3, 191)
show_pow_f(1.1, 81)</lang>
{{out}}
<pre>
0: []
2^0 = 1
1: [1]
2^1 = 2
2: [1, 2]
2^2 = 4
3: [1, 2, 3]
2^3 = 8
4: [1, 2, 4]
2^4 = 16
5: [1, 2, 3, 5]
2^5 = 32
6: [1, 2, 3, 6]
2^6 = 64
7: [1, 2, 3, 5, 7]
2^7 = 128
8: [1, 2, 4, 8]
2^8 = 256
9: [1, 2, 3, 6, 9]
2^9 = 512
10: [1, 2, 3, 5, 10]
2^10 = 1024
11: [1, 2, 3, 5, 10, 11]
2^11 = 2048
12: [1, 2, 3, 6, 12]
2^12 = 4096
13: [1, 2, 3, 5, 10, 13]
2^13 = 8192
14: [1, 2, 3, 5, 7, 14]
2^14 = 16384
15: [1, 2, 3, 5, 10, 15]
2^15 = 32768
16: [1, 2, 4, 8, 16]
2^16 = 65536
17: [1, 2, 4, 8, 16, 17]
2^17 = 131072
191: [1, 2, 3, 5, 7, 14, 19, 38, 57, 95, 190, 191]
3^191 = 13494588674281093803728157396523884917402502294030101914066705367021922008906273586058258347
81: [1, 2, 3, 5, 10, 20, 40, 41, 81]
1.1^81 = 2253.240236
</pre>
=={{header|EchoLisp}}==
|