def flood_work.take

minebender-game@1.0.0.0 · proof_flood.bend:349

import minebender-game@1.0.0.0/proof_flood.bend as ProofFlood
import Base
import minebender-game@1.0.0.0/types.bend as T
import minebender-game@1.0.0.0/board.bend as B
import minebender-game@1.0.0.0/game.bend as G
import minebender-game@1.0.0.0/proof_grid.bend as PG

349def flood_work.take(+m: Nat, +c: T.Pos, +wk: List<&2, G.Work>, +rest: List<&2, G.Work>, +w: Nat, +h: Nat,
350  +layout: T.Grid(Bool), +shown: T.Grid(Bool), +q: T.Pos,
351  +sh: {B.shaped(Bool, w, h, shown) == True{} : Bool},
352  he: {G.unrevealed(w, h, shown, c) == True{} : Bool},
353  keep: {wcontains(rest, q) == True{} : Bool} -> {wcontains(wk, q) == True{} : Bool},
354  +b: Bool, be: {B.same(c, q) == b : Bool}, m2: {Bool.or(b, wcontains(rest, q)) == True{} : Bool},
355  ih: {wcontains(wk, q) == True{} : Bool} ->
356    {B.at(Bool, False{}, G.flood(m, wk, G.head_hidden(w, h, B.set_at(Bool, shown, c, True{}), wk), w, h, layout,
357      B.set_at(Bool, shown, c, True{})), q) == True{} : Bool}) ->
358  {B.at(Bool, False{}, G.flood(m, wk, G.head_hidden(w, h, B.set_at(Bool, shown, c, True{}), wk), w, h, layout,
359    B.set_at(Bool, shown, c, True{})), q) == True{} : Bool}:
360  match b:
361    case True{}:
362      +cq = PG.same_sound(c, q, be)
363      +s2 = B.set_at(Bool, shown, c, True{})
364      flood_mono(m, wk, G.head_hidden(w, h, s2, wk), w, h, layout, s2, q,
365        %cq : {B.at(Bool, False{}, s2, _) == True{} : Bool};
366        at_set_on(w, h, shown, c, sh, unrev_on(w, h, shown, c, he)))
367    case False{}:
368      ih(keep(m2))

Uses (19)

Used by (1)