input <- c(
"a1=a2", "b1=b2", "b3=b2", "c1=c2", "e1=e2", "a3=a4", "c3=c4", "e1=e3",
"a2=a4", "c3=c1", "b3=a4", "c2=d1", "a4=a5", "d2=c1", "b4=b3", "d3=c3"
)
eq <- unlist(strsplit(input, "="))
id <- unique(eq)
E <- matrix(as.integer(factor(eq, id)), 2)
g <- seq(id)
repeat {
h <- g
apply(E, 2, function(e) g[e] <<- min(g[e]))
if (all(g == h)) break
}
for (i in unique
(g
)) cat
(sprintf("[%s]\n", toString
(id
[g
== i
])))
aW5wdXQgPC0gYygKICAgICJhMT1hMiIsICJiMT1iMiIsICJiMz1iMiIsICJjMT1jMiIsICJlMT1lMiIsICJhMz1hNCIsICJjMz1jNCIsICJlMT1lMyIsCiAgICAiYTI9YTQiLCAiYzM9YzEiLCAiYjM9YTQiLCAiYzI9ZDEiLCAiYTQ9YTUiLCAiZDI9YzEiLCAiYjQ9YjMiLCAiZDM9YzMiCikKCmVxIDwtIHVubGlzdChzdHJzcGxpdChpbnB1dCwgIj0iKSkKaWQgPC0gdW5pcXVlKGVxKQpFIDwtIG1hdHJpeChhcy5pbnRlZ2VyKGZhY3RvcihlcSwgaWQpKSwgMikKCmcgPC0gc2VxKGlkKQpyZXBlYXQgewogICAgaCA8LSBnCiAgICBhcHBseShFLCAyLCBmdW5jdGlvbihlKSBnW2VdIDw8LSBtaW4oZ1tlXSkpCiAgICBpZiAoYWxsKGcgPT0gaCkpIGJyZWFrCn0KCmZvciAoaSBpbiB1bmlxdWUoZykpIGNhdChzcHJpbnRmKCJbJXNdXG4iLCB0b1N0cmluZyhpZFtnID09IGldKSkp
[a1, a2, b1, b2, b3, a3, a4, a5, b4]
[c1, c2, c3, c4, d1, d2, d3]
[e1, e2, e3]