# There is a clever system for encoding complex numbers, developed by W. Penney (JACM 12 (1965) pp. 247-248). He notes that complex numbers can be represented by their "base i-1" representation, using only the digits 0 and 1. A bit more detail is given at wikipedia .
#
# Connecting the Gaussian integers in order by their representation in Penney's system produces a pretty self-similar curve closely related to the Dragon Curve. Here's a Tcl/Tk script that does it; it breaks down the integers into subranges to show the self-similarity of the curve.
package require Tk
# We compute the powers of ( -1+i ) and keep them in the list, powers
set y [list 1 0] set powers {} for { set i 0 } { $i < 32 } { incr i } { lappend powers $y foreach { a b } $y break set y [list [expr { -$a - $b }] \ [expr { $a - $b }]] }
# This procedure draws a piece of the path that Penney's numbers take in the complex plane.
proc penney { from to color } { variable powers set cmd [list .c create line] for { set i $from } { $i <= $to } { incr i } { set b 1 set re 0 set im 0 foreach bit $powers { if { $i & $b } { foreach { br bi } $bit break incr re $br incr im $bi } if { $b >= $i } { break } incr b $b } lappend cmd [expr {128+3*$re}] [expr {108-3*$im}] } lappend cmd -fill $color eval $cmd }
# We draw four subranges of Penney's numbers, together with a little circle marking the origin of the complex plane.
grid [canvas .c -width 240 -height 280 -bg black] penney 0 255 magenta penney 256 511 red penney 512 767 yellow penney 768 1023 green penney 1024 1535 cyan penney 1536 2047 blue .c create oval 126 106 130 110 -fill white
RS confirms that this code runs great (and pretty fast) on PocketPC. Thanks Kevin!