Tue 15 Jul 2003
Vadim asked the following brain teaser:
How many squares are there on a chess board?Yes, it’s a trick question but the solutions were better than the question or the answer.
Ik came up with a solution in Emacs Lisp:
(let ((f (lambda (n) (cond ((= n 1) 1) (t (+ (* n n) (f (1- n)))))))) (f 8)) Bill came up with one using DC, the RPN desk calculator, that just floored us and had us running to read the man pages:
echo "8sc0sr[q]sb[lc0lc=bdlr+srlc1-sclax]salaxlrpq" | dc Look closely at that one and think through it. Clever. Clever. The underlying simplicity is brilliant. Based on Bill’s and Ik’s I cobbled together an obfuscated answer in Perl (save to a file, shell quoting mungs it):
#!perl -e $/=$@;$;=8;sub'f{$/+=$;--*2;$;}sub'g{&f&&&g}g;print$/$^L Like theirs, it uses recursion but I try to hide what’s going because I am not clever.
