http://qs1969.pair.com?node_id=550774


With all respect to Pratchett, "I aitn't dead"... just very rusty.
jynx


Edit: Noticed 2 typoes thanks to AnonyMonk below.

  1. '-2' is now '+2' (the check is against 97 -- ord('a') -- not 93)
  2. There are now spaces following the words in DATA (of course, it now appears these aren't necessary; this is an artifact from using substr instead of m///originally).


#!/usr/bin/perl -l $_=q{$|--;print join$",map{$_[$_{$_}]=sub{join$,,map{$_=(ord)-($_[0]?( +$_[0]+4 +$=)*$=:$=);$_+=(2+$=)*2while$_<(1<<$.)+2-3*$=;chr}split$,,pop}->($_{$ +_},$_)} map{$_{$_}=$a++;$.++;$_}map{y; ;;d;$=/=1.5;$.++;$_}sub{split$/,join q, +,,<DATA >;unshift@_,map{$.=y---c-$|--;$_}shift;{undef@;;map@{[push@{$;[ord((/. +{$.}(.) /)[$|])]},$_]},@_;@_=map@$_,@;;$.--&&redo}@_[$|--..$^F+$|]}->()},s,$/, +,g,eval __END__ uhinbyl zobxiiv xqsauh zozmib xtbemz ujwq xzaf ufde