100 prisoners: Difference between revisions

Content deleted Content added
No edit summary
Galileo (talk | contribs)
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}}==