In article <pan.2003.07.19.10.53.34.563639 / sneakemail.com>, Simon Strandgaard <0bz63fz3m1qt3001 / sneakemail.com> wrote: >On Sat, 19 Jul 2003 18:04:07 +0900, Brian Candler wrote: > >> On Sat, Jul 19, 2003 at 07:26:32AM +0900, Phil Tomson wrote: >>> You guys are spoiling all my fun with recursive functions ;-) >> >> Sorry. Well for a bit more fun, how about writing a Gray code counter? The >> characteristic of this sequence is that each number differs from the >> previous one by exactly one bit. > >I found a homepage: ruby + gray code > >http://www.public.asu.edu/~ncban/graycode.html > Very nice, compact algorithm there. <quote> "Here's an algorithm for translating binary to Gray code. It's in a loop here, but unlike the other algorithms we've looked at, it doesn't have to be. This algorithm can convert an arbitrary binary number to Gray code in finite time. Wonderful! #!/usr/bin/env ruby bits = 4 (1 << bits).times do |binary| grayCode = binary ^ (binary >> 1) printf "%0#{bits}b\n", grayCode end How does it work? Beats me. It's magic. " </quote> Phil