40 lines
1.2 KiB
Text
40 lines
1.2 KiB
Text
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, '%'/
|