RosettaCodeData/Task/Dutch-national-flag-problem/GW-BASIC/dutch-national-flag-problem.basic
2026-04-30 12:34:36 -04:00

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