55 lines
1.3 KiB
Text
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."
|