From b93d49fa9685e8d87c7c2a90c58458475fcb0fac Mon Sep 17 00:00:00 2001 From: Anna Nowak Date: Tue, 23 Apr 2019 17:15:05 +0200 Subject: [PATCH 1/6] Dodano surowego DFS(sam algorytm do mocnej poprawy) --- DataModels/Container.py | 4 + DataModels/GC.py | 59 ++- Traversal/DFS.py | 18 +- config.py | 3 +- logs/houses_stats_20190327103421.csv | 63 +++ logs/stats_20190327084138.csv | 28 ++ logs/stats_20190327084420.csv | 13 + logs/stats_20190327085441.csv | 9 + logs/stats_20190327085731.csv | 4 + logs/stats_20190327085741.csv | 5 + logs/stats_20190327085758.csv | 144 ++++++ logs/stats_20190327090250.csv | 51 ++ logs/stats_20190327090518.csv | 26 + logs/stats_20190327090823.csv | 9 + logs/stats_20190327094837.csv | 35 ++ logs/stats_20190327095148.csv | 17 + logs/stats_20190327095339.csv | 10 + logs/stats_20190327095536.csv | 8 + logs/stats_20190327095703.csv | 8 + logs/stats_20190327095726.csv | 7 + logs/stats_20190327100036.csv | 6 + logs/stats_20190327100109.csv | 3 + logs/stats_20190327100350.csv | 31 ++ logs/stats_20190327100454.csv | 14 + logs/stats_20190327100523.csv | 692 +++++++++++++++++++++++++++ logs/stats_20190327103421.csv | 63 +++ main.py | 5 +- prolog/basic_rules.pl | 22 + prolog/house_positions.pl | 9 + utilities.py | 9 +- 30 files changed, 1347 insertions(+), 28 deletions(-) create mode 100644 logs/houses_stats_20190327103421.csv create mode 100644 logs/stats_20190327084138.csv create mode 100644 logs/stats_20190327084420.csv create mode 100644 logs/stats_20190327085441.csv create mode 100644 logs/stats_20190327085731.csv create mode 100644 logs/stats_20190327085741.csv create mode 100644 logs/stats_20190327085758.csv create mode 100644 logs/stats_20190327090250.csv create mode 100644 logs/stats_20190327090518.csv create mode 100644 logs/stats_20190327090823.csv create mode 100644 logs/stats_20190327094837.csv create mode 100644 logs/stats_20190327095148.csv create mode 100644 logs/stats_20190327095339.csv create mode 100644 logs/stats_20190327095536.csv create mode 100644 logs/stats_20190327095703.csv create mode 100644 logs/stats_20190327095726.csv create mode 100644 logs/stats_20190327100036.csv create mode 100644 logs/stats_20190327100109.csv create mode 100644 logs/stats_20190327100350.csv create mode 100644 logs/stats_20190327100454.csv create mode 100644 logs/stats_20190327100523.csv create mode 100644 logs/stats_20190327103421.csv create mode 100644 prolog/basic_rules.pl create mode 100644 prolog/house_positions.pl diff --git a/DataModels/Container.py b/DataModels/Container.py index d95d344..772706b 100644 --- a/DataModels/Container.py +++ b/DataModels/Container.py @@ -21,6 +21,10 @@ class Container(): def status(self): return [self.yellow, self.green, self.blue] + def is_full(self): + if self.yellow>0 or self.green>0 or self.blue>0: + return 1 + return 0 def add(self, trash): my_trash = [self.yellow, self.green, self.blue] diff --git a/DataModels/GC.py b/DataModels/GC.py index d7fe17c..e19e47f 100644 --- a/DataModels/GC.py +++ b/DataModels/GC.py @@ -2,34 +2,25 @@ from DataModels.Cell import Cell from DataModels.Road import Road from DataModels.House import House from DataModels.Dump import Dump -from config import GRID_WIDTH, GRID_HEIGHT - -# PODAC TUTAJ X I Y DO MOVEMENT (ZAIMPORTOWAC TO NAJPIERW) - +from config import GRID_WIDTH, GRID_HEIGHT, DELAY +from utilities import movement, check_moves +from Traversal.DFS import DFS +import pygame class GC(Cell): def __init__(self, x, y, max_rubbish, yellow=0, green=0, blue=0): Cell.__init__(self, x, y, max_rubbish, yellow, green, blue) - - def check_moves(self, direction, environment, x = None, y = None): - if((x,y) == (None, None)): - x = self.x - y = self.y - - print(environment) - - return ([dir for dir in self.movement(environment)[0] if self.movement(environment)[0][dir] != (x,y) and dir != self.movement(environment)[1][direction]]) - + self.moves = [] + self.old_time = pygame.time.get_ticks() def move(self, direction, environment): - self.x, self.y = self.movement(environment)[0][direction] + self.x, self.y = movement(environment, self.x, self.y)[0][direction] self.update_rect(self.x, self.y) - print(self.check_moves(direction, environment)) + print(check_moves(environment, self.x, self.y,direction)) def collect(self, enviromnent): x, y = [self.x, self.y] coordinates = [(x, y - 1), (x, y + 1), (x - 1, y), (x + 1, y)] - for coordinate in coordinates: if coordinate[0]<0 or coordinate[1]<0: continue @@ -40,5 +31,37 @@ class GC(Cell): if(type(item) == House or type(item) == Dump): item.return_trash(self) - self.update_image() + + def find_houses(self,enviromnent): + for row in enviromnent: + for cell in row: + goal = [] + if type(cell) == House and cell.container.is_full(): + goal.append([cell.x-1, cell.y]) + goal.append([cell.x+1, cell.y]) + goal.append([cell.x, cell.y-1]) + goal.append([cell.x, cell.y+1]) + if len(self.moves) == 0: + x = self.x + y = self.y + else: + x,y = self.moves[-2] + avalible_moves = check_moves(enviromnent, x,y) + self.moves.extend(DFS(enviromnent,avalible_moves,[[x,y]],goal)) + self.moves.append("pick_garbage") + print(self.moves) + self.moves.reverse() + + + def make_actions_from_list(self,environment): + now = pygame.time.get_ticks() + if len(self.moves)==0 or now - self.old_time <= DELAY: + return + self.old_time = pygame.time.get_ticks() + if self.moves[-1] == "pick_garbage": + self.collect(environment) + self.moves.pop() + return + self.x, self.y = self.moves.pop() + self.update_rect(self.x,self.y) diff --git a/Traversal/DFS.py b/Traversal/DFS.py index e54b09a..38ce927 100644 --- a/Traversal/DFS.py +++ b/Traversal/DFS.py @@ -1,9 +1,13 @@ -def DFS(grid, avaliable_movement, gc_moveset): - if(moveset[-1] == (1,4) or len(avaliable_movement) == 0): +from utilities import movement,check_moves +def DFS(grid, avaliable_movement, gc_moveset,goal): + print(gc_moveset) + if(gc_moveset[-1] in goal or len(avaliable_movement) == 0): + print("Do zwrocenia: ",gc_moveset) return gc_moveset - x,y = gc_moveset[-1] - move = avaliable_movement.pop() - - ## TUTAJ ZAIMPORTOWAC MOVEMENT - \ No newline at end of file + for direction in avaliable_movement: + x_next, y_next = movement(grid,x,y)[0][direction] + avaliable_movement_next = check_moves(grid, x_next,y_next,direction) + gc_moveset_next = gc_moveset.copy() + gc_moveset_next.append([x_next,y_next]) + return DFS(grid, avaliable_movement_next, gc_moveset_next,goal) diff --git a/config.py b/config.py index 0b315ab..f41f6c1 100644 --- a/config.py +++ b/config.py @@ -2,6 +2,7 @@ import sys, random CELL_SIZE = 64 FPS = 60 +DELAY = 500 map = open( sys.argv[1], 'r' ) @@ -11,4 +12,4 @@ GC_X, GC_Y = [int(x) for x in map.readline().split()] WINDOW_HEIGHT = GRID_HEIGHT * CELL_SIZE WINDOW_WIDTH = GRID_WIDTH * CELL_SIZE -HOUSE_CAPACITY = random.randint(1, 11) \ No newline at end of file +HOUSE_CAPACITY = random.randint(1, 11) diff --git a/logs/houses_stats_20190327103421.csv b/logs/houses_stats_20190327103421.csv new file mode 100644 index 0000000..d3fadb6 --- /dev/null +++ b/logs/houses_stats_20190327103421.csv @@ -0,0 +1,63 @@ +House 1 plastic,House 1 glass,House 1 metal,House 2 plastic,House 2 glass,House 2 metal,House 3 plastic,House 3 glass,House 3 metal,House 4 plastic,House 4 glass,House 4 metal,House 5 plastic,House 5 glass,House 5 metal,House 6 plastic,House 6 glass,House 6 metal +8,4,10,0,0,1,8,9,10,1,7,7,8,5,7,8,2,1 +10,4,10,0,2,1,8,10,10,1,8,7,8,6,7,8,2,2 +10,4,10,0,3,2,10,10,10,1,9,8,10,6,7,9,3,4 +10,5,10,0,4,2,10,10,10,2,9,8,10,7,7,9,3,4 +10,5,10,0,4,3,10,10,10,2,10,8,10,7,9,9,3,4 +10,5,10,0,4,3,10,10,10,2,10,9,10,7,9,9,3,4 +10,5,10,0,4,4,10,10,10,2,10,9,10,7,10,9,4,5 +10,5,10,0,4,4,10,10,10,2,10,9,10,7,10,10,5,5 +10,5,10,2,5,4,10,10,10,3,10,9,10,7,10,10,5,6 +10,5,10,3,5,4,10,10,10,4,10,9,10,7,10,10,5,7 +10,5,10,3,6,4,10,10,10,6,10,9,10,10,10,10,6,7 +10,6,10,3,6,4,10,10,10,7,10,9,10,10,10,10,8,8 +10,7,10,3,8,5,10,10,10,8,10,10,10,10,10,10,8,9 +10,7,10,5,9,6,10,10,10,8,10,10,10,10,10,10,8,10 +10,7,10,6,9,6,10,10,10,9,10,10,10,10,10,10,8,10 +10,8,10,7,9,8,10,10,10,10,10,10,10,10,10,10,8,10 +10,9,10,8,9,10,10,10,10,10,10,10,10,10,10,10,8,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,8,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,8,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 +10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 diff --git a/logs/stats_20190327084138.csv b/logs/stats_20190327084138.csv new file mode 100644 index 0000000..135f53b --- /dev/null +++ b/logs/stats_20190327084138.csv @@ -0,0 +1,28 @@ +Plastic left,Glass left,Metal left,GC plastic,GC glass,GC metal,Total collected +18,27,26,0/10,0/10,0/10,0 +22,28,29,0/10,0/10,0/10,0 +23,33,33,0/10,0/10,0/10,0 +25,36,36,0/10,0/10,0/10,0 +27,39,37,0/10,0/10,0/10,0 +31,41,41,0/10,0/10,0/10,0 +36,43,41,0/10,0/10,0/10,0 +40,47,45,0/10,0/10,0/10,0 +41,51,45,0/10,0/10,0/10,0 +41,52,46,0/10,0/10,0/10,0 +43,54,48,0/10,0/10,0/10,0 +45,54,49,0/10,0/10,0/10,0 +48,57,50,0/10,0/10,0/10,0 +49,58,54,0/10,0/10,0/10,0 +51,59,54,0/10,0/10,0/10,0 +52,59,54,0/10,0/10,0/10,0 +54,59,55,0/10,0/10,0/10,0 +56,60,57,0/10,0/10,0/10,0 +57,60,58,0/10,0/10,0/10,0 +57,60,58,0/10,0/10,0/10,0 +57,60,58,0/10,0/10,0/10,0 +57,60,58,0/10,0/10,0/10,0 +57,60,59,0/10,0/10,0/10,0 +59,60,59,0/10,0/10,0/10,0 +59,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 diff --git a/logs/stats_20190327084420.csv b/logs/stats_20190327084420.csv new file mode 100644 index 0000000..2825482 --- /dev/null +++ b/logs/stats_20190327084420.csv @@ -0,0 +1,13 @@ +Plastic left,Glass left,Metal left,GC plastic,GC glass,GC metal,Total collected +20,33,20,0/10,0/10,0/10,0 +26,34,22,0/10,0/10,0/10,0 +27,37,27,0/10,0/10,0/10,0 +28,37,30,0/10,0/10,0/10,0 +30,40,33,0/10,0/10,0/10,0 +32,41,36,0/10,0/10,0/10,0 +35,42,38,0/10,0/10,0/10,0 +37,44,40,0/10,0/10,0/10,0 +39,45,41,0/10,0/10,0/10,0 +40,47,43,0/10,0/10,0/10,0 +42,47,45,0/10,0/10,0/10,0 +48,48,47,0/10,0/10,0/10,0 diff --git a/logs/stats_20190327085441.csv b/logs/stats_20190327085441.csv new file mode 100644 index 0000000..7ad6cbb --- /dev/null +++ b/logs/stats_20190327085441.csv @@ -0,0 +1,9 @@ +Plastic left,Glass left,Metal left,GC plastic,GC glass,GC metal,Total collected +30,37,26,0/10,0/10,0/10,0 +34,39,27,0/10,0/10,0/10,0 +36,41,27,0/10,0/10,0/10,0 +40,43,29,0/10,0/10,0/10,0 +40,44,33,0/10,0/10,0/10,0 +40,45,34,0/10,0/10,0/10,0 +42,45,36,0/10,0/10,0/10,0 +43,46,38,0/10,0/10,0/10,0 diff --git a/logs/stats_20190327085731.csv b/logs/stats_20190327085731.csv new file mode 100644 index 0000000..914c12c --- /dev/null +++ b/logs/stats_20190327085731.csv @@ -0,0 +1,4 @@ +Plastic left,Glass left,Metal left,GC plastic,GC glass,GC metal,Total collected +21,37,28,0/10,0/10,0/10,0 +23,39,30,0/10,0/10,0/10,0 +25,40,30,0/10,0/10,0/10,0 diff --git a/logs/stats_20190327085741.csv b/logs/stats_20190327085741.csv new file mode 100644 index 0000000..82e1890 --- /dev/null +++ b/logs/stats_20190327085741.csv @@ -0,0 +1,5 @@ +Plastic left,Glass left,Metal left,GC plastic,GC glass,GC metal,Total collected +32,32,30,0/10,0/10,0/10,0 +33,34,33,0/10,0/10,0/10,0 +34,36,34,0/10,0/10,0/10,0 +37,39,35,0/10,0/10,0/10,0 diff --git a/logs/stats_20190327085758.csv b/logs/stats_20190327085758.csv new file mode 100644 index 0000000..aa0aa79 --- /dev/null +++ b/logs/stats_20190327085758.csv @@ -0,0 +1,144 @@ +Plastic left,Glass left,Metal left,GC plastic,GC glass,GC metal,Total collected +30,22,27,0/10,0/10,0/10,0 +33,27,29,0/10,0/10,0/10,0 +35,29,30,0/10,0/10,0/10,0 +35,34,32,0/10,0/10,0/10,0 +38,38,33,0/10,0/10,0/10,0 +40,41,33,0/10,0/10,0/10,0 +41,41,34,0/10,0/10,0/10,0 +43,43,36,0/10,0/10,0/10,0 +44,44,39,0/10,0/10,0/10,0 +47,45,41,0/10,0/10,0/10,0 +47,48,42,0/10,0/10,0/10,0 +47,48,45,0/10,0/10,0/10,0 +48,49,46,0/10,0/10,0/10,0 +49,49,46,0/10,0/10,0/10,0 +50,49,47,0/10,0/10,0/10,0 +50,49,47,0/10,0/10,0/10,0 +50,49,47,0/10,0/10,0/10,0 +50,50,48,0/10,0/10,0/10,0 +50,50,49,0/10,0/10,0/10,0 +50,50,49,0/10,0/10,0/10,0 +50,50,49,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 diff --git a/logs/stats_20190327090250.csv b/logs/stats_20190327090250.csv new file mode 100644 index 0000000..f7d7b9d --- /dev/null +++ b/logs/stats_20190327090250.csv @@ -0,0 +1,51 @@ +Plastic left,Glass left,Metal left,GC plastic,GC glass,GC metal,Total collected +34,35,27,0/10,0/10,0/10,0 +36,37,27,0/10,0/10,0/10,0 +36,39,31,0/10,0/10,0/10,0 +38,41,31,0/10,0/10,0/10,0 +41,42,33,0/10,0/10,0/10,0 +44,42,33,0/10,0/10,0/10,0 +46,45,34,0/10,0/10,0/10,0 +46,47,36,0/10,0/10,0/10,0 +49,47,36,0/10,0/10,0/10,0 +49,47,38,0/10,0/10,0/10,0 +49,48,40,0/10,0/10,0/10,0 +50,49,40,0/10,0/10,0/10,0 +50,49,41,0/10,0/10,0/10,0 +50,49,41,0/10,0/10,0/10,0 +50,49,41,0/10,0/10,0/10,0 +50,50,41,0/10,0/10,0/10,0 +50,50,41,0/10,0/10,0/10,0 +50,50,44,0/10,0/10,0/10,0 +50,50,46,0/10,0/10,0/10,0 +50,50,46,0/10,0/10,0/10,0 +50,50,46,0/10,0/10,0/10,0 +50,50,47,0/10,0/10,0/10,0 +50,50,49,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 diff --git a/logs/stats_20190327090518.csv b/logs/stats_20190327090518.csv new file mode 100644 index 0000000..4a7187a --- /dev/null +++ b/logs/stats_20190327090518.csv @@ -0,0 +1,26 @@ +Plastic left,Glass left,Metal left,GC plastic,GC glass,GC metal,Total collected +15,31,36,0/10,0/10,0/10,0 +19,36,39,0/10,0/10,0/10,0 +20,36,40,0/10,0/10,0/10,0 +24,38,40,0/10,0/10,0/10,0 +29,38,42,0/10,0/10,0/10,0 +32,38,45,0/10,0/10,0/10,0 +33,38,45,0/10,0/10,0/10,0 +33,39,46,0/10,0/10,0/10,0 +36,40,46,0/10,0/10,0/10,0 +38,40,46,0/10,0/10,0/10,0 +38,42,47,0/10,0/10,0/10,0 +39,44,49,0/10,0/10,0/10,0 +42,44,50,0/10,0/10,0/10,0 +42,45,50,0/10,0/10,0/10,0 +43,45,50,0/10,0/10,0/10,0 +43,46,50,0/10,0/10,0/10,0 +44,46,50,0/10,0/10,0/10,0 +44,46,50,0/10,0/10,0/10,0 +45,47,50,0/10,0/10,0/10,0 +45,49,50,0/10,0/10,0/10,0 +46,49,50,0/10,0/10,0/10,0 +47,50,50,0/10,0/10,0/10,0 +47,50,50,0/10,0/10,0/10,0 +48,50,50,0/10,0/10,0/10,0 +48,50,50,0/10,0/10,0/10,0 diff --git a/logs/stats_20190327090823.csv b/logs/stats_20190327090823.csv new file mode 100644 index 0000000..d4709ad --- /dev/null +++ b/logs/stats_20190327090823.csv @@ -0,0 +1,9 @@ +Plastic left,Glass left,Metal left,GC plastic,GC glass,GC metal,Total collected +35,27,43,0/10,0/10,0/10,0 +37,28,45,0/10,0/10,0/10,0 +37,32,45,0/10,0/10,0/10,0 +39,35,46,0/10,0/10,0/10,0 +39,37,46,0/10,0/10,0/10,0 +40,37,46,0/10,0/10,0/10,0 +42,39,46,0/10,0/10,0/10,0 +44,39,46,0/10,0/10,0/10,0 diff --git a/logs/stats_20190327094837.csv b/logs/stats_20190327094837.csv new file mode 100644 index 0000000..4105401 --- /dev/null +++ b/logs/stats_20190327094837.csv @@ -0,0 +1,35 @@ +Plastic left,Glass left,Metal left,GC plastic,GC glass,GC metal,Total collected +25,15,21,0/10,0/10,0/10,0 +27,19,23,0/10,0/10,0/10,0 +29,22,28,0/10,0/10,0/10,0 +29,25,28,0/10,0/10,0/10,0 +36,29,30,0/10,0/10,0/10,0 +37,35,31,0/10,0/10,0/10,0 +38,38,33,0/10,0/10,0/10,0 +38,38,34,0/10,0/10,0/10,0 +38,39,36,0/10,0/10,0/10,0 +41,43,36,0/10,0/10,0/10,0 +43,44,37,0/10,0/10,0/10,0 +45,46,39,0/10,0/10,0/10,0 +45,48,39,0/10,0/10,0/10,0 +46,49,42,0/10,0/10,0/10,0 +47,49,45,0/10,0/10,0/10,0 +48,49,45,0/10,0/10,0/10,0 +49,50,46,0/10,0/10,0/10,0 +50,50,46,0/10,0/10,0/10,0 +50,50,46,0/10,0/10,0/10,0 +50,50,46,0/10,0/10,0/10,0 +50,50,47,0/10,0/10,0/10,0 +50,50,49,0/10,0/10,0/10,0 +50,50,49,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 diff --git a/logs/stats_20190327095148.csv b/logs/stats_20190327095148.csv new file mode 100644 index 0000000..f9fbc88 --- /dev/null +++ b/logs/stats_20190327095148.csv @@ -0,0 +1,17 @@ +Plastic left,Glass left,Metal left,GC plastic,GC glass,GC metal,Total collected +35,23,40,0/10,0/10,0/10,0 +36,28,40,0/10,0/10,0/10,0 +41,30,40,0/10,0/10,0/10,0 +43,31,42,0/10,0/10,0/10,0 +44,34,42,0/10,0/10,0/10,0 +45,36,46,0/10,0/10,0/10,0 +48,36,47,0/10,0/10,0/10,0 +48,38,47,0/10,0/10,0/10,0 +48,39,49,0/10,0/10,0/10,0 +48,42,49,0/10,0/10,0/10,0 +49,44,49,0/10,0/10,0/10,0 +50,46,49,0/10,0/10,0/10,0 +50,47,49,0/10,0/10,0/10,0 +50,48,50,0/10,0/10,0/10,0 +50,49,50,0/10,0/10,0/10,0 +50,49,50,0/10,0/10,0/10,0 diff --git a/logs/stats_20190327095339.csv b/logs/stats_20190327095339.csv new file mode 100644 index 0000000..aa5def1 --- /dev/null +++ b/logs/stats_20190327095339.csv @@ -0,0 +1,10 @@ +Plastic left,Glass left,Metal left,GC plastic,GC glass,GC metal,Total collected +27,34,21,0/10,0/10,0/10,0 +29,35,21,0/10,0/10,0/10,0 +31,36,22,0/10,0/10,0/10,0 +33,39,22,0/10,0/10,0/10,0 +34,44,23,0/10,0/10,0/10,0 +37,45,26,0/10,0/10,0/10,0 +38,45,27,0/10,0/10,0/10,0 +42,46,30,0/10,0/10,0/10,0 +42,47,33,0/10,0/10,0/10,0 diff --git a/logs/stats_20190327095536.csv b/logs/stats_20190327095536.csv new file mode 100644 index 0000000..3f0f967 --- /dev/null +++ b/logs/stats_20190327095536.csv @@ -0,0 +1,8 @@ +Plastic left,Glass left,Metal left,GC plastic,GC glass,GC metal,Total collected +13,25,23,0/10,0/10,0/10,0 +17,28,27,0/10,0/10,0/10,0 +20,33,30,0/10,0/10,0/10,0 +23,37,32,0/10,0/10,0/10,0 +25,38,35,0/10,0/10,0/10,0 +27,41,35,0/10,0/10,0/10,0 +28,42,37,0/10,0/10,0/10,0 diff --git a/logs/stats_20190327095703.csv b/logs/stats_20190327095703.csv new file mode 100644 index 0000000..d483343 --- /dev/null +++ b/logs/stats_20190327095703.csv @@ -0,0 +1,8 @@ +Plastic left,Glass left,Metal left,GC plastic,GC glass,GC metal,Total collected +25,8,17,0/10,0/10,0/10,0 +28,9,18,0/10,0/10,0/10,0 +32,10,18,0/10,0/10,0/10,0 +35,12,21,0/10,0/10,0/10,0 +37,13,23,0/10,0/10,0/10,0 +39,16,24,0/10,0/10,0/10,0 +40,20,26,0/10,0/10,0/10,0 diff --git a/logs/stats_20190327095726.csv b/logs/stats_20190327095726.csv new file mode 100644 index 0000000..3929bf9 --- /dev/null +++ b/logs/stats_20190327095726.csv @@ -0,0 +1,7 @@ +Plastic left,Glass left,Metal left,GC plastic,GC glass,GC metal,Total collected +21,18,22,0/10,0/10,0/10,0 +22,20,25,0/10,0/10,0/10,0 +25,22,31,0/10,0/10,0/10,0 +25,27,35,0/10,0/10,0/10,0 +28,29,36,0/10,0/10,0/10,0 +31,32,39,0/10,0/10,0/10,0 diff --git a/logs/stats_20190327100036.csv b/logs/stats_20190327100036.csv new file mode 100644 index 0000000..913e169 --- /dev/null +++ b/logs/stats_20190327100036.csv @@ -0,0 +1,6 @@ +Plastic left,Glass left,Metal left,GC plastic,GC glass,GC metal,Total collected +39,20,30,0/10,0/10,0/10,0 +41,21,30,0/10,0/10,0/10,0 +42,22,32,0/10,0/10,0/10,0 +43,23,35,0/10,0/10,0/10,0 +45,25,37,0/10,0/10,0/10,0 diff --git a/logs/stats_20190327100109.csv b/logs/stats_20190327100109.csv new file mode 100644 index 0000000..115f4c3 --- /dev/null +++ b/logs/stats_20190327100109.csv @@ -0,0 +1,3 @@ +Plastic left,Glass left,Metal left,GC plastic,GC glass,GC metal,Total collected +21,23,5,0/10,0/10,0/10,0 +21,24,5,0/10,0/10,0/10,0 diff --git a/logs/stats_20190327100350.csv b/logs/stats_20190327100350.csv new file mode 100644 index 0000000..32c18d4 --- /dev/null +++ b/logs/stats_20190327100350.csv @@ -0,0 +1,31 @@ +Plastic left,Glass left,Metal left,GC plastic,GC glass,GC metal,Total collected +33,26,21,0/10,0/10,0/10,0 +35,28,23,0/10,0/10,0/10,0 +39,28,27,0/10,0/10,0/10,0 +40,28,32,0/10,0/10,0/10,0 +41,31,34,0/10,0/10,0/10,0 +42,32,35,0/10,0/10,0/10,0 +45,32,35,0/10,0/10,0/10,0 +47,34,36,0/10,0/10,0/10,0 +47,34,37,0/10,0/10,0/10,0 +47,34,40,0/10,0/10,0/10,0 +48,36,41,0/10,0/10,0/10,0 +48,37,43,0/10,0/10,0/10,0 +49,39,46,0/10,0/10,0/10,0 +49,40,47,0/10,0/10,0/10,0 +49,40,48,0/10,0/10,0/10,0 +50,40,49,0/10,0/10,0/10,0 +50,42,50,0/10,0/10,0/10,0 +50,42,50,0/10,0/10,0/10,0 +50,44,50,0/10,0/10,0/10,0 +50,45,50,0/10,0/10,0/10,0 +50,45,50,0/10,0/10,0/10,0 +50,45,50,0/10,0/10,0/10,0 +50,45,50,0/10,0/10,0/10,0 +50,46,50,0/10,0/10,0/10,0 +50,46,50,0/10,0/10,0/10,0 +50,46,50,0/10,0/10,0/10,0 +50,46,50,0/10,0/10,0/10,0 +50,46,50,0/10,0/10,0/10,0 +50,46,50,0/10,0/10,0/10,0 +50,46,50,0/10,0/10,0/10,0 diff --git a/logs/stats_20190327100454.csv b/logs/stats_20190327100454.csv new file mode 100644 index 0000000..9970f6f --- /dev/null +++ b/logs/stats_20190327100454.csv @@ -0,0 +1,14 @@ +Plastic left,Glass left,Metal left,GC plastic,GC glass,GC metal,Total collected +29,15,46,0/10,0/10,0/10,0 +31,20,46,0/10,0/10,0/10,0 +33,20,46,0/10,0/10,0/10,0 +35,23,47,0/10,0/10,0/10,0 +37,25,47,0/10,0/10,0/10,0 +38,27,47,0/10,0/10,0/10,0 +39,31,47,0/10,0/10,0/10,0 +40,31,47,0/10,0/10,0/10,0 +41,32,47,0/10,0/10,0/10,0 +42,34,47,0/10,0/10,0/10,0 +45,38,48,0/10,0/10,0/10,0 +48,41,48,0/10,0/10,0/10,0 +48,42,49,0/10,0/10,0/10,0 diff --git a/logs/stats_20190327100523.csv b/logs/stats_20190327100523.csv new file mode 100644 index 0000000..165c3a5 --- /dev/null +++ b/logs/stats_20190327100523.csv @@ -0,0 +1,692 @@ +Plastic left,Glass left,Metal left,GC plastic,GC glass,GC metal,Total collected +26,15,30,0/10,0/10,0/10,0 +28,19,31,0/10,0/10,0/10,0 +31,24,37,0/10,0/10,0/10,0 +33,27,41,0/10,0/10,0/10,0 +34,29,41,0/10,0/10,0/10,0 +35,31,42,0/10,0/10,0/10,0 +37,34,44,0/10,0/10,0/10,0 +38,36,44,0/10,0/10,0/10,0 +38,38,46,0/10,0/10,0/10,0 +38,38,46,0/10,0/10,0/10,0 +39,40,47,0/10,0/10,0/10,0 +41,41,48,0/10,0/10,0/10,0 +41,45,48,0/10,0/10,0/10,0 +42,46,49,0/10,0/10,0/10,0 +44,49,49,0/10,0/10,0/10,0 +45,49,49,0/10,0/10,0/10,0 +47,49,49,0/10,0/10,0/10,0 +48,49,49,0/10,0/10,0/10,0 +49,49,50,0/10,0/10,0/10,0 +50,49,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 +50,50,50,0/10,0/10,0/10,0 diff --git a/logs/stats_20190327103421.csv b/logs/stats_20190327103421.csv new file mode 100644 index 0000000..0a249aa --- /dev/null +++ b/logs/stats_20190327103421.csv @@ -0,0 +1,63 @@ +Plastic left,Glass left,Metal left,GC plastic,GC glass,GC metal,Total collected +33,27,36,0/10,0/10,0/10,0 +35,32,37,0/10,0/10,0/10,0 +40,35,41,0/10,0/10,0/10,0 +41,38,41,0/10,0/10,0/10,0 +41,39,44,0/10,0/10,0/10,0 +41,39,45,0/10,0/10,0/10,0 +41,40,48,0/10,0/10,0/10,0 +42,41,48,0/10,0/10,0/10,0 +45,42,49,0/10,0/10,0/10,0 +47,42,50,0/10,0/10,0/10,0 +49,47,50,0/10,0/10,0/10,0 +50,50,51,0/10,0/10,0/10,0 +51,53,54,0/10,0/10,0/10,0 +53,54,56,0/10,0/10,0/10,0 +55,54,56,0/10,0/10,0/10,0 +57,55,58,0/10,0/10,0/10,0 +58,56,60,0/10,0/10,0/10,0 +60,58,60,0/10,0/10,0/10,0 +60,58,60,0/10,0/10,0/10,0 +60,59,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 +60,60,60,0/10,0/10,0/10,0 diff --git a/main.py b/main.py index 3d157ce..1c8313c 100755 --- a/main.py +++ b/main.py @@ -68,7 +68,7 @@ for line in map_objects: for item in line: pygame_sprites.add(item) -gc = GC(GC_X, GC_Y, 2) +gc = GC(GC_X, GC_Y, 20) print("GC: " + str(GC_X) + str(GC_Y)) pygame_sprites.add(gc) @@ -89,7 +89,10 @@ while True: gc.move("right", map_objects) elif event.key == pygame.K_SPACE: gc.collect(map_objects) + elif event.key == pygame.K_0: + gc.find_houses(map_objects) + gc.make_actions_from_list(map_objects) pygame_sprites.update() pygame_sprites.draw(GAME_WINDOW) diff --git a/prolog/basic_rules.pl b/prolog/basic_rules.pl new file mode 100644 index 0000000..a59a2d0 --- /dev/null +++ b/prolog/basic_rules.pl @@ -0,0 +1,22 @@ +:- [house_positions]. + +check_position(X, Y):- + collectable_object(Z,X,Y), + write(Z),nl. + +full(Collectable_object, Material) :- + contains(Collectable_object, Material,10). + +contains(Collectable_object, Material):- + contains(Collectable_object,Material,Y), + Y>0. + +contains(Collectable_object) :- + contains(Collectable_object, paper); + contains(Collectable_object, glass); + contains(Collectable_object, metal). + +full(Collectable_object) :- + full(Collectable_object, paper), + full(Collectable_object, metal), + full(Collectable_object, glass). diff --git a/prolog/house_positions.pl b/prolog/house_positions.pl new file mode 100644 index 0000000..f61b83a --- /dev/null +++ b/prolog/house_positions.pl @@ -0,0 +1,9 @@ +collectable_object(landfill, 0, 0). +collectable_object(landfill, 1, 0). +collectable_object(landfill, 2, 0). +collectable_object(house, 8, 6). +collectable_object(house, 6, 8). +collectable_object(house, 2, 6). +collectable_object(house, 8, 8). +collectable_object(house, 9, 2). +collectable_object(house, 5, 3). diff --git a/utilities.py b/utilities.py index d412958..410f34c 100644 --- a/utilities.py +++ b/utilities.py @@ -1,3 +1,5 @@ +from config import GRID_WIDTH, GRID_HEIGHT +from DataModels.Road import Road def movement(environment, x ,y): movement = { "right": (x + 1, y) if x + 1 < GRID_WIDTH and type(environment[x + 1][y]) == Road else (x, y), @@ -13,4 +15,9 @@ def movement(environment, x ,y): "down": "up" } - return (movement, forbidden_movement) \ No newline at end of file + return (movement, forbidden_movement) + +def check_moves(environment, x,y,direction=None): + if direction == None: + return ([dir for dir in movement(environment, x, y)[0] if movement(environment, x,y)[0][dir] != (x,y)]) + return ([dir for dir in movement(environment, x, y)[0] if movement(environment, x,y)[0][dir] != (x,y) and dir != movement(environment,x,y)[1][direction]]) From e2e09e4537850d8734d26dc7c712656feebfd684 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magdalena=20Wilczy=C5=84ska?= Date: Tue, 23 Apr 2019 20:48:14 +0200 Subject: [PATCH 2/6] GC now recognizes houses as he passes --- DataModels/GC.py | 5 +---- DataModels/House.py | 5 +++++ Traversal/DFS.py | 26 ++++++++++++++++++++++++-- 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/DataModels/GC.py b/DataModels/GC.py index e19e47f..66425bc 100644 --- a/DataModels/GC.py +++ b/DataModels/GC.py @@ -38,10 +38,7 @@ class GC(Cell): for cell in row: goal = [] if type(cell) == House and cell.container.is_full(): - goal.append([cell.x-1, cell.y]) - goal.append([cell.x+1, cell.y]) - goal.append([cell.x, cell.y-1]) - goal.append([cell.x, cell.y+1]) + goal.append([cell.x, cell.y]) if len(self.moves) == 0: x = self.x y = self.y diff --git a/DataModels/House.py b/DataModels/House.py index 64dae2a..6d9fe1c 100644 --- a/DataModels/House.py +++ b/DataModels/House.py @@ -9,3 +9,8 @@ class House(Cell): self.container.yellow, self.container.green, self.container.blue = collector.container.add( [self.container.yellow, self.container.green, self.container.blue]) self.update_image() + + def is_empty(self): + if(self.container.yellow == self.container.green == self.container.blue == 0): + return True + else: return False diff --git a/Traversal/DFS.py b/Traversal/DFS.py index 38ce927..8b11192 100644 --- a/Traversal/DFS.py +++ b/Traversal/DFS.py @@ -1,7 +1,29 @@ from utilities import movement,check_moves +from DataModels.House import House def DFS(grid, avaliable_movement, gc_moveset,goal): - print(gc_moveset) - if(gc_moveset[-1] in goal or len(avaliable_movement) == 0): + print("Moveset: "+str(gc_moveset)) + + possible_goals = [] + a = gc_moveset[-1][0] + b = gc_moveset[-1][1] + possible_goals.append([a+1,b]) + possible_goals.append([a-1,b]) + possible_goals.append([a,b+1]) + possible_goals.append([a,b-1]) + + house_in_area = False + + for location in possible_goals: + try: + if(type(grid[location[0]][location[1]]) == House): + house_in_area = True + break + except: + continue + + print(str(house_in_area) + " possible goals: " + str(possible_goals) + " gc_moveset: " + str(gc_moveset[-1])) + + if(house_in_area or len(avaliable_movement) == 0): print("Do zwrocenia: ",gc_moveset) return gc_moveset x,y = gc_moveset[-1] From 3b6fc6a446993499345a461c36514e6985ea901e Mon Sep 17 00:00:00 2001 From: Anna Nowak Date: Tue, 23 Apr 2019 21:45:16 +0200 Subject: [PATCH 3/6] Naprawiono algorytm, dfs do poprawy --- DataModels/GC.py | 23 ++++++++--------------- DataModels/House.py | 6 +----- Traversal/DFS.py | 26 ++++++++++++++------------ main.py | 5 +++-- 4 files changed, 26 insertions(+), 34 deletions(-) diff --git a/DataModels/GC.py b/DataModels/GC.py index 66425bc..eb7abd2 100644 --- a/DataModels/GC.py +++ b/DataModels/GC.py @@ -33,21 +33,14 @@ class GC(Cell): item.return_trash(self) self.update_image() - def find_houses(self,enviromnent): - for row in enviromnent: - for cell in row: - goal = [] - if type(cell) == House and cell.container.is_full(): - goal.append([cell.x, cell.y]) - if len(self.moves) == 0: - x = self.x - y = self.y - else: - x,y = self.moves[-2] - avalible_moves = check_moves(enviromnent, x,y) - self.moves.extend(DFS(enviromnent,avalible_moves,[[x,y]],goal)) - self.moves.append("pick_garbage") - print(self.moves) + def find_houses(self,enviromnent, house_count): + x = self.x + y = self.y + result = [] + for home in range(house_count): + avalible_moves = check_moves(enviromnent, x,y) + [x,y],result = DFS(enviromnent,avalible_moves,[[x,y]]) + self.moves.extend(result) self.moves.reverse() diff --git a/DataModels/House.py b/DataModels/House.py index 6d9fe1c..316e768 100644 --- a/DataModels/House.py +++ b/DataModels/House.py @@ -4,13 +4,9 @@ from DataModels.Cell import Cell class House(Cell): def __init__(self, x, y, max_rubbish, yellow=0, green=0, blue=0): Cell.__init__(self, x, y, max_rubbish, yellow, green, blue) + self.unvisited = True def return_trash(self, collector): self.container.yellow, self.container.green, self.container.blue = collector.container.add( [self.container.yellow, self.container.green, self.container.blue]) self.update_image() - - def is_empty(self): - if(self.container.yellow == self.container.green == self.container.blue == 0): - return True - else: return False diff --git a/Traversal/DFS.py b/Traversal/DFS.py index 8b11192..450819e 100644 --- a/Traversal/DFS.py +++ b/Traversal/DFS.py @@ -1,8 +1,7 @@ from utilities import movement,check_moves from DataModels.House import House -def DFS(grid, avaliable_movement, gc_moveset,goal): - print("Moveset: "+str(gc_moveset)) - +from DataModels.Container import Container +def DFS(grid, available_movement, gc_moveset, depth=0): possible_goals = [] a = gc_moveset[-1][0] b = gc_moveset[-1][1] @@ -10,26 +9,29 @@ def DFS(grid, avaliable_movement, gc_moveset,goal): possible_goals.append([a-1,b]) possible_goals.append([a,b+1]) possible_goals.append([a,b-1]) - house_in_area = False for location in possible_goals: try: - if(type(grid[location[0]][location[1]]) == House): + if(type(grid[location[0]][location[1]]) == House and grid[location[0]][location[1]].container.is_full + and grid[location[0]][location[1]].unvisited): + grid[location[0]][location[1]].unvisited = False house_in_area = True + print("dupa") break except: continue - print(str(house_in_area) + " possible goals: " + str(possible_goals) + " gc_moveset: " + str(gc_moveset[-1])) - - if(house_in_area or len(avaliable_movement) == 0): + if(house_in_area or len(available_movement) == 0): print("Do zwrocenia: ",gc_moveset) - return gc_moveset + xy = gc_moveset[-1] + print(available_movement) + gc_moveset.append("pick_garbage") + return (xy, gc_moveset) x,y = gc_moveset[-1] - for direction in avaliable_movement: + for direction in available_movement: x_next, y_next = movement(grid,x,y)[0][direction] - avaliable_movement_next = check_moves(grid, x_next,y_next,direction) + available_movement_next = check_moves(grid, x_next,y_next,direction) gc_moveset_next = gc_moveset.copy() gc_moveset_next.append([x_next,y_next]) - return DFS(grid, avaliable_movement_next, gc_moveset_next,goal) + return DFS(grid, available_movement_next, gc_moveset_next) diff --git a/main.py b/main.py index 1c8313c..ed413ef 100755 --- a/main.py +++ b/main.py @@ -12,7 +12,7 @@ from DataModels.Road import Road from DataModels.GC import GC pygame_sprites = pygame.sprite.Group() - +house_count=0 FPS_CLOCK = pygame.time.Clock() GAME_WINDOW = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT), 0, 32) @@ -50,6 +50,7 @@ for y in map.readlines(): elif x is 'H': map_objects[x_coord][y_coord] = generate(x)( x_coord, y_coord, HOUSE_CAPACITY, yellow, green, blue) + house_count+=1 elif x is 'B': map_objects[x_coord][y_coord] = generate( x)(x_coord, y_coord, 100, "Dump_Blue") @@ -90,7 +91,7 @@ while True: elif event.key == pygame.K_SPACE: gc.collect(map_objects) elif event.key == pygame.K_0: - gc.find_houses(map_objects) + gc.find_houses(map_objects,house_count) gc.make_actions_from_list(map_objects) pygame_sprites.update() From c5ed2423d6469b6ebd276e89a9a1704858798424 Mon Sep 17 00:00:00 2001 From: Anna Nowak Date: Tue, 23 Apr 2019 23:05:34 +0200 Subject: [PATCH 4/6] Dzialajacy DFS --- Traversal/DFS.py | 31 ++++++++++++++++++++----------- main.py | 2 +- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/Traversal/DFS.py b/Traversal/DFS.py index 450819e..6ab408a 100644 --- a/Traversal/DFS.py +++ b/Traversal/DFS.py @@ -1,7 +1,9 @@ from utilities import movement,check_moves from DataModels.House import House from DataModels.Container import Container -def DFS(grid, available_movement, gc_moveset, depth=0): +stack = [] +def visit_cell(grid, available_movement, gc_moveset, depth=0): + global stack possible_goals = [] a = gc_moveset[-1][0] b = gc_moveset[-1][1] @@ -10,28 +12,35 @@ def DFS(grid, available_movement, gc_moveset, depth=0): possible_goals.append([a,b+1]) possible_goals.append([a,b-1]) house_in_area = False - for location in possible_goals: try: - if(type(grid[location[0]][location[1]]) == House and grid[location[0]][location[1]].container.is_full - and grid[location[0]][location[1]].unvisited): - grid[location[0]][location[1]].unvisited = False + cell = grid[location[0]][location[1]] + if(type(cell) == House and cell.container.is_full and cell.unvisited): + cell.unvisited = False house_in_area = True - print("dupa") break except: continue - - if(house_in_area or len(available_movement) == 0): - print("Do zwrocenia: ",gc_moveset) + if(house_in_area): xy = gc_moveset[-1] - print(available_movement) gc_moveset.append("pick_garbage") return (xy, gc_moveset) + + if len(available_movement) == 0 or depth>30: + return x,y = gc_moveset[-1] for direction in available_movement: x_next, y_next = movement(grid,x,y)[0][direction] available_movement_next = check_moves(grid, x_next,y_next,direction) gc_moveset_next = gc_moveset.copy() gc_moveset_next.append([x_next,y_next]) - return DFS(grid, available_movement_next, gc_moveset_next) + stack.append([grid, available_movement_next, gc_moveset_next, depth+1]) + +def DFS(grid, available_movement, gc_moveset, depth=0): + global stack + stack.append([grid, available_movement, gc_moveset, 0]) + while not len(stack)==0: + state = stack.pop() + result = visit_cell(state[0], state[1], state[2],state[3]) + if result!= None: + return result diff --git a/main.py b/main.py index ed413ef..78001e9 100755 --- a/main.py +++ b/main.py @@ -69,7 +69,7 @@ for line in map_objects: for item in line: pygame_sprites.add(item) -gc = GC(GC_X, GC_Y, 20) +gc = GC(GC_X, GC_Y, 200) print("GC: " + str(GC_X) + str(GC_Y)) pygame_sprites.add(gc) From 7cd150fa90f0eb6730fe94ac9f4bc081aff1ceca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Starski?= Date: Wed, 24 Apr 2019 02:27:58 +0200 Subject: [PATCH 5/6] Added Raport #2 --- Raports/SI_Raport_2.md | 74 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 Raports/SI_Raport_2.md diff --git a/Raports/SI_Raport_2.md b/Raports/SI_Raport_2.md new file mode 100644 index 0000000..6ee5132 --- /dev/null +++ b/Raports/SI_Raport_2.md @@ -0,0 +1,74 @@ +# Sztuczna inteligencja 2019 - Raport 2 + +**Czas trwania opisywanych prac:** 06.03.2018 - 26.03.2018 + +**Członkowie zespołu:** Anna Nowak, Magdalena Wilczyńska, Konrad Pierzyński, Michał Starski + +**Wybrany temat:** Inteligentna śmieciarka + +**Link do repozytorium projektu:** https://git.wmi.amu.edu.pl/s440556/SZI2019SmieciarzWmi + +## Pierwszy algorytm przeszukiwania mapy - DFS + +#### Implementacja + +Pierwszym podejściem naszej grupy do rozwiązania problemu była implementacja +algorytmu przeszukiwania drzewa w głąb - DFS (Wersja iteracyjna). +Aby zaimplementować ten algorytm, niezbędne było przygotowanie dla niego kilku +struktur pomocniczych dzięki którym będziemy mogli jasno zdefiniować warunki stopu i uzyskać satysfakcjonujące nas rozwiązanie. + +Do użytych struktur należą: + +- **Lista dwuwymiarowa przedstawiająca mapę w formie siatki po której można łatwo iterować** - Jeden stan takiej listy traktowaliśmy jako wierzchołek grafu +- **Stos wykonanych przez algorytm ruchów** - Używany do przechodzenia do kolejnych możliwych stanów jak i zapamiętania rozwiązania problemu. +- **Lista możliwych ruchów do wykonania przez agenta przy konkretnym stanie mapy** +- **Licznik głębokości na którą zszedł algorytm** - Zapobiega zajściu za głęboko w przypadku braku rozwiązania + +**Przebieg algorytmu**: + +- Dodaj do stosu pierwszy krok +- Dopóki stos nie jest pusty: + 1. Weź stan mapy ze stosu (operacja stack.pop()) + 2. Sprawdź warunek końca (Czy problem został rozwiązany ?) + - Jeżeli tak, zakończ algorytm + - Jeżeli nie, sprawdź czy głębokość przekroczyła 30 + 1. Jeżeli tak, zakończ algorytm informacją o braku rozwiązania + 2. Jeżeli nie, kontynuuj algorytm + +Rozwiązanie następuje wtedy, gdy wszystkie śmieci zostaną zebrane przez agenta. + +#### Obserwacje + +Przede wszystkim, algorytm przeszukiwania w głąb działa dla tego problemu +**zdecydowanie wolniej niż powinien**, przy jego działaniu łatwo wchodzić w głąb złej ścieżki, która nie doprowadzi nas do rozwiązania. Co prawda przy małej mapie algorytm radzi sobie z problemem, jednak z każdą kolejną większą +jest co raz gorzej. + +Problem można pokazać na przykładzie: + +Załóżmy, że hipotetyczne drzewo T wygląda w taki sposób: + +``` +a -- e +| +b +| +c +| +d +. +. - 100 wierzchołków +. +x +``` + +Naszym rozwiązaniem będzie doprowadzenie agenta z wierzchołka startowego **a** do wierzchołka końcowego **b**. DFS odwiedzi najpierw wierzchołki po kolei od a aż do x i dopiero później przyjdzie do e. Naturalnie można stwierdzić, że to nie jest sposób którego szukamy. Oczywiście 100 wierzchołków to mała liczba dla komputera, ale co jak będzie ich 1000, 10 000, lub 1 000 000 ? + +#### Podsumowanie + +Szukanie w głąb miałoby sens w innych przypadkach, na przykład gdybyśmy chcieli znaleźć możliwe wyniki w grze gdzie każda akcja pociąga za sobą kolejną, tworząc dość głęboki graf. + +Do szukania ścieżki po której ma poruszać się agent lepiej byłoby jednak przeszukiwać graf wszerz. + +#### Uruchamianie + +Aby uruchomić DFS na mapie Śmieciarza WMI, należy kliknąć **0**. From b8aaf2d78e94fafc1440ec0ffe50a998adde3dc9 Mon Sep 17 00:00:00 2001 From: Anna Nowak Date: Wed, 24 Apr 2019 07:34:01 +0200 Subject: [PATCH 6/6] Zmieniono DFS na rekurencyjny --- Traversal/DFS.py | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/Traversal/DFS.py b/Traversal/DFS.py index 6ab408a..2efa0fd 100644 --- a/Traversal/DFS.py +++ b/Traversal/DFS.py @@ -1,9 +1,8 @@ from utilities import movement,check_moves from DataModels.House import House from DataModels.Container import Container -stack = [] -def visit_cell(grid, available_movement, gc_moveset, depth=0): - global stack + +def DFS(grid, available_movement, gc_moveset, depth=0): possible_goals = [] a = gc_moveset[-1][0] b = gc_moveset[-1][1] @@ -34,13 +33,6 @@ def visit_cell(grid, available_movement, gc_moveset, depth=0): available_movement_next = check_moves(grid, x_next,y_next,direction) gc_moveset_next = gc_moveset.copy() gc_moveset_next.append([x_next,y_next]) - stack.append([grid, available_movement_next, gc_moveset_next, depth+1]) - -def DFS(grid, available_movement, gc_moveset, depth=0): - global stack - stack.append([grid, available_movement, gc_moveset, 0]) - while not len(stack)==0: - state = stack.pop() - result = visit_cell(state[0], state[1], state[2],state[3]) + result = DFS(grid, available_movement_next, gc_moveset_next, depth+1) if result!= None: return result