Set consolidation: Difference between revisions
Content added Content deleted
m (→{{header|REXX}}: lowercased a letter.) |
|||
Line 1,690: | Line 1,690: | ||
((a b) (c d) (d b)) -> ((b a d c)) |
((a b) (c d) (d b)) -> ((b a d c)) |
||
((h i k) (a b) (c d) (d b) (f g h)) -> ((g f k i h) (b a d c))</pre> |
((h i k) (a b) (c d) (d b) (f g h)) -> ((g f k i h) (b a d c))</pre> |
||
=={{header|VBScript}}== |
|||
<lang vb> |
|||
Function consolidate(s) |
|||
sets = Split(s,",") |
|||
n = UBound(sets) |
|||
For i = 1 To n |
|||
p = i |
|||
ts = "" |
|||
For j = i To 1 Step -1 |
|||
If ts = "" Then |
|||
p = j |
|||
End If |
|||
ts = "" |
|||
For k = 1 To Len(sets(p)) |
|||
If InStr(1,sets(j-1),Mid(sets(p),k,1)) = 0 Then |
|||
ts = ts & Mid(sets(p),k,1) |
|||
End If |
|||
Next |
|||
If Len(ts) < Len(sets(p)) Then |
|||
sets(j-1) = sets(j-1) & ts |
|||
sets(p) = "-" |
|||
ts = "" |
|||
Else |
|||
p = i |
|||
End If |
|||
Next |
|||
Next |
|||
consolidate = s & " = " & Join(sets," , ") |
|||
End Function |
|||
'testing |
|||
test = Array("AB","AB,CD","AB,CD,DB","HIK,AB,CD,DB,FGH") |
|||
For Each t In test |
|||
WScript.StdOut.WriteLine consolidate(t) |
|||
Next |
|||
</lang> |
|||
{{Out}} |
|||
<pre> |
|||
AB = AB |
|||
AB,CD = AB , CD |
|||
AB,CD,DB = ABCD , - , - |
|||
HIK,AB,CD,DB,FGH = HIKFG , ABCD , - , - , - |
|||
</pre> |