fork download
  1. input <- c(
  2. "a1=a2", "b1=b2", "b3=b2", "c1=c2", "e1=e2", "a3=a4", "c3=c4", "e1=e3",
  3. "a2=a4", "c3=c1", "b3=a4", "c2=d1", "a4=a5", "d2=c1", "b4=b3", "d3=c3"
  4. )
  5.  
  6. eq <- unlist(strsplit(input, "="))
  7. id <- unique(eq)
  8. E <- matrix(as.integer(factor(eq, id)), 2)
  9.  
  10. g <- seq(id)
  11. repeat {
  12. h <- g
  13. apply(E, 2, function(e) g[e] <<- min(g[e]))
  14. if (all(g == h)) break
  15. }
  16.  
  17. for (i in unique(g)) cat(sprintf("[%s]\n", toString(id[g == i])))
Success #stdin #stdout 0.27s 40780KB
stdin
Standard input is empty
stdout
[a1, a2, b1, b2, b3, a3, a4, a5, b4]
[c1, c2, c3, c4, d1, d2, d3]
[e1, e2, e3]