Advertisement
Bualrond

D

Nov 5th, 2018
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. def gt(n, mt, x, y):
  2. if(mt & (1 << (y * n + x))):
  3. return 1
  4. else:
  5. return 0
  6.  
  7. def serch_round(n, mt, x, y):
  8. if(y + 1 == n):
  9. u = 1
  10. else:
  11. u = 2
  12.  
  13. if(y == 0):
  14. d = 0
  15. else:
  16. d = -1
  17.  
  18. if(x + 1 == n):
  19. r = 1
  20. else:
  21. r = 2
  22.  
  23. if(x == 0):
  24. l = 0
  25. else:
  26. l = -1
  27.  
  28. out = -1 * gt(n, mt, x, y)
  29. for ay in range(y + d, y + u):
  30. for ax in range(x + l, x + r):
  31. out += gt(n, mt, ax, ay)
  32. return out
  33.  
  34. n = int(input())
  35.  
  36. now = 0
  37. past = 0
  38.  
  39. for y in range(n):
  40. inp = input()
  41. for x in range(n):
  42. if(inp[x] == '*'):
  43. past = past | (1 << (y * n + x))
  44.  
  45. hist = [past]
  46. ans = 0
  47.  
  48. while(past):
  49. for y in range(n):
  50. for x in range(n):
  51. if(past & (1 << (y * n + x)) and 2 <= serch_round(n, past, x, y) <= 3):
  52. now = now | (1 << (y * n + x))
  53. if(not past & (1 << (y * n + x)) and serch_round(n, past, x, y) == 3):
  54. now = now | (1 << (y * n + x))
  55.  
  56. if(hist.count(now)):
  57. print("Yes")
  58. ans += 1
  59. break
  60.  
  61.  
  62.  
  63. hist.append(now)
  64.  
  65. past = now
  66. now = 0
  67. ans += 1
  68. else:
  69. print("No")
  70. print(ans)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement