69 lines
1.2 KiB
Plaintext
69 lines
1.2 KiB
Plaintext
PROGRAM "Set consolidation"
|
|
VERSION "0.0001"
|
|
|
|
DECLARE FUNCTION Entry ()
|
|
DECLARE FUNCTION Consolidate$ (s$)
|
|
|
|
FUNCTION Entry ()
|
|
DIM test$[4]
|
|
test$[0] = "AB"
|
|
test$[1] = "AB,CD"
|
|
test$[2] = "AB,CD,DB"
|
|
test$[3] = "HIK,AB,CD,DB,FGH"
|
|
FOR t = 0 TO 3
|
|
PRINT Consolidate$(test$[t])
|
|
NEXT t
|
|
END FUNCTION
|
|
|
|
FUNCTION Consolidate$ (s$)
|
|
DIM sets$[100]
|
|
|
|
' Split the STRING into substrings
|
|
pio = 1
|
|
n = 0
|
|
FOR i = 1 TO LEN(s$)
|
|
IF MID$(s$, i, 1) = "," THEN
|
|
fin = i - 1
|
|
sets$[n] = MID$(s$, pio, fin - pio + 1)
|
|
pio = i + 1
|
|
INC n
|
|
END IF
|
|
NEXT i
|
|
sets$[n] = MID$(s$, pio, LEN(s$) - pio + 1)
|
|
|
|
' Main logic
|
|
FOR i = 0 TO n
|
|
p = i
|
|
ts$ = ""
|
|
FOR j = i TO 0 STEP -1
|
|
IF ts$ = "" THEN p = j
|
|
ts$ = ""
|
|
FOR k = 1 TO LEN(sets$[p])
|
|
IF j > 0 THEN
|
|
IF INSTR(sets$[j-1], MID$(sets$[p], k, 1)) = 0 THEN
|
|
ts$ = ts$ + MID$(sets$[p], k, 1)
|
|
END IF
|
|
END IF
|
|
NEXT k
|
|
IF LEN(ts$) < LEN(sets$[p]) THEN
|
|
IF j > 0 THEN
|
|
sets$[j-1] = sets$[j-1] + ts$
|
|
sets$[p] = "-"
|
|
ts$ = ""
|
|
END IF
|
|
ELSE
|
|
p = i
|
|
END IF
|
|
NEXT j
|
|
NEXT i
|
|
|
|
' Join the substrings into a STRING
|
|
temp$ = sets$[0]
|
|
FOR i = 1 TO n
|
|
temp$ = temp$ + "," + sets$[i]
|
|
NEXT i
|
|
|
|
RETURN s$ + " = " + temp$
|
|
END FUNCTION
|
|
END PROGRAM
|