fork download
  1. rules <- list(
  2. white = '^(?!white)(?!black)',
  3. red = 'green',
  4. black = '^(?!white)(?!green)(?!orange)',
  5. orange = 'red|black',
  6. green = 'orange|white',
  7. purple = '^(?!purple)(?!green)(?!orange)(?!white)'
  8. )
  9.  
  10. parse_wires <- function(input) {
  11. return(strsplit(input, '\n')[[1]])
  12. }
  13.  
  14. disarm <- function(input, rules) {
  15. wires <- parse_wires(input)
  16. for(i in 1:(length(wires)-1)) {
  17. if(length(grep(rules[wires[i]], wires[i+1], perl=T)) == 0) return('detonated!')
  18. }
  19. return('disarmed!')
  20. }
  21.  
  22. input1 <- "white
  23. red
  24. green
  25. white"
  26.  
  27. input2 <- "white
  28. orange
  29. green
  30. white"
  31.  
  32.  
  33. cat(paste('First bomb was', disarm(input1, rules)))
  34. cat(paste('Second bomb was', disarm(input2, rules)))
  35.  
Success #stdin #stdout 0.22s 60752KB
stdin
Standard input is empty
stdout
First bomb was disarmed!Second bomb was detonated!