http://www.perlmonks.org?node_id=255463


in reply to Re: "Another thrice-damned version of Mastermind"
in thread "Another thrice-damned version of Mastermind"

Nice work. I was reviewing it and I honestly don't remember why I did that (it's been a while since I originally wrote it). The only thing I can think is that I might have been concerned about overwriting the digit. I did have a quit (q) command in there when it was longer, though that is just a shot in the dark. With your suggestion implemented, it does seem to work fine:
sub q{$;=1;for(0..3){$;[$_]=int(rand(9))}}sub _{print@_}&q;for(;;){$:= +$~=0 ;_"$/$; ";$_=<>;if(/^\d{4}$/){@q=split//;--$#q;$@=-1;for(@q){($_==$;[+ ++$@] )&&++$:||(grep/$_/,@;)&&++$~}_"$~W$:B ";++$;;$:==4|$;>10&&_(@;)&&&q}}

Replies are listed 'Best First'.
Re: Re: Re: "Another thrice-damned version of Mastermind"
by jgallagher (Pilgrim) on May 04, 2003 at 13:20 UTC
    Actually, it doesn't. As per Aristotle's suggestion above, the (grep/$_/,@;) would return true every time, thus always telling you you had four correct numbers.
    Doh.
    by tinypig (Beadle) on May 04, 2003 at 17:25 UTC
      Sorry, you guys are right. Strange, I thought I ran that this morning and it worked.