100 prisoners: Difference between revisions
Content added Content deleted
Not a robot (talk | contribs) (Add ABC) |
|||
Line 353: | Line 353: | ||
</pre> |
</pre> |
||
=={{header|ABC}}== |
|||
<syntaxhighlight lang="ABC">HOW TO FILL drawers: |
|||
PUT {} IN drawers |
|||
FOR i IN {1..100}: PUT i IN drawers[i] |
|||
FOR i IN {1..100}: |
|||
PUT choice {i..100} IN j |
|||
PUT drawers[i], drawers[j] IN drawers[j], drawers[i] |
|||
HOW TO REPORT prisoner random.strat drawers: |
|||
PUT {1..100} IN available |
|||
FOR turn IN {1..50}: |
|||
PUT choice available IN drawer |
|||
IF drawers[drawer] = prisoner: SUCCEED |
|||
REMOVE drawer FROM available |
|||
FAIL |
|||
HOW TO REPORT prisoner optimal.strat drawers: |
|||
PUT prisoner IN drawer |
|||
FOR turn IN {1..50}: |
|||
IF drawers[drawer] = prisoner: SUCCEED |
|||
PUT drawers[drawer] IN drawer |
|||
FAIL |
|||
HOW TO REPORT simulate strategy: |
|||
FILL drawers |
|||
FOR prisoner IN {1..100}: |
|||
SELECT: |
|||
strategy = "Random": |
|||
IF NOT prisoner random.strat drawers: FAIL |
|||
strategy = "Optimal": |
|||
IF NOT prisoner optimal.strat drawers: FAIL |
|||
SUCCEED |
|||
HOW TO RETURN n.sim chance.of.success strategy: |
|||
PUT 0 IN success |
|||
FOR n IN {1..n.sim}: |
|||
IF simulate strategy: PUT success+1 IN success |
|||
RETURN success * 100 / n.sim |
|||
FOR strategy IN {"Random"; "Optimal"}: |
|||
WRITE strategy, ": ", 10000 chance.of.success strategy, '%'/</syntaxhighlight> |
|||
{{out}} |
|||
<pre>Optimal: 32.01 % |
|||
Random: 0 %</pre> |
|||
=={{header|Ada}}== |
=={{header|Ada}}== |
||
<syntaxhighlight lang="ada"> |
<syntaxhighlight lang="ada"> |
||
Line 533: | Line 577: | ||
Random Strategy = 0.00% |
Random Strategy = 0.00% |
||
</pre> |
</pre> |
||
=={{header|APL}}== |
=={{header|APL}}== |
||
{{works with|GNU APL|1.8}} |
{{works with|GNU APL|1.8}} |