Advertisement
Guest User

Untitled

a guest
May 6th, 2016
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.89 KB | None | 0 0
  1. void Board::traverse (Tile *t, Neighbours neighbours) {
  2. t->visited = true;
  3. COO coo = make_pair(t->i, t->j);
  4. Buddies buddies = neighbours[coo];
  5. if (t->color != '0' && t->color != '.') {
  6. for (uint i = 0; i < buddies.size(); i++) {
  7. Tile *buddy = &this->field[buddies[i]];
  8. if (buddy->visited && buddy->color == t->color) {
  9. if (buddy->chain_id == -1) {
  10. buddy->chain_id = this->chains.size();
  11. this->chains[buddy->chain_id].push_back(*buddy);
  12. }
  13. t->chain_id = buddy->chain_id;
  14. this->chains[t->chain_id].push_back(*t);
  15. break;
  16. }
  17. }
  18. if (t->chain_id == -1) {
  19. t->chain_id = this->chains.size();
  20. this->chains[t->chain_id].push_back(*t);
  21. }
  22. }
  23.  
  24. for (uint i = 0; i < buddies.size(); i++) {
  25. if (!this->field[buddies[i]].visited) {
  26. this->traverse(&this->field[buddies[i]], neighbours);
  27. }
  28. }
  29. }
  30.  
  31. class Board():
  32.  
  33. def __init__(self, s):
  34. self.field = []
  35. self.chains = {}
  36. self.heights = None
  37. self.score = 0
  38. self.step = 1
  39.  
  40. def traverse(self, t=None):
  41. t.visited = True
  42. buddies = neighbours[(t.i, t.j)]
  43. if t.color != '0' and t.color != '.':
  44. for i, j in buddies:
  45. if self.field[i][j].visited and self.field[i][j].color == t.color:
  46. if self.field[i][j].chain_id is None:
  47. self.field[i][j].chain_id = len(self.chains)
  48. self.chains[self.field[i][j].chain_id] = [self.field[i][j]]
  49. t.chain_id = self.field[i][j].chain_id
  50. self.chains[t.chain_id].append(t)
  51. break
  52. if t.chain_id is None:
  53. t.chain_id = len(self.chains)
  54. self.chains[t.chain_id] = [t]
  55.  
  56. for i, j in buddies:
  57. if not self.field[i][j].visited:
  58. self.traverse(self.field[i][j])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement