fork download
  1. board = [
  2. '##..##',
  3. '#.###.',
  4. '###.#.',
  5. '...###']
  6.  
  7. I = len(board)
  8. J = len(board[0])
  9. room_no = 0
  10.  
  11.  
  12. def get_range(i:int, j:int):
  13. for ii in range(i - 1, i + 2):
  14. for jj in range(j - 1, j + 2):
  15. if ii < 0: continue
  16. if ii >= I: continue
  17. if jj < 0: continue
  18. if jj >= J: continue
  19. yield ii, jj
  20.  
  21.  
  22. def search(x):
  23. cnt = 0
  24. i, j = x
  25. if board[i][j] == '.':
  26. cnt += 1
  27. board[i][j] = str(room_no)
  28. for x in get_range(i, j):
  29. search(x)
  30. return cnt
  31.  
  32.  
  33. def pp():
  34. for i in board:
  35. print(''.join(i))
  36.  
  37.  
  38. board = list(map(list, board))
  39. for i in range(I):
  40. for j in range(J):
  41. if search((i, j)) > 0:
  42. room_no += 1
  43. pp()
  44. print(room_no, 'rooms')
  45.  
Success #stdin #stdout 0.02s 8688KB
stdin
Standard input is empty
stdout
##00##
#0###1
###2#1
222###
3 rooms