Flipping bits game: Difference between revisions
Content added Content deleted
(Add Rust implementation) |
Not a robot (talk | contribs) (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}}== |