Flipping bits game: Difference between revisions
Content added Content deleted
Not a robot (talk | contribs) (Add BCPL) |
|||
Line 3,468: | Line 3,468: | ||
You win!! Press enter to play again or type END to quit. |
You win!! Press enter to play again or type END to quit. |
||
</pre> |
</pre> |
||
=={{header|Mathematica}}/{{header|Wolfram Language}}== |
|||
<lang Mathematica>ClearAll[PermuteState] |
|||
PermuteState[state_, {rc_, n_Integer}] := Module[{s}, |
|||
s = state; |
|||
Switch[rc, "R", |
|||
s[[n]] = 1 - s[[n]], |
|||
"C", |
|||
s[[All, n]] = 1 - s[[All, n]] |
|||
]; |
|||
s |
|||
] |
|||
SeedRandom[1337]; |
|||
n = 3; |
|||
goalstate = state = RandomChoice[{0, 1}, {n, n}]; |
|||
While[goalstate == state, |
|||
permutations = {RandomChoice[{"C", "R"}, 20], RandomInteger[{1, n}, 20]} // Transpose; |
|||
state = Fold[PermuteState, state, permutations]; |
|||
]; |
|||
i = 0; |
|||
Grid[goalstate, ItemSize -> {5, 3}, Frame -> True] |
|||
b1 = Button["", state = PermuteState[state, {"C", #}]; i++; |
|||
If[state === goalstate, MessageDialog["You Won!"]]] & /@ Range[n]; |
|||
b2 = Button["", state = PermuteState[state, {"R", #}]; i++; |
|||
If[state === goalstate, MessageDialog["You Won!"]]] & /@ Range[n]; |
|||
Dynamic[Grid[ |
|||
Prepend[MapThread[Prepend, {state, b2}], |
|||
Prepend[b1, Row[{"Flips: ", i}]]], Frame -> True |
|||
]]</lang> |
|||
=={{header|MATLAB}}== |
=={{header|MATLAB}}== |