http://qs321.pair.com?node_id=357386

print ("$0 [-h] [-o] [-v] dictfile tries\n\t-o allows original game rules\n\ +t-v shows helpful in", "fos\n")&&exit if $ARGV[0 ]eq'-h'or 2>@ARGV;$ n=$v=1,shift if $ARGV[ 0 +]eq'-vo'or$ ARGV [0]eq '-ov';$v=1,shift if$ARGV[0]eq'-v';$n= 1,shift if$ARGV [0]eq'-o';$v=1,s +hift if$ ARGV[0]eq'-v' ;open I,$ ARGV [0]or die 'n'. 'o '. 'd'. 'i'. 'ct'. 'i'. 'o'. 'na'. 'r'. 'y'. " '".$ARGV [0]. "' fo". "u".'nd ' .'('. "$!)";@w=<I>; chomp ($w=$w[int rand @w]); $t=$ARGV[01]; while (07){%S=(); %T=() ;if (join ('' ,grep {!$S{$_}++}sort split (//,$w))eq join('',gre +p{ ! $T{ $_}++}sort(split //,$g) +)){ print "\tLIFE!\n";exit;}last if +! $t; print "\t",(map{(index($g,$_)>= +0)?$_ :'_'} split(//,$w)),($v?" ($t " +.($n? 'wro' .'ng ':'').'guesses left +[gue' .'ss' .'ed:'.$g.'/'.$f.'])':'') +,"\n" ;$i = substr<STDIN>,0,1;--$t if! +$n;if( index ($w,$i)>=0){--$t if$n&&inde +x($g,$i )>=0; $g.=$i;}else{--$t if $ +n; $ f.= $i;}}print "\tDEA" ,"TH" ,"!\n";print"the " ,"So" ,"lution was $w\n" if$v; # Copyright 2004 #by C hristian Duehl. Al #l ri ghts reserved. Thi #s pr ogram is free soft #ware . You can redistri +b #ute# it and/or m odify it + un #der# #the# #same #term #s as #perl itself.

Replies are listed 'Best First'.
Re: Hangman (qotw)
by heroin_bob (Sexton) on Jun 22, 2004 at 21:39 UTC
    Nothing like morbid use of code to brighten my day with a chuckle :)

    If you're ever lost and need directions, ask the guy on the motorcycle.
Re: Hangman (qotw)
by Trag (Monk) on May 30, 2004 at 13:52 UTC
    It looks nice, but when I run it I get a "no dictionary '' found (No such file or directory) at C:\myperl\hang.pl line 5." error. Otherwise, good work!


    our @item = reverse (114, 101, 107, 99, 97, 104, 32, 108, 114, 101, 80, 32, 114, 101, 104, 116, 111, 110, 97, 32, 116, 115, 117, + 74); local $my = reverse ")meti@\ ,rhc (pam tnirp";eval $my;
      Did you start it with two parameters? The programm gets at least two parameters: first the dictionary file (one word per line), second: number of tries (or number of bad tries, if you use the option -o).

      Take a look at the help output after starting the program with the option -h.
        Whoops. Thanks


        our @item = reverse (114, 101, 107, 99, 97, 104, 32, 108, 114, 101, 80, 32, 114, 101, 104, 116, 111, 110, 97, 32, 116, 115, 117, + 74); local $my = reverse ")meti@ ,rhc (pam tnirp";eval $my;