Anonymous user
Monty Hall problem: Difference between revisions
→{{header|Perl 6}}: modernize
(→{{header|Perl 6}}: modernize) |
|||
Line 2,131:
=={{header|Perl 6}}==
This implementation is parametric over the number of doors. [[wp:Monty_Hall_problem#Increasing_the_number_of_doors|Increasing the number of doors in play makes the superiority of the switch strategy even more obvious]].
<lang perl6>
enum Strategy <Stay Switch>;
sub play (Strategy $strategy, Int :$doors = 3) returns Prize {
# Call the door with a car behind it door 0. Number the
# remaining doors starting from 1.
my Prize @doors = Car, Goat xx $doors - 1;
# The player chooses a door.
my Prize $initial_pick =
# Of the n doors remaining, the host chooses n - 1 that have
# goats behind them and opens them, removing them from play.
for pick @doors.elems - 1, grep { @doors[$_] == Goat }, keys @doors;
# If the player stays, they get their initial pick. Otherwise,
# they get whatever's behind the remaining door.
return $strategy === Stay ?? $initial_pick !! @doors[0];
}
constant TRIALS =
for 3, 10 -> $doors {
Line 2,173 ⟶ 2,169:
}
}</lang>
{{out}}
<pre>With 3 doors:
Staying wins
Switching wins
With 10 doors:
Staying wins
Switching wins
=={{header|PHP}}==
|