[GS] Balanced Ternary is a number system in base 3. Instead of using (0,1,2), this system use (-1,0,1) or (-,0,+). These values are called trits (TRInary DigiT). Numbers are power of 3. For example : 89 = +81 +9 -1 = +3**4 +3**2 -3**0 = +0+0- -78 = -81 +3 = -3**4 +3**1 = -00+0 Here is a simple clock with balanced ternary display. The first line for hours, the second for minutes and the third for seconds. [Balanced Ternary Clock] ======tcl # clock-trit.tcl # Author: Gerard Sookahet # Date: 15 March 2017 # Description: Balanced ternary clock # References: https://en.wikipedia.org/wiki/Balanced_ternary package require Tk bind all exit font create myDefaultFont -family Consolas -size 32 -weight bold option add *font myDefaultFont proc every {ms body} { eval $body after $ms [list every $ms $body] } proc dec2trit n { if {$n == 0} {return "0"} while {$n != 0} { lappend trit [lindex {0 + -} [expr {$n % 3}]] set n [expr {$n / 3 + ($n % 3 == 2)}] } return [join [lreverse $trit] ""] } pack [label .clock -textvar time -bg darkblue -fg orange] every 1000 { set ::time [join [lmap x {%H %M %S} {dec2trit [scan [clock format [clock sec] -format $x] %d]}] "\n"] } ====== Balanced ternary has interesting properties : - The sign of a number is given by its most significant nonzero trit - To negate a number, you swap - and +, leaving 0 alone - Comparing any two numbers is performed by reading left-to-right and by using lexicographic order ---- <> Date and Time | Arts and crafts of Tcl-Tk programming