1 NOEXPAND
100 PRINT:PRINT "REVERSE -- A GAME OF SKILL":PRINT
120 RANDOMIZE
130 DIM A(50)
140 REM *** N=NUMBER OF NUMBERS(MAXIMUM OF 50, CURRENTLY SET AT 9)
150 N=9
160 PRINT "DO YOU WANT INSTRUUCTIONS (YES OR NO)";:INPUT A$
180 IF A$="NO" THEN 210
190 GOSUB 710
200 REM *** MAKE A RANDOM LIST A(1) TO A(N)
210 A(1)=INT((N-1)*RND(0))+2
220 FOR K=2 TO N
230 A(K)=INT(N*RND(0))+1
240 FOR J=1 TO K-1
250 IF A(K)=A(J) THEN 230
260 NEXT J:NEXT K
280 REM *** PRINT ORIGINAL LIST ANDSTART GAME
290 PRINT:PRINT "HERE WE GO ...  THE LIST IS:"
310 T=0
320 GOSUB 610
330 PRINT "HOW MANY SHALL I REVERSE";:INPUT R
350 IF R=0 THEN 520
360 IF R<=N THEN 390
370 PRINT"OOPS! TOO MANY - I CAN REVERSE AT MOST";N:GOTO 330
390 T=T+1
400 REM *** REVERSE R NUMBERS AND PRINT NEW LIST
410 FOR K=1 TO INT(R/2)
420 Z=A(K)
430 A(K)=A(R-K+1)
440 A(R-K+1)=Z
450 NEXT K
460 GOSUB 610
470 REM *** CHECK FOR A WIN
480 FOR K=1 TO N
490 IF A(K)<>K THEN 330
500 NEXT K
510 PRINT "YOU WON IT IN";T;"MOVES !!!":PRINT
520 PRINT "TRY AGAIN (YES OR NO)";:INPUT A$
550 IF A$="YES" THEN 210
560 PRINT "OK.  HOPE YOU HAD FUN!!":STOP
600 REM *** SUBROUTINE TO PRINT LIST
610 PRINT:FOR K=1 TO N:PRINT A(K);:NEXT K
620 PRINT:PRINT:RETURN
700 REM *** SUBROUTINE TO PRINT THE RULES
710 PRINT:PRINT "THIS IS A GAME OF 'REVERSE'. TO WIN, ALL YOU HAVE"
720 PRINT "TO DO IS ARRANGE A LIST OF NUMBERS ( 1 THROUGH";N;")"
730 PRINT "IN NUMERICAL ORDER FROM LEFT TO RIGHT. TO MOVE, YOU"
740 PRINT "TELL ME HOW MANY NUMBERS ( COUNTING FROM THE LEFT  ) TO"
750 PRINT "REVERSE. FOR EXAMPLE, IF THE CURRENT LIST IS"
760 PRINT:PRINT "2 3 4 5 1 6 7 8 9"
770 PRINT:PRINT "AND YOU REVERSE 4, THE RESULT WILL BE"
780 PRINT:PRINT "5 4 3 2 1 6 7 8 9"
790 PRINT:PRINT "NOW, IF YOU REVERSE 5, YOU WIN!"
800 PRINT:PRINT "1 2 3 4 5 6 7 8 9":PRINT
810 PRINT "NO DOUBT YOU WILL LIKE THIS GAME OF SKILL, BUT"
820 PRINT "IF YOU WANT TO QUIT, REVERSE 0 ( ZERO )":PRINT:RETURN
2046 END
2600 NEXT J:NEXT K
3220 GOSUB 610