42 lines
883 B
Text
42 lines
883 B
Text
100 REM Dutch national flag problem
|
|
110 REM 0: blue, 1: while, 2: red
|
|
120 OPTION BASE 0
|
|
130 N% = 20
|
|
140 UP% = N% - 1
|
|
150 DIM T%(UP%)
|
|
160 REM Set colors
|
|
170 RANDOMIZE
|
|
180 FOR I% = 0 TO UP%
|
|
190 T%(I%) = INT(RND * 3)
|
|
200 NEXT I%
|
|
210 PRINT "Unsorted:"
|
|
220 GOSUB 1000
|
|
230 GOSUB 2000
|
|
240 PRINT
|
|
250 PRINT "Sorted:"
|
|
260 GOSUB 1000
|
|
270 END
|
|
1000 REM ** Print color sequence
|
|
1010 FOR I% = 0 TO UP%
|
|
1020 IF T%(I%) = 0 THEN PRINT "B"; ELSE IF T%(I%) = 1 THEN PRINT "W"; ELSE PRINT "R";
|
|
1030 NEXT I%
|
|
1040 PRINT
|
|
1050 RETURN
|
|
2000 REM ** Sort by color
|
|
2010 B% = 0: W% = 0: R% = UP%
|
|
2020 WHILE W% <= R%
|
|
2030 IF T%(W%) <> 1 THEN 2070
|
|
2040 REM white
|
|
2050 W% = W% + 1
|
|
2060 GOTO 2160
|
|
2070 IF T%(W%) <> 0 THEN 2130
|
|
2080 REM blue
|
|
2090 SWAP T%(B%), T%(W%)
|
|
2100 B% = B% + 1
|
|
2110 W% = W% + 1
|
|
2120 GOTO 2160
|
|
2130 REM red
|
|
2140 SWAP T%(W%), T%(R%)
|
|
2150 R% = R% - 1
|
|
2160 WEND
|
|
2170 RETURN
|