fork download
  1. w = (d = DATA.to_a)[0].chomp.size + 2
  2. b = '#' * w + d.map {|s| '#' + s.chomp + '#'}.join + '#' * w
  3.  
  4. n = 0
  5. while x = b =~ /\./ do
  6. n += 1
  7. a = [x]
  8. while x = a.pop do
  9. [-w-1, -w, -w+1, -1, 1, w-1, w, w+1].map {|s| x + s}.each do |y|
  10. next unless b[y] == '.'
  11. a << y
  12. b[y] = '#'
  13. end
  14. end
  15. end
  16.  
  17. print n, 'rooms'
  18.  
  19. __END__
  20. ##..##
  21. #.###.
  22. ###.#.
  23. ...###
Success #stdin #stdout 0.02s 7456KB
stdin
Standard input is empty
stdout
3rooms