Thread Hangman: quiz of the week #17 (6 answers)
Opened by Crian at 2004-05-28 22:26

Crian
 2004-05-28 22:26
#82808 #82808
User since
2003-08-04
5872 Artikel
ModeratorIn
[Homepage]
user image
Mein Text/Lösung dazu:

So my program fits boths rule sets. The default behaviour is exactly
like the discribed above, with the option -o the original rule set is
used.

With option -h the program gives a help output and exits. But it have
to be the first parameter to work.

With the option -v the program prints additional informations about
the number of guesses, if they count for every guess or only wrong
guesses and the already tried guesses (divided in hits and fails
with a slash). It also prints the right solution after DEATH! with
the option -v set.

The options -o and -v can be mixed in these ways:
Code: (dl )
1
2
3
4
  -o -v
-v -o
-ov
-vo



My solution to QOTW #17:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
    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,shift 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('',grep{
! $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&&index($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 redistrib
#ute# it and/or m odify it un
#der#
#the#
#same
#term
#s as
#perl itself.


Example run:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ perl qotw17.pl example_words 5
_
m
m
a
ma_
n
LIFE!

$ perl qotw17.pl example_words 3
_
m
m_ (3 wrong guesses left [guessed:/])
c
(2 wrong guesses left [guessed:m/c])
d
m__ (1 wrong guesses left [guessed:m/cd])
a
ma_ (1 wrong guesses left [guessed:ma/cd])
n
LIFE!




Leider wird der Code sogar hier blöd umgebrochen ... eigentlich ist der Balken oben nur drei Zeilen dick.

Am besten ihr kopiert es Euch in einen Editor und setzt die Zeilen wieder zusammen...


*seufz*

Schade, dass man keine Dateien mehr an die Beiträge anhängen kann.\n\n

<!--EDIT|Crian|1085780320-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite

View full thread Hangman: quiz of the week #17