Topological Sort

Score: 150.48 (fail)

Erm, if the last one was rejected, then this one will be too. Waiting to find out why....

#!perl -n
/ (\S+)/;$p{$1}.=" $` "if$`ne$1;$p{$`}.=''}for(;;$f=''){map{$f||$p{$_}||print$f=$_,$/}keys%p;$f?delete$p{$f}:each%p?die:last;map s/ $f //g,values%p

Score: 151.48 (fail)

I think I saved a character somewhere. This is not _at_ its dead end.

#!perl -n
/ (\S+)/;$p{$1}.=" $` "if$`ne$1;$p{$`}x=1}for(;;$f=''){map{$f||$p{$_}||print$f=$_,$/}keys%p;$f?delete$p{$f}:each%p?die:last;map s/ \Q$f //g,values%p

Score: 152.48 (fail)

Phew! Never used \Q before. Quick recovery from my 150.45 rejection.

#!perl -n
/ (\S+)/;$p{$1}.=" $` "if$`ne$1;$p{$`}.=''}for(;;$f=''){map{$f||$p{$_}||print$f=$_,$/}keys%p;$f?delete$p{$f}:each%p?die:last;map s/ \Q$f //g,values%p

Score: 155.49 (pass)

$f -> @f. Phew, half of my drop clawed back.

#!perl -n
/ (\S+)/;$p{$1}.=" $` "if$`ne$1;$p{$`}x=1}for(;;@f=()){map{@f||$p{$_}||print+@f=$_,$/}keys%p;@f?delete$p{$f[0]}:each%p?die:last;map s/ \Q@f //g,values%p

Score: 155.50 (fail)

I've got it to the stage where I don't understand it. Is that a good or a bad thing?

#!perl -n
/ (\S+)/;$p{$1}.=" $` "if$`ne$1;$p{$`}.=''}for(;;$f=''){map{$f||$p{$_}||print$f=$_,$/}keys%p;$f?delete$p{$f}:each%p?die:last;map$p{$_}=~s/ $f //g,keys%p

Score: 159.48 (pass)

Hoorah, getting longer!

#!perl -n
/ (\S+)/;$p{$1}.=" $` "if$`ne$1;$p{$`}x=1}for(;;$f=''){map{''ne$f||$p{$_}||print$f=$_,$/}keys%p;''ne$f?delete$p{$f}:each%p?die:last;map s/ \Q$f //g,values%p

Score: 163.50 (fail)

First hack: 500 inc debug, 200 without Using everything I know aboutperl I've squeezed it to 163. YOU GUYS ARE NOT HUMAN! :-D

#!perl
for(<>){/ (\S+)/;$p{$1}.=" $` "if($`ne$1);$p{$`}.=''}for(;;$f=''){map{$f||$p{$_}||print$f=$_,$/}keys%p;$f?delete$p{$f}:each%p?die:last;map$p{$_}=~s/ $f //g,keys%p}