Balanced ternary: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) m (Automated syntax highlighting fixup (second round - minor fixes)) |
Alextretyak (talk | contribs) (→{{header|11l}}: Static type variables and static methods are supported now) |
||
Line 33: | Line 33: | ||
R a I/ b |
R a I/ b |
||
R (a - b + 1) I/ b |
R (a - b + 1) I/ b |
||
F BalancedTernary_int2ternary(n) |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
F BalancedTernary_neg(digs) |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
E |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
T BalancedTernary |
T BalancedTernary |
||
⚫ | |||
⚫ | |||
⚫ | |||
[Int] digits |
[Int] digits |
||
Line 73: | Line 46: | ||
E |
E |
||
X ValueError(‘BalancedTernary: Wrong input digits.’) |
X ValueError(‘BalancedTernary: Wrong input digits.’) |
||
F :int2ternary(n) |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
F to_int() |
F to_int() |
||
Line 80: | Line 62: | ||
I .digits.empty |
I .digits.empty |
||
R ‘0’ |
R ‘0’ |
||
R reversed(.digits).map(d -> |
R reversed(.digits).map(d -> .:dig2str[d]).join(‘’) |
||
F :neg(digs) |
|||
⚫ | |||
F -() |
|||
R BalancedTernary(.:neg(.digits)) |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
E |
|||
⚫ | |||
F +(b) |
F +(b) |
||
R BalancedTernary( |
R BalancedTernary(.:add(.digits, b.digits)) |
||
F -(b) |
F -(b) |
||
R (.) + |
R (.) + (-b) |
||
F *(b) |
F *(b) |
||
Line 94: | Line 96: | ||
E |
E |
||
[Int] x |
[Int] x |
||
I a[0] == -1 {x = |
I a[0] == -1 {x = .:neg(b)} |
||
E I a[0] == 0 {} |
E I a[0] == 0 {} |
||
E I a[0] == 1 {x = b} |
E I a[0] == 1 {x = b} |
||
Line 100: | Line 102: | ||
assert(0B) |
assert(0B) |
||
V y = [0] [+] @_mul(a[1..], b) |
V y = [0] [+] @_mul(a[1..], b) |
||
R |
R .:add(x, y) |
||
R BalancedTernary(_mul(.digits, b.digits)) |
R BalancedTernary(_mul(.digits, b.digits)) |
||
F createBalancedTernaryFromStr(inp) |
F createBalancedTernaryFromStr(inp) |
||
R BalancedTernary(reversed(inp).map(c -> |
R BalancedTernary(reversed(inp).map(c -> BalancedTernary.:str2dig[c])) |
||
F createBalancedTernaryFromInt(inp) |
F createBalancedTernaryFromInt(inp) |
||
R BalancedTernary( |
R BalancedTernary(BalancedTernary.int2ternary(inp)) |
||
V a = createBalancedTernaryFromStr(‘+-0++0+’) |
V a = createBalancedTernaryFromStr(‘+-0++0+’) |