
(defun hanoi-topos (row col) (byte-code "Â!ˆÃ ˆÄ	!‡" [row col goto-line beginning-of-line forward-char] 4))

(defun hanoi (nrings) "\
Towers of Hanoi diversion.  Argument is number of rings." (interactive (byte-code "?ƒ	 Á‚ Â!C‡" [current-prefix-arg 3 prefix-numeric-value] 2)) (byte-code "Íˆ	ÓX… ÔÕ!ˆÍÍÍÅÖ !ÆÖ !	×\\ØÙ	SÚ\"×Û#Y…: V?…b Ü ˆÅÖ !‰Y…W ÆÖ !‰V?…b ÔÝ#ˆÞÚ\"‰ˆßà
á\"!?…y 
T‰ˆâZVƒ‰ âZ‚Š ‰*ˆã	á#
BÙâ
\"BÙÛ
\"Bä	Í\"
	Ó	W…ã åÍæØâ#ç\\\"æØâ#è\"#IˆT‰ˆ‚² )ˆéê!ˆÍ‰ˆëp!ˆì ˆÓW…T‰ˆíèS\"ˆîcˆ‚ø )ˆíïS\"ˆáÚW…_ðÙ
\"\"ˆ×\\‰ˆW…ZT‰ˆñá!ˆòcˆóá!ˆôá!ˆ‚:)ˆ‚)ˆÓÍ	W…¬ã	á#H‰ˆÓZIˆð	A	@	ZZ\"ˆõÒÍ#ˆö		AS\"ˆT‰ˆ‚g*ˆÒ‰ˆ÷Ó!ˆø	S	
$ˆebˆùú!ˆÒ‰ˆûü !ˆ÷Ó!--‡" [current-prefix-arg nrings pole-spacing floor-row fly-row window-height window-width h w pole-1 pole-2 pole-3 rings nil i buffer-read-only n ring t 0 error "Negative number of rings" selected-window 2 + * 6 5 delete-other-windows "Screen is too small (need at least %dx%d)" / zerop logand 1 3 - make-vector vector make-string 48 32 switch-to-buffer "*Hanoi*" buffer-flush-undo erase-buffer insert-char 10 61 hanoi-topos next-line 124 delete-char backward-char hanoi-draw-ring setcdr sit-for hanoi0 message "Done" set-buffer-modified-p buffer-modified-p] 46))

(defun hanoi0 (n from to work) (byte-code "Å ƒ ÆÇÈC\"‚( ÉW†( ÊS
$ˆË
#ˆÊS
$‡" [n t from work to input-pending-p signal quit "I can tell you've had enough" 0 hanoi0 hanoi-move-ring] 9))

(defun hanoi-move-ring (n from to) (byte-code "	
HÄÍHÎ@
Ï#Î	@
Ï#	A
Ð\"ˆV…J ÑÄÌ#ˆÒÏ!ˆÑÌÄ#ˆÓÍ!ˆS‰ˆ‚' ˆÔAT\"ˆÕ\"?…­ Vƒ… ÖÏ!ˆ×Ø!ˆÙÏ!ˆÚÛÛ\"ˆÓÍ!ˆTT‰‚© W…© ÙÏ!ˆÜØ!ˆÖÏ!ˆÚÛÛ\"ˆÓÍ!ˆSS‰ˆ‚T ˆÐ\"ˆ
W…Û ÑÄV#ˆÝÏ!ˆÑÌÄ#ˆÓÍ!ˆT‰ˆ‚µ ˆÍ
IˆÔ		AS\",*‡" [ring rings n buffer-read-only nil row col from dst-col to dst-row fly-row t 0 - 1 hanoi-topos hanoi-draw-ring previous-line sit-for setcdr equal end-of-line delete-backward-char 2 beginning-of-line insert 32 delete-char next-line] 27))

(defun hanoi-draw-ring (ring f1 f2) (byte-code "Š	ƒ 
ÅH‚ 
ÆHGÇ!ˆcˆ…, ÈÉÅ\\Æ\"!ˆÇÅ!ˆÊc*)‡" [string f1 ring len f2 1 2 delete-char backward-char / 124] 5))
