' Dutch national flag problem DECLARE SUB PrintColorSeq (T() AS INTEGER) DECLARE SUB SortByColor (T() AS INTEGER) CONST CBLUE% = 0, CWHITE% = 1, CRED% = 2 CONST N% = 20 DIM T(0 TO N% - 1) AS INTEGER DIM I AS INTEGER ' Set colors RANDOMIZE TIMER FOR I = 0 TO N% - 1 T(I) = INT(RND * 3) NEXT I PRINT "Unsorted:" CALL PrintColorSeq(T()) CALL SortByColor(T()) PRINT PRINT "Sorted:" CALL PrintColorSeq(T()) END SUB PrintColorSeq (T() AS INTEGER) DIM I AS INTEGER FOR I = 0 TO UBOUND(T) SELECT CASE T(I) CASE CBLUE% PRINT "B"; CASE CWHITE% PRINT "W"; CASE CRED% PRINT "R"; END SELECT NEXT I PRINT END SUB SUB SortByColor (T() AS INTEGER) DIM B AS INTEGER, W AS INTEGER, R AS INTEGER B = 0 W = 0 R = UBOUND(T) DO WHILE W <= R SELECT CASE T(W) CASE CWHITE% W = W + 1 CASE CBLUE% SWAP T(B), T(W) B = B + 1 W = W + 1 CASE CRED% SWAP T(W), T(R) R = R - 1 END SELECT LOOP END SUB