RosettaCodeData/Task/Flipping-bits-game/Quackery/flipping-bits-game.quackery
2024-07-13 15:19:22 -07:00

60 lines
1.4 KiB
Text

[ [] over times
[ over [] swap times
[ 2 random join ]
nested join ]
nip ] is makeboard ( n --> [ )
[ [] swap witheach [ not join ] ] is invert ( [ --> [ )
[ 2dup peek invert unrot poke ] is fliprow ( [ n --> [ )
[ dip transpose fliprow transpose ] is flipcolumn ( [ n --> [ )
[ dup
[ dup size dup * times
[ dup size random
2 random iff
fliprow
else flipcolumn ]
2dup != until ]
nip ] is mix ( [ --> [ )
[ say " "
dup size times
[ sp i^ char a + emit ]
witheach
[ cr sp i^ echo say ":"
witheach
[ sp echo ] ] ] is display ( [ --> )
[ cr $ "a..., or 0...: "
input $ "." join
trim 0 peek lower
2dup char a rot over +
within iff
[ nip char a -
' flipcolumn ]
done
2dup char 0 rot over +
within iff
[ nip char 0 -
' fliprow ]
done
drop again ] is getmove ( n --> n x )
[ 0 temp put
makeboard
dup mix
[ say "Moves: "
temp share echo cr
1 temp tally
2dup swap
say "Target" cr
display cr cr
say "Current" cr
display cr
dup size getmove do cr
2dup = until ]
2drop
temp take
say "Moves taken: " echo ] is flipbits ( n --> )