100 prisoners: Difference between revisions
Content deleted Content added
No edit summary |
|||
Line 4,487:
Prisoners:100, random:0, optimal:31.098
</pre>
=={{header|Phixmonti}}==
{{trans|Yabasic}}
<lang Phixmonti>/# Rosetta Code problem: http://rosettacode.org/wiki/100_prisoners
by Galileo, 05/2022 #/
include ..\Utilitys.pmt
def random rand * 1 + int enddef
def shuffle
len var l
l for var a
l random var b
b get var p
a get b set
p a set
endfor
enddef
def play var optimal var iterations var prisoners
0 var pardoned
( prisoners for endfor )
iterations for drop
shuffle
prisoners for var prisoner
false var found
optimal if prisoner else prisoners random endif
prisoners 2 / int for drop
get dup prisoner == if true var found exitfor
else
optimal not if drop prisoners random endif
endif
endfor
found not if exitfor endif
drop
endfor
pardoned found + var pardoned
endfor
drop
pardoned 100 * iterations /
enddef
"Please, be patient ..." ?
( "Optimal: " 100 10000 true play
" Random: " 100 10000 false play
" Prisoners: " prisoners ) lprint</lang>
{{out}}
<pre>Please, be patient ...
Optimal: 31.65 Random: 0 Prisoners: 100
=== Press any key to exit ===</pre>
=={{header|PL/M}}==
|