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


in reply to Re: Battle script
in thread Battle script

A variation where the stronger one strikes (potentially)harder (and the one that gets the upper hand has the advantage):
> perl -e "$a=$b=100;while($a>0&&$b>0){$a-=rand($b/10);$b-=rand($a/10) +;print qq($a | $b\n)}"

You have moved into a dark place.
It is pitch black. You are likely to be eaten by a grue.

Replies are listed 'Best First'.
Re: Re: Re: Battle script
by rob_au (Abbot) on Jun 06, 2002 at 14:46 UTC
    Oh no! You have inadvertantly tipped the scale of battle to favour the a opponent by the fact of its first attack and the effect which this has on the probability (random seed) for the retalitory attack of b - But what if the battle forces of b launch a preemptory attack?

    Consider the following where Quantum::Entanglement has been used such that the victor is truly not known until the battle has been fought!

    #!/usr/bin/perl use Quantum::Entanglement; my $opponent1 = entangle(1, 'a', 1, 'b'); my $opponent2 = p_op($opponent1, 'eq', 'a', sub{'b'}, sub{'a'}); $a = $b = 100; $opponent1 = "$opponent1"; $opponent2 = "$opponent2"; { no strict 'refs'; while ($$opponent1 > 0 && $$opponent2 > 0){ $$opponent1 -= rand($$opponent2 / 10); $$opponent2 -= rand($$opponent1 / 10); print qq($$opponent1 | $$opponent2\n) } print "And the winner is ... '", (($$opponent1 < 0) ? $opponent1 : $opponent2), "'\n"; }

    Yes, I was bored :-)