Data update
This commit is contained in:
parent
ed705008a8
commit
0df55f9f24
2196 changed files with 32999 additions and 3075 deletions
100
Task/Balanced-ternary/Bruijn/balanced-ternary.bruijn
Normal file
100
Task/Balanced-ternary/Bruijn/balanced-ternary.bruijn
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
:import std/Combinator .
|
||||
:import std/Logic .
|
||||
:import std/Pair .
|
||||
|
||||
# negative trit indicating coefficient of (-1)
|
||||
t⁻ [[[2]]]
|
||||
|
||||
# positive trit indicating coefficient of (+1)
|
||||
t⁺ [[[1]]]
|
||||
|
||||
# zero trit indicating coefficient of 0
|
||||
t⁰ [[[0]]]
|
||||
|
||||
# shifts a negative trit into a balanced ternary number
|
||||
↑⁻‣ [[[[[2 (4 3 2 1 0)]]]]]
|
||||
|
||||
# shifts a positive trit into a balanced ternary number
|
||||
↑⁺‣ [[[[[1 (4 3 2 1 0)]]]]]
|
||||
|
||||
# shifts a zero trit into a balanced ternary number
|
||||
↑⁰‣ [[[[[0 (4 3 2 1 0)]]]]]
|
||||
|
||||
# shifts a specified trit into a balanced ternary number
|
||||
…↑… [[[[[[5 2 1 0 (4 3 2 1 0)]]]]]]
|
||||
|
||||
# negates a balanced ternary number
|
||||
-‣ [[[[[4 3 1 2 0]]]]]
|
||||
|
||||
# increments a balanced ternary number (can introduce leading 0s)
|
||||
++‣ [~(0 z a⁻ a⁺ a⁰)]
|
||||
z (+0) : (+1)
|
||||
a⁻ &[[↑⁻1 : ↑⁰1]]
|
||||
a⁺ &[[↑⁺1 : ↑⁻0]]
|
||||
a⁰ &[[↑⁰1 : ↑⁺1]]
|
||||
|
||||
# decrements a balanced ternary number (can introduce leading 0s)
|
||||
--‣ [~(0 z a⁻ a⁺ a⁰)]
|
||||
z (+0) : (-1)
|
||||
a⁻ &[[↑⁻1 : ↑⁺0]]
|
||||
a⁺ &[[↑⁺1 : ↑⁰1]]
|
||||
a⁰ &[[↑⁰1 : ↑⁻1]]
|
||||
|
||||
# converts the normal balanced ternary representation into abstract form
|
||||
→^‣ [0 z a⁻ a⁺ a⁰]
|
||||
z (+0)
|
||||
a⁻ [[[[[2 4]]]]]
|
||||
a⁺ [[[[[1 4]]]]]
|
||||
a⁰ [[[[[0 4]]]]]
|
||||
|
||||
# converts the abstracted balanced ternary representation back to normal
|
||||
→_‣ y [[0 z a⁻ a⁺ a⁰]]
|
||||
z (+0)
|
||||
a⁻ [↑⁻(2 0)]
|
||||
a⁺ [↑⁺(2 0)]
|
||||
a⁰ [↑⁰(2 0)]
|
||||
|
||||
# adds two balanced ternary numbers (can introduce leading 0s)
|
||||
…+… [[[c (0 z a⁻ a⁺ a⁰)] 1 →^0]]
|
||||
b⁻ [1 ↑⁺(3 0 t⁻) ↑⁰(3 0 t⁰) ↑⁻(3 0 t⁰)]
|
||||
b⁰ [1 ↑ (3 0 t⁰)]
|
||||
b⁺ [1 ↑⁰(3 0 t⁰) ↑⁻(3 0 t⁺) ↑⁺(3 0 t⁰)]
|
||||
a⁻ [[[1 (b⁻ 1) b⁻' b⁰ b⁻]]]
|
||||
b⁻' [1 ↑⁰(3 0 t⁻) ↑⁻(3 0 t⁰) ↑⁺(3 0 t⁻)]
|
||||
a⁺ [[[1 (b⁺ 1) b⁰ b⁺' b⁺]]]
|
||||
b⁺' [1 ↑⁺(3 0 t⁰) ↑⁰(3 0 t⁺) ↑⁻(3 0 t⁺)]
|
||||
a⁰ [[[1 (b⁰ 1) b⁻ b⁺ b⁰]]]
|
||||
z [[0 --(→_1) ++(→_1) →_1]]
|
||||
c [[1 0 t⁰]]
|
||||
|
||||
# subtracts two balanced ternary numbers (can introduce leading 0s)
|
||||
…-… [[1 + -0]]
|
||||
|
||||
# multiplicates two balanced ternary numbers (can introduce leading 0s)
|
||||
…⋅… [[1 z a⁻ a⁺ a⁰]]
|
||||
z (+0)
|
||||
a⁻ [↑⁰0 - 1]
|
||||
a⁺ [↑⁰0 + 1]
|
||||
a⁰ [↑⁰0]
|
||||
|
||||
# true if balanced ternary number is zero
|
||||
=?‣ [0 true [false] [false] i]
|
||||
|
||||
# true if two balanced ternary numbers are equal
|
||||
# → ignores leading 0s!
|
||||
…=?… [[[0 z a⁻ a⁺ a⁰] 1 →^0]]
|
||||
z [=?(→_0)]
|
||||
a⁻ [[0 false [2 0] [false] [false]]]
|
||||
a⁺ [[0 false [false] [2 0] [false]]]
|
||||
a⁰ [[0 (1 0) [false] [false] [2 0]]]
|
||||
|
||||
main [[0]]
|
||||
|
||||
# --- tests/examples ---
|
||||
|
||||
:test ((-42) + (-1) =? (-43)) (true)
|
||||
:test ((+1) + (+2) =? (+3)) (true)
|
||||
:test ((-42) - (-1) =? (-41)) (true)
|
||||
:test ((+1) - (+2) =? (-1)) (true)
|
||||
:test ((-1) ⋅ (+42) =? (-42)) (true)
|
||||
:test ((+3) ⋅ (+11) =? (+33)) (true)
|
||||
Loading…
Add table
Add a link
Reference in a new issue