Balanced ternary: Difference between revisions

Content added Content deleted
(→‎{{header|11l}}: Small refactor)
m (→‎{{header|11l}}: privating)
Line 30: Line 30:


<syntaxhighlight lang="11l">T BalancedTernary
<syntaxhighlight lang="11l">T BalancedTernary
-:str2dig = [‘+’ = 1, ‘-’ = -1, ‘0’ = 0]
. -:str2dig = [‘+’ = 1, ‘-’ = -1, ‘0’ = 0]
-:dig2str = [1 = ‘+’, -1 = ‘-’, 0 = ‘0’]
. -:dig2str = [1 = ‘+’, -1 = ‘-’, 0 = ‘0’]
-:table = [(0, -1), (1, -1), (-1, 0), (0, 0), (1, 0), (-1, 1), (0, 1)]
. -:table = [(0, -1), (1, -1), (-1, 0), (0, 0), (1, 0), (-1, 1), (0, 1)]


[Int] digits
[Int] digits
Line 45: Line 45:
R BalancedTernary(reversed(inp).map(c -> BalancedTernary.:str2dig[c]))
R BalancedTernary(reversed(inp).map(c -> BalancedTernary.:str2dig[c]))


F :int2ternary(n)
. F :int2ternary(n)
I n == 0
I n == 0
R [Int]()
R [Int]()
Line 65: Line 65:
R reversed(.digits).map(d -> .:dig2str[d]).join(‘’)
R reversed(.digits).map(d -> .:dig2str[d]).join(‘’)


F :neg(digs)
. F :neg(digs)
R digs.map(d -> -d)
R digs.map(d -> -d)


Line 71: Line 71:
R BalancedTernary(.:neg(.digits))
R BalancedTernary(.:neg(.digits))


F :add(a, b, =c = 0)
. F :add(a, b, =c = 0)
I !(!a.empty & !b.empty)
I !(!a.empty & !b.empty)
I c == 0
I c == 0