RosettaCodeData/Task/Number-reversal-game/BASIC/number-reversal-game.basic
Ingy döt Net b83f433714 tasks a-s
2013-04-10 23:57:08 -07:00

55 lines
1.3 KiB
Text

PRINT "Given a jumbled list of the numbers 1 to 9,"
PRINT "you must select how many digits from the left to reverse."
PRINT "Your goal is to get the digits in order with 1 on the left and 9 on the right."
RANDOMIZE TIMER
DIM nums(1 TO 9) AS INTEGER
DIM L0 AS INTEGER, n AS INTEGER, flp AS INTEGER, tries AS INTEGER, again AS INTEGER
'initial values
FOR L0 = 1 TO 9
nums(L0) = L0
NEXT
DO 'shuffle
FOR L0 = 9 TO 2 STEP -1
n = INT(RND * (L0)) + 1
IF n <> L0 THEN SWAP nums(n), nums(L0)
NEXT
FOR L0 = 1 TO 8 'make sure it's not in order
IF nums(L0) > nums(L0 + 1) THEN EXIT DO
NEXT
LOOP
again = -1
DO
IF tries < 10 THEN PRINT " ";
PRINT tries; ":";
FOR L0 = 1 TO 9
PRINT nums(L0);
NEXT
IF NOT again THEN EXIT DO
INPUT " -- How many numbers should be flipped"; flp
IF flp < 0 THEN flp = 0
IF flp > 9 THEN flp = 0
FOR L0 = 1 TO (flp \ 2)
SWAP nums(L0), nums(flp - L0 + 1)
NEXT
again = 0
'check for order
FOR L0 = 1 TO 8
IF nums(L0) > nums(L0 + 1) THEN
again = -1
EXIT FOR
END IF
NEXT
IF flp > 0 THEN tries = tries + 1
LOOP
PRINT : PRINT "You took "; LTRIM$(RTRIM$(STR$(tries))); " tries to put the digits in order."