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