/* Squid game in Picat. From the PSI model squid.psi """ tiles:=18; people:=16; def main()( known:=0; r:=(); for i in 0..people( alive := true; while alive && known go. /* var : R Probabilities: [false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true]: 0.18523333333333333 (5557 / 30000) [false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true]: 0.17263333333333333 (5179 / 30000) [false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true]: 0.16539999999999999 (827 / 5000) [false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true]: 0.12063333333333333 (3619 / 30000) [false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true]: 0.11920000000000000 (149 / 1250) [false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true]: 0.07153333333333334 (1073 / 15000) [false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,true]: 0.07056666666666667 (2117 / 30000) [false,false,false,false,false,true,true,true,true,true,true,true,true,true,true,true]: 0.03340000000000000 (167 / 5000) [false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true]: 0.03153333333333333 (473 / 15000) [false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true]: 0.01123333333333333 (337 / 30000) [false,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true]: 0.01103333333333333 (331 / 30000) [false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true]: 0.00353333333333333 (53 / 15000) [false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true]: 0.00280000000000000 (7 / 2500) [false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false]: 0.00066666666666667 (1 / 1500) [false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true]: 0.00056666666666667 (17 / 30000) [false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true]: 0.00003333333333333 (1 / 30000) var : R1 Probabilities: false: 1.00000000000000000 (1 / 1) var : R2 Probabilities: false: 0.99996666666666667 (29999 / 30000) true: 0.00003333333333333 (1 / 30000) var : R3 Probabilities: false: 0.99939999999999996 (4997 / 5000) true: 0.00060000000000000 (3 / 5000) var : R4 Probabilities: false: 0.99660000000000004 (4983 / 5000) true: 0.00340000000000000 (17 / 5000) var : R5 Probabilities: false: 0.98556666666666670 (29567 / 30000) true: 0.01443333333333333 (433 / 30000) var : R6 Probabilities: false: 0.95216666666666672 (5713 / 6000) true: 0.04783333333333333 (287 / 6000) var : R7 Probabilities: false: 0.88160000000000005 (551 / 625) true: 0.11840000000000001 (74 / 625) var : R8 Probabilities: false: 0.76239999999999997 (953 / 1250) true: 0.23760000000000001 (297 / 1250) var : R9 Probabilities: false: 0.58976666666666666 (17693 / 30000) true: 0.41023333333333334 (12307 / 30000) var : R10 Probabilities: true: 0.59546666666666670 (2233 / 3750) false: 0.40453333333333336 (1517 / 3750) var : R11 Probabilities: true: 0.76086666666666669 (11413 / 15000) false: 0.23913333333333334 (3587 / 15000) var : R12 Probabilities: true: 0.88149999999999995 (1763 / 2000) false: 0.11849999999999999 (237 / 2000) var : R13 Probabilities: true: 0.95303333333333329 (28591 / 30000) false: 0.04696666666666666 (1409 / 30000) var : R14 Probabilities: true: 0.98456666666666670 (29537 / 30000) false: 0.01543333333333333 (463 / 30000) var : R15 Probabilities: true: 0.99580000000000002 (4979 / 5000) false: 0.00420000000000000 (21 / 5000) var : R16 Probabilities: true: 0.99933333333333330 (1499 / 1500) false: 0.00066666666666667 (1 / 1500) var : num_survived Probabilities: 7: 0.18523333333333333 (5557 / 30000) 8: 0.17263333333333333 (5179 / 30000) 6: 0.16539999999999999 (827 / 5000) 5: 0.12063333333333333 (3619 / 30000) 9: 0.11920000000000000 (149 / 1250) 4: 0.07153333333333334 (1073 / 15000) 10: 0.07056666666666667 (2117 / 30000) 11: 0.03340000000000000 (167 / 5000) 3: 0.03153333333333333 (473 / 15000) 2: 0.01123333333333333 (337 / 30000) 12: 0.01103333333333333 (331 / 30000) 1: 0.00353333333333333 (53 / 15000) 13: 0.00280000000000000 (7 / 2500) 0: 0.00066666666666667 (1 / 1500) 14: 0.00056666666666667 (17 / 30000) 15: 0.00003333333333333 (1 / 30000) */ go ?=> reset_store(), run_model(30_000,$model,[show_probs_rat,mean]), fail, nl. go => true. model() => Tiles = 18, People = 16, Known = 0, R = [], foreach(P in 1..People) Alive = true, while (Alive, Known < Tiles) Alive := flip(1/2), Known := Known + 1 end, R := R ++ [Alive] end, add("R",R), add("num_survived",[ cond(R[I]==true,1,0) : I in 1..People].sum), foreach(P in 1..People) add("R"++P.to_string,R[P]) end.