60 lines
1.1 KiB
Text
60 lines
1.1 KiB
Text
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 #test$[?]
|
|
print Consolidate(test$[t])
|
|
next t
|
|
end
|
|
|
|
function Consolidate(s$)
|
|
dim sets$(100)
|
|
|
|
# Split the string into substrings
|
|
pio = 1
|
|
n = 0
|
|
for i = 1 to length(s$)
|
|
if mid(s$, i, 1) = "," then
|
|
fin = i - 1
|
|
sets$[n] = mid(s$, pio, fin - pio + 1)
|
|
pio = i + 1
|
|
n += 1
|
|
end if
|
|
next i
|
|
sets$[n] = mid(s$, pio, length(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 length(sets$[p])
|
|
if j > 0 then
|
|
if instr(sets$[j-1], mid(sets$[p], k, 1)) = 0 then
|
|
ts$ += mid(sets$[p], k, 1)
|
|
end if
|
|
end if
|
|
next k
|
|
if length(ts$) < length(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$ += "," + sets$[i]
|
|
next i
|
|
|
|
return s$ + " = " + temp$
|
|
end function
|