47 lines
1.1 KiB
Text
47 lines
1.1 KiB
Text
Dim MyList(9)
|
||
|
||
Declare is_list_sorted()
|
||
|
||
If OpenConsole()
|
||
Define score, indata, i, txt$
|
||
|
||
For i=1 To 9 ;- Initiate the list
|
||
MyList(i)=i
|
||
Next
|
||
While is_list_sorted()
|
||
For i=1 To 9 ;- Do a Fisher–Yates shuffle
|
||
Swap MyList(i), MyList(Random(i)+1)
|
||
Next
|
||
Wend
|
||
|
||
;- Start the Game
|
||
Repeat
|
||
score+1
|
||
txt$=RSet(str(score), 3)+": " ;- Show current list
|
||
For i=1 To 9
|
||
txt$+str(MyList(i))+" "
|
||
Next
|
||
Repeat ;- Get input & swap
|
||
Print(txt$+"| How many numbers should be flipped? "): indata=Val(Input())
|
||
Until indata>=1 And indata<=9 ;- Verify the input
|
||
For i=1 To (indata/2)
|
||
Swap MyList(i),MyList(indata-i+1)
|
||
Next
|
||
Until is_list_sorted()
|
||
|
||
;- Present result & wait for users input before closing down
|
||
PrintN(#CRLF$+"You did it in "+str(score)+" moves")
|
||
Print("Press ENTER to exit"): Input()
|
||
CloseConsole()
|
||
EndIf
|
||
|
||
Procedure is_list_sorted()
|
||
Protected i
|
||
Shared MyList()
|
||
For i=1 To 9
|
||
If MyList(i)<>i
|
||
ProcedureReturn #False
|
||
EndIf
|
||
Next
|
||
ProcedureReturn #True
|
||
EndProcedure
|