The Tower of Hanoi in sendmail.cf
Yes, the Tower of Hanoi program is cute, but it doesn't compete with user-controlled virtual domains or automatic cross-host mailing list loop prevention.
— djb / comp.unix.security / 1996-11-24
I was possibly the first person to bother solving the
Tower of Hanoi problem in sendmail
.
The implementation is described in my USENET post about it:
From shrchin Thu Jan 25 05:38:40 1996
Newsgroups: alt.sysadmin.recovery
Subject: Re: ASR London - The Next Generation
Message-ID: <4e7512$712@susscsc1.rdg.ac.uk>
From: shrchin@reading.ac.uk (Jonathan H. N. Chin)
References: <uk4ttqogie.fsf@ASSP01.open.ac.uk>
<4du54g$kf@kadath.zeitgeist.net> <4e081g$gh1@shellx.best.com>
<4e443s$g80@kadath.zeitgeist.net>
Newsgroups: alt.sysadmin.recovery
Subject: Re: ASR London - The Next Generation
Message-ID: <4e7512$712@susscsc1.rdg.ac.uk>
From: shrchin@reading.ac.uk (Jonathan H. N. Chin)
References: <uk4ttqogie.fsf@ASSP01.open.ac.uk>
<4du54g$kf@kadath.zeitgeist.net> <4e081g$gh1@shellx.best.com>
<4e443s$g80@kadath.zeitgeist.net>
cuccia@motherhouse.Talamasca.COM (Nick Cuccia) writes: >--Nick (still working on towers of hanoi in sendmail.cf...) Bastard. I was planning to go home early for once. Here: # Towers of Hanoi S49 RHANOI:$+ $:1 2 3$1 R$-$-$-$*[$+] $:$1$2$3$4 R$-$-$- $@$1$2$3 R$-$-$-@$* $:$>49 $1$3$2$4 R$-$-$-$* $:$>49 $2$3$1$4[Move Top Disk Of Peg $1 To Peg $3] R$-$-$-$* $:$3$2$1@$4 Add to your /etc/sendmail.cf equivalent. If S49 is in use, change the three `49's to an unused ruleset. Invoke with something like: echo '49 HANOI:@@@@' | /usr/sbin/sendmail -bt -d21 Add `@'s to taste. Assumes you have three pegs and want to move the stack from the first peg to the second. v8 output is cleaner than SunOS. Was too lazy to make it count (ie. let `HANOI:14', etc, work); Didn't seem too hard, but kind of long-winded and tedious. Anyone know the iterative (non-recursive) solution? -jonathan
See Hanoimania! for implementations in many other ways.
There is an amazing game in pure CSS.
See also Tony Finch's musings on the Turing-equivalence of MTA config files.