summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAineopintojen-harjoitustyo-Algoritmit-j <github-hy-tiralabra@v.hix.fi>2024-02-18 14:19:02 +0200
committerAineopintojen-harjoitustyo-Algoritmit-j <github-hy-tiralabra@v.hix.fi>2024-02-18 14:19:02 +0200
commit890fd029b3ee1dee4a0c1c2430b061cd66b8b8e8 (patch)
treec1ee5d0e6a9888b34ecf6a45a0290b29a3769885
parenta947010229c81872a28552bddc37a4761c3a575a (diff)
Refactor & comment bots.
-rw-r--r--src/miinaharava/bots/bot.py6
-rw-r--r--src/miinaharava/bots/dssp.py30
2 files changed, 22 insertions, 14 deletions
diff --git a/src/miinaharava/bots/bot.py b/src/miinaharava/bots/bot.py
index cfeedce..b00f9a6 100644
--- a/src/miinaharava/bots/bot.py
+++ b/src/miinaharava/bots/bot.py
@@ -91,8 +91,12 @@ class Bot():
count+=1
return count
+ def are_neighbours(self, tile1, tile2):
+ """ Kertoo ovatko laatat naapureita keskenään """
+ return abs(tile1[0]-tile2[0])==1 or abs(tile1[1]-tile2[1])==1
+
def known_tile(self, tile):
- """ Kortoo onko laatta merkitty tai avattu. """
+ """ Kertoo onko laatta merkitty tai avattu. """
return self.matrix[tile[0]][tile[1]] < Tile.UNOPENED
def number_tile(self, tile):
diff --git a/src/miinaharava/bots/dssp.py b/src/miinaharava/bots/dssp.py
index 769c616..1307565 100644
--- a/src/miinaharava/bots/dssp.py
+++ b/src/miinaharava/bots/dssp.py
@@ -4,22 +4,27 @@ from random import sample
from .simple import SimpleBot
class DSSPBot(SimpleBot):
- """ DSSPBot - perustyhmä botti """
+ """ Kahta pistettä tutkiva tekoäly. Käyttää pohjana SipleBot tekoälyä """
+
+ def get_pairs(self):
+ """ Etsii kiinnostavien laattojen joukosta vierekkäiset """
+ tiles = list(self.get_interesting_tiles())
+ pairs = []
+ for i, tile1 in enumerate(tiles):
+ for _, tile2 in enumerate(tiles, i+1):
+ if self.are_neighbours(tile1,tile2):
+ pairs.append((tile1,tile2))
+ pairs.append((tile2,tile1))
+ return pairs
def search(self):
- """ search - etsii kahden vierekkäisen laatan perusteella"""
+ """ Etsitään voiko viereisen numerolaatan osoittamat miinat ja
+ epävarmat poistamalla päätellä onko jokin nykyisen laatan tuntematon
+ vapaa. """
if super().search():
return True
- tiles = list(self.get_interesting_tiles())
- pairs = []
- # pylint: disable = consider-using-enumerate
- for i in range(len(tiles)):
- for j in range(i+1,len(tiles)):
- if abs(tiles[i][0]-tiles[j][0])==1 or abs(tiles[i][1]-tiles[j][1])==1:
- pairs.append((tiles[i],tiles[j]))
- pairs.append((tiles[j],tiles[i]))
- for tile1, tile2 in pairs:
+ for tile1, tile2 in self.get_pairs():
c1 = self.get_value(tile1)
c2 = self.get_value(tile2)
n1 = self.get_neighbours(tile1)
@@ -45,8 +50,7 @@ class DSSPBot(SimpleBot):
c2 -= cc
if c2 == 0:
- for safe in n2:
- self.safe_tiles.add(safe)
+ self.safe_tiles |= n2
return self.saved_hints()