* The Cult of the Bound Variables

Solutions to the [[http://www.boundvariable.org/task.shtml][2006 ICFP Programming Contest]].

*Warning: spoilers below!*

** Universal Machine

The Universal Machine is implemented in [[um.c]]. Compile it with =make=
and run it on a UM program:

#+begin_src sh
  ./um sandmark.umz # benchmark
  ./um codex.umz
#+end_src

Benchmark times:
#+begin_src sh
# time ./um sandmark.umz
# without optimization
./um sandmark.umz  86.20s user 0.00s system 99% cpu 1:26.20 total
# with -O3
./um sandmark.umz  30.06s user 0.00s system 99% cpu 30.065 total
#+end_src

Get the next program:

#+begin_src sh
  echo '(\\b.bb)(\\v.vv)06FHPVboundvarHRAk\np' | ./um codex.umz > codex_output
  tail -c +196 codex_output > umix.um
#+end_src

** QVICKBASIC

The fixed program is in [[hack.bas]]. We find the passwords of =ohmega=
and =howie=.

** Passwords found

| user   | password      |
|--------+---------------|
| ohmega | bidirectional |
| howie  | xyzzy         |
| ftd    | falderal90    |

** Publications found

#+begin_src
INTRO.LOG=200@999999|35e6f52e9bc951917c73af391e35e1d
INTRO.MUA=5@999999|b9666432feff66e528a17fb69ae8e9a
INTRO.UMD=10@999999|7005f80d6cd9b7b837802f1e58b11b8
INTRO.QBC=10@999999|e6ee9c98b80b4dd04814a29a37bcba8
INTRO.OUT=5@999999|69ca684f8c787cfe06694cb26f74a95
#+end_src
