TeX でリバーシをするのもたまには良いかも知れないが、やっぱり「ハノイの塔」の解を調べるのに TeX が使えないと困るという人も…(以下略)。
まあ、要するに、これだ。(hanoi.tex;作者:Brian Blackmore)
%
% %
% %
% %
% Tower %
% of %
% Brahma %
% (Plain TeX) %
% by Brian %
% Blackmore %
% 20120101 %
% %
\nopagenumbers\output{}{}
\chardef\_13\catcode%edocta
126 \_ \let ^^> \catcode~47 0
~95/_/let_\let~43/__^^k/def ~64
11 ~81\_ ~86 1 ~119 ~86 ~85 2 ~87
~85 ~`/!/_~80\__P/vsize~34 14~83\_+
S#1{}~`/X13_X\expandafter\divide\hsize
by3 \multiplyP3 \output{\shipout/vbox to
0.34PV\hbox to\z@w\vsplit255 to0.34P\hfil% A
\vsplit255 to0.34P\hfil/vbox to0.34Pw\unvbox SVU
Sa 255U\hssWU\ifnum/outputpenalty>-10000\else" \font
\dosupereject\fiW ~`\>13_^^~\rightline _!\count \font"%
/rm=cmr8\rm\baselineskip9pt !2 0 +/AV1 2 3 4 5 6 7 8 9 10 11
12 13 14 15 VW wU}+\BwVU wUW +\CV{U w}}+/spw\vboxw>V Move Sb/the
!2U>w/A:U>V\B:W>w\C:}}\vskip8pt plus4pt }+\f#1 #2f{#1U +/nf#1 #2fV%W
#2W +\h#1wX\f#1fW +/T#1VX\nf#1f} +\rh#1w\xdef#1V/TV#1}WU SwU+\move#1#2{"
\global\advance!2by1 /edef\twX\hV#1}W/rhw#1W\xdef#2VSwby-1 7W\t\space#2}/spW
+Q#1#2#3#4w\ifnum#1=1 \moveV#2}w#3U/elseV!0 #1\advance!0by-1 \edef/taV"#7WWVabcd
/the!0WQw/ta}V#2Ww#4}{#3W/moveV#2UV#3}QV\ta}w#4Ww#3Ww#2U}/fi}Q V10WV/AUw\C}V/BW \bye
=======================================================================================15 段の「ハノイの塔」の手順を記した文書を生成する。ただし、知っての通り、完全に解くには 215 − 1 = 32767 回の移動が必要なので、出力が 700 ページ以上に及ぶことになる。このため、配布のソースでは 10 段目を移動したところで出力を打ち切っている。完全な出力を得るためには、コード中で指定されているパラメタを「15」に変更する必要がある。*1
*1:これを読んで悲しい気持ちになった人は、元のソースファイルを見てみよう。