Flipping bits game: Difference between revisions

Content added Content deleted
(Add Rust implementation)
(Add BASIC)
Line 1,100: Line 1,100:
ExitApp
ExitApp
Return</lang>
Return</lang>

=={{header|BASIC}}==
<lang BASIC>10 DEFINT A-Z
20 PRINT "*** FLIP THE BITS ***"
30 INPUT "Board size";S
40 IF S<3 OR S>8 THEN PRINT "3 <= size <= 8": GOTO 30
50 RANDOMIZE
60 DIM B(S,S),G(S,S)
70 FOR X=1 TO S
80 FOR Y=1 TO S
90 B=INT(.5+RND(1))
100 B(X,Y)=B: G(X,Y)=B
110 NEXT Y,X
120 FOR A=0 TO 10+2*INT(10*RND(1))
130 R=INT(.5+RND(1))
140 N=1+INT(S*RND(1))
150 GOSUB 500
160 NEXT A: M=0
170 PRINT: M=M+1
180 PRINT " ==BOARD==";TAB(20);" ==GOAL=="
190 PRINT " ";: GOSUB 400
200 PRINT TAB(20);" ";: GOSUB 400
210 FOR N=1 TO S
220 FOR A=0 TO 1
230 PRINT TAB(A*20);CHR$(64+N);". ";
240 FOR C=1 TO S: IF A THEN B=G(C,N) ELSE B=B(C,N)
250 PRINT USING "# ";B;
260 NEXT C,A
270 PRINT
280 NEXT N
290 PRINT
300 LINE INPUT "Enter row or column: ";I$
310 IF LEN(I$)<>1 THEN 300 ELSE C=ASC(I$) OR 32
320 IF C<97 THEN N=C-48:R=0 ELSE N=C-96:R=1
330 IF N<1 OR N>S THEN 300 ELSE GOSUB 500
340 W=1=1
350 FOR X=1 TO S:FOR Y=1 TO S
360 W=W AND (B(X,Y)=G(X,Y))
370 NEXT Y,X
380 IF W THEN PRINT:PRINT "You win! Moves:";M:END
390 GOTO 170
400 FOR I=1 TO S: PRINT USING "# ";I;: NEXT I: RETURN
500 IF R THEN 510 ELSE 520
510 FOR I=1 TO S: B(I,N)=1-B(I,N): NEXT I: RETURN
520 FOR I=1 TO S: B(N,I)=1-B(N,I): NEXT I: RETURN</lang>
{{out}}
<pre>*** FLIP THE BITS ***
Board size? 3
Random number seed (-32768 to 32767)? 1

==BOARD== ==GOAL==
1 2 3 1 2 3
A. 1 0 1 A. 1 1 0
B. 1 1 1 B. 0 1 1
C. 1 1 1 C. 1 0 0

Enter row or column: 2

==BOARD== ==GOAL==
1 2 3 1 2 3
A. 1 1 1 A. 1 1 0
B. 1 0 1 B. 0 1 1
C. 1 0 1 C. 1 0 0

Enter row or column: 3

==BOARD== ==GOAL==
1 2 3 1 2 3
A. 1 1 0 A. 1 1 0
B. 1 0 0 B. 0 1 1
C. 1 0 0 C. 1 0 0

Enter row or column: B

You win! Moves: 3 </pre>


=={{header|C}}==
=={{header|C}}==