Decision Tree

This commit is contained in:
Andrzej 2021-05-30 00:25:54 +02:00
parent 24a18662c7
commit d30612dfc7
20 changed files with 875 additions and 95 deletions

View File

@ -0,0 +1,45 @@
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import classification_report, confusion_matrix
from joblib import dump, load
class DecisionTree:
def __init__(self):
self.classifier = load('../../files/decision tree/classifier.joblib')
def Learning():
# Uploading data from file
dataset = pd.read_csv("../../files/decision tree/database.csv")
print(f'Shape: {dataset.shape}')
print(f'Head:\n{dataset.head()}')
X = dataset.drop('decision', axis=1)
y = dataset['decision']
# Split data to training and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.10)
# Training
classifier = DecisionTreeClassifier()
classifier.fit(X_train, y_train)
# Predictions test
y_pred = classifier.predict(X_test)
# print(y_pred)
# my_dict = {'known': [1], 'power': [1], 'new': [1], 'location': [0], 'stable': [1], 'chain_reaction': [1]}
# s = pd.DataFrame.from_dict(my_dict)
# predict = self.classifier.predict(s)
#
# print(predict)
print()
print(confusion_matrix(y_test, y_pred))
print(classification_report(y_test, y_pred))
dump(classifier, '../../files/decision tree/classifier.joblib')

View File

@ -24,12 +24,16 @@ class Field(object):
self.columns = 10 self.columns = 10
self.x_start = 5 self.x_start = 5
self.y_start = 5 self.y_start = 5
self.state_of_cell_array = [[0 for i in range(3)] for j in range(200)] # For red and green rectangles
# self.state_of_cell_array = [[0 for i in range(3)] for j in range(200)]
# Is on this position mine (True, False)
self.field_state_array = [[False for i in range(self.rows)] for j in range(self.columns)] self.field_state_array = [[False for i in range(self.rows)] for j in range(self.columns)]
self.small_image_array = [[0 for i in range(self.rows)] for j in range(self.columns)] self.small_image_array = [[0 for i in range(self.rows)] for j in range(self.columns)]
self.large_image_array = [[0 for i in range(self.rows)] for j in range(self.columns)] self.large_image_array = [[0 for i in range(self.rows)] for j in range(self.columns)]
self.cell_expense = [0 for i in range(self.rows * self.columns)] self.cell_expense = [0 for i in range(self.rows * self.columns)]
self.visited_mines = [] # Array rows * columns, if on [x][y] mine, object mine will be in the array in this position
self.state_of_cell_array = [["None" for _ in range(self.rows)] for __ in range(self.columns)]
# self.visited_mines = []
# Modified by Artem to search in the status area # Modified by Artem to search in the status area
self.canvas_small_images = [] self.canvas_small_images = []
@ -47,7 +51,11 @@ class Field(object):
bg='gray') bg='gray')
self.large_image_canvas.place(x=FRAME_WIDTH + 5, y=3) self.large_image_canvas.place(x=FRAME_WIDTH + 5, y=3)
self.flag_img = PhotoImage(master=self.small_field_canvas, file="../../files/flag/Flaga.png") self.flag_img = PhotoImage(master=self.small_field_canvas, file="../../files/flag/FlagRed.png")
self.flag_green_img = PhotoImage(master=self.small_field_canvas, file="../../files/flag/FlagGreen.png")
self.flag_yellow_img = PhotoImage(master=self.small_field_canvas, file="../../files/flag/FlagYellow.png")
self.flag_red_img = PhotoImage(master=self.small_field_canvas, file="../../files/flag/FlagRed.png")
self.flag_bleu_img = PhotoImage(master=self.small_field_canvas, file="../../files/flag/FlagBlue.png")
# Clear Canvases # Clear Canvases
def Moving(self): def Moving(self):

View File

@ -1,7 +1,15 @@
class Mine: class Mine:
def __init__(self, x, y): def __init__(self, x, y, known, power, new, location, stable):
self.array_x = x self.array_x = x
self.array_y = y self.array_y = y
self.status = True self.status = True
self.small_img = None self.small_img = None
self.large_img = None self.large_img = None
# Attributes for decision tree
self.known = known # 0 - 'no', 1 - 'yes'
self.power = power # 0 - 'no', 1 - 'yes'
self.new = new # 0 - 'no', 1 - 'yes'
self.location = location # 0 - 'standard', 1 - 'sand', 2 - 'water', 3 - 'swamp'
self.stable = stable # 0 - 'no', 1 - 'yes'
self.chain_reaction = 0 # 0 - 'no', 1 - 'yes'

Binary file not shown.

View File

@ -0,0 +1,9 @@
from bin.Classess.DecisionTree import Learning
def LearnDecisionTree():
Learning()
if __name__ == '__main__':
LearnDecisionTree()

15
bin/Main/test.py Normal file
View File

@ -0,0 +1,15 @@
import pandas as pd
def main():
my_dict = {'known': [1], 'power': [1], 'new': [1], 'location': 0, 'stable': [1], 'chain_reaction': [1]}
s = pd.DataFrame.from_dict(my_dict)
print(s)
# data = {'col_1': [3, 2, 1, 0], 'col_2': ['a', 'b', 'c', 'd']}
# print(pd.DataFrame.from_dict(data))
main()

View File

@ -2,6 +2,7 @@ import os
import random import random
import time import time
from tkinter import * from tkinter import *
import pandas as pd
from bin.Classess.Field import Field from bin.Classess.Field import Field
from bin.Classess.Mine import Mine from bin.Classess.Mine import Mine
@ -10,6 +11,7 @@ from bin.Classess.Player import Player
import bin.Classess.Node as nd import bin.Classess.Node as nd
import bin.Classess.Travel as tr import bin.Classess.Travel as tr
from resources.Globals import * from resources.Globals import *
from bin.Classess.DecisionTree import DecisionTree
# WINDOW_X = 533 + 1200 # WINDOW_X = 533 + 1200
# WINDOW_Y = 950 # WINDOW_Y = 950
@ -27,12 +29,16 @@ from resources.Globals import *
player = Player() player = Player()
field = Field() field = Field()
travel = Travel() travel = Travel()
decision_tree = DecisionTree()
# Globals
fringe = [] fringe = []
explored = [] explored = []
action_list = [] action_list = []
images_coord = [] images_coord = []
label = None
def Arrow(direction): def Arrow(direction):
image = "" image = ""
@ -62,18 +68,17 @@ def Fill(bool):
print(travel.points_map) print(travel.points_map)
for i in range(0, len(field.canvas_small_images)): for i in range(0, len(field.canvas_small_images)):
images_coord.append(field.small_field_canvas.coords(field.canvas_small_images[i])) images_coord.append(field.small_field_canvas.coords(field.canvas_small_images[i]))
# print("Coords List: ", images_coord) # print("Coords List: ", images_coord)
nd.init_data(images_coord, field.cell_expense) nd.init_data(images_coord, field.cell_expense)
# Drawing red/green rectangles # # Drawing red/green rectangles
for el in field.state_of_cell_array: # for el in field.state_of_cell_array:
if el[0] != 0: # if el[0] != 0:
field.small_field_canvas.create_rectangle(el[0], el[1], el[0] + player.step - 2, # field.small_field_canvas.create_rectangle(el[0], el[1], el[0] + player.step - 2,
el[1] + player.step - 2, width=3, outline=el[2]) # el[1] + player.step - 2, width=3, outline=el[2])
DrawingLargeImage() DrawingLargeImage()
@ -179,11 +184,11 @@ def CellDesignation(array, color):
def Action(action): def Action(action):
if action in ["Right", "Left", "Up", "space"]: if action in ["Right", "Left", "Up", "space"]:
Moving(action) Moving(action)
elif action in ["1", "2"]: # elif action in ["1", "2"]:
if action == "1": # if action == "1":
CellDesignation(field.state_of_cell_array, "red") # CellDesignation(field.state_of_cell_array, "red")
else: # else:
CellDesignation(field.state_of_cell_array, "green") # CellDesignation(field.state_of_cell_array, "green")
# Modified by Artem to search in the status area # Modified by Artem to search in the status area
@ -199,6 +204,42 @@ def create_action_list(states, index):
create_action_list(states, states.index(state_parent)) create_action_list(states, states.index(state_parent))
def MakeDecision():
if player.current_array_x != 0 or player.current_array_y != 0:
mine = field.state_of_cell_array[player.current_array_y][player.current_array_x]
# print(field.state_of_cell_array)
# print(mine)
attributes_dict = {'known': [mine.known], 'power': [mine.power], 'new': [mine.new], 'location': [mine.location],
'stable': [mine.stable], 'chain_reaction': [mine.chain_reaction]}
attributes = f'{mine.known}; {mine.power}; {mine.new}; {mine.location}; {mine.stable}; {mine.chain_reaction}'
global label_text
label_text += attributes + '\n'
global label
label.config(text=label_text)
field.win.update()
data_frame = pd.DataFrame.from_dict(attributes_dict)
predict = decision_tree.classifier.predict(data_frame)
return predict
def MarkMine(prediction):
if prediction == 0:
DrawFlag(field.flag_green_img)
if prediction == 1:
DrawFlag(field.flag_yellow_img)
if prediction == 2:
DrawFlag(field.flag_red_img)
if prediction == 3:
DrawFlag(field.flag_bleu_img)
field.win.update()
def MouseClickEvent(track): def MouseClickEvent(track):
global fringe global fringe
global explored global explored
@ -230,7 +271,6 @@ def MouseClickEvent(track):
explored.clear() explored.clear()
action_list.clear() action_list.clear()
fringe = nd.graph_search_A(fringe, explored, node.state, end_position) fringe = nd.graph_search_A(fringe, explored, node.state, end_position)
# fringe = nd.graph_search(fringe, explored, node.state, end_position)
states = [] states = []
goal_all = [] goal_all = []
@ -249,80 +289,39 @@ def MouseClickEvent(track):
create_action_list(states, -1) create_action_list(states, -1)
# for i in range(0, len(fringe)):
# print('Node{} = State: {} {}, Parent: {} {} {}, Action: {}'.format(i + 1, fringe[i].state.coord, fringe[i].state.direction, fringe[i].parent[0], fringe[i].parent[1], fringe[i].parent[2], fringe[i].action))
# print(action_list)
# Start moving # Start moving
AutoMove() AutoMove()
DrawFlag()
# Decision by tree
prediction = MakeDecision()
# Draw the right flag
MarkMine(prediction)
time.sleep(SLEEP_AFTER_CHECK_MINE) time.sleep(SLEEP_AFTER_CHECK_MINE)
# start_position = field.small_field_canvas.coords(player.image_canvas_id) # Check in which locations is mine
# end_position = [] def CheckLocation(x, y):
# # Add x + y like strings that create xy number
# # print("Pierwsza pozycja: {} {}".format(start_position[0], start_position[1])) temp_x = str(x)
# temp_y = str(y)
# for i in range(0, len(field.canvas_small_images)): position_str = temp_x + temp_y
# img_coords = field.small_field_canvas.coords(field.canvas_small_images[i]) position = int(position_str)
# if (img_coords[0] <= event.x and event.x <= img_coords[0] + IMAGE_SIZE) and (img_coords[1] <= event.y and event.y <= img_coords[1] + IMAGE_SIZE):
# end_position = img_coords color_number = -1
# print("Color cost: ", field.cell_expense[i]) if field.cell_expense[position] == standard_cell_cost:
# color_number = 0
# # if len(end_position) == 2: elif field.cell_expense[position] == sand_cell_cost:
# # print("Koncowa pozycja: {} {}".format(end_position[0], end_position[1])) color_number = 1
# elif field.cell_expense[position] == water_cell_cost:
# node = nd.Node() color_number = 2
# if len(fringe) == 0: elif field.cell_expense[position] == swamp_cell_cost:
# node.state.coord = start_position color_number = 3
# node.state.direction = "east"
# else: return color_number
# states = []
# for k in range(0, len(fringe)):
# new_state = fringe[k].state.coord
# states.append(new_state)
# start_node = fringe[-1]
#
# node.state.coord = start_node.state.coord
# node.state.direction = start_node.state.direction
#
# fringe.clear()
# explored.clear()
# action_list.clear()
# fringe = nd.graph_search_A(fringe, explored, node.state, end_position)
# # fringe = nd.graph_search(fringe, explored, node.state, end_position)
#
# states = []
# goal_all = []
# for i in range(0, len(fringe)):
# new_state = [fringe[i].state.coord, fringe[i].state.direction]
# states.append(new_state)
# if end_position[0] == fringe[i].state.coord[0] and end_position[1] == fringe[i].state.coord[1]:
# goal_all.append(fringe[i])
#
# elem_min = goal_all[0]
# for i in range(1, len(goal_all)):
# if elem_min.priority > goal_all[i].priority:
# elem_min = goal_all[i]
# index = fringe.index(elem_min)
# fringe = fringe[:index + 1]
#
# create_action_list(states, -1)
#
# # for i in range(0, len(fringe)):
# # print('Node{} = State: {} {}, Parent: {} {} {}, Action: {}'.format(i + 1, fringe[i].state.coord, fringe[i].state.direction, fringe[i].parent[0], fringe[i].parent[1], fringe[i].parent[2], fringe[i].action))
#
# print(action_list)
#
#
#
# # Start moving
# AutoMove()
# Add mines on the field and to arrays
def PutMines(mines_array): def PutMines(mines_array):
counter = 0 counter = 0
@ -339,9 +338,18 @@ def PutMines(mines_array):
if x == 0 and y == 0: if x == 0 and y == 0:
continue continue
else: else:
mine = Mine(x, y) known = random.randint(0, 1)
power = random.randint(1, 10)
new = random.randint(0, 1)
location = CheckLocation(x, y)
stable = random.randint(0, 1)
mine = Mine(x, y, known, power, new, location, stable)
mines_array.append(mine) mines_array.append(mine)
# Add mine to array at the right position
field.state_of_cell_array[x][y] = mine
field.field_state_array[x][y] = True field.field_state_array[x][y] = True
counter += 1 counter += 1
@ -391,8 +399,8 @@ def MinesInArrays(mines_array, directory, imgs_array, bool_mines_coord):
field.mines_coord.append([mines_array[i].array_x, mines_array[i].array_y]) field.mines_coord.append([mines_array[i].array_x, mines_array[i].array_y])
def DrawFlag(): def DrawFlag(image):
field.small_field_canvas.create_image(player.current_x, player.current_y, anchor=NW, image=field.flag_img) field.small_field_canvas.create_image(player.current_x, player.current_y, anchor=NW, image=image)
# def IsItMine(): # def IsItMine():
@ -439,15 +447,14 @@ def DrawRectangle():
elif field.cell_expense[i] == swamp_cell_cost: elif field.cell_expense[i] == swamp_cell_cost:
color = "green4" color = "green4"
if color != "None": if color != "None":
field.small_field_canvas.create_rectangle(x, y, x + IMAGE_SIZE + 2, y + IMAGE_SIZE + 2, width=2, outline=color) field.small_field_canvas.create_rectangle(x, y, x + IMAGE_SIZE + 2, y + IMAGE_SIZE + 2, width=2,
outline=color)
x += player.step x += player.step
if x + IMAGE_SIZE + 2 > field.width: if x + IMAGE_SIZE + 2 > field.width:
x = 4 x = 4
y += player.step y += player.step
def AddCostCellsToArray(amount, cost): def AddCostCellsToArray(amount, cost):
counter = 0 counter = 0
while counter < amount: while counter < amount:
@ -461,7 +468,9 @@ def CostingOfCells():
AddCostCellsToArray(amount_of_sand_cells, sand_cell_cost) AddCostCellsToArray(amount_of_sand_cells, sand_cell_cost)
AddCostCellsToArray(amount_of_water_cells, water_cell_cost) AddCostCellsToArray(amount_of_water_cells, water_cell_cost)
AddCostCellsToArray(amount_of_swamp_cells, swamp_cell_cost) AddCostCellsToArray(amount_of_swamp_cells, swamp_cell_cost)
AddCostCellsToArray(field.rows * field.columns - (amount_of_sand_cells + amount_of_water_cells + amount_of_swamp_cells), standard_cell_cost) AddCostCellsToArray(
field.rows * field.columns - (amount_of_sand_cells + amount_of_water_cells + amount_of_swamp_cells),
standard_cell_cost)
# Draw rectangles # Draw rectangles
DrawRectangle() DrawRectangle()
@ -469,8 +478,9 @@ def CostingOfCells():
def click_button(): def click_button():
btn.destroy() btn.destroy()
label = Label(field.win, text="Wait...\nAI conquers the world...", fg='black', font="20") global label
label.place(x=50, y=570) label = Label(field.win, text="Wait...\nAI conquers the world...", fg='black', font="20", bg='gray')
label.place(x=10, y=560)
field.win.update() field.win.update()
track = tr.genetic_algorithm(travel.points_map) track = tr.genetic_algorithm(travel.points_map)
@ -480,6 +490,41 @@ def click_button():
MouseClickEvent(track) MouseClickEvent(track)
# Check if there mines near and if, mark it
def CheckForMinesNear(x, y):
if x > 0:
if field.state_of_cell_array[x - 1][y] != "None":
# Mark by chain reaction current mine
field.state_of_cell_array[x][y].chain_reaction = 1
# Mark by chain reaction mine that near
field.state_of_cell_array[x - 1][y].chain_reaction = 1
if x < 9:
if field.state_of_cell_array[x + 1][y] != "None":
# Mark by chain reaction current mine
field.state_of_cell_array[x][y].chain_reaction = 1
# Mark by chain reaction mine that near
field.state_of_cell_array[x + 1][y].chain_reaction = 1
if y > 0:
if field.state_of_cell_array[x][y - 1] != "None":
# Mark by chain reaction current mine
field.state_of_cell_array[x][y].chain_reaction = 1
# Mark by chain reaction mine that near
field.state_of_cell_array[x][y - 1].chain_reaction = 1
if y < 9:
if field.state_of_cell_array[x][y + 1] != "None":
# Mark by chain reaction current mine
field.state_of_cell_array[x][y].chain_reaction = 1
# Mark by chain reaction mine that near
field.state_of_cell_array[x][y + 1].chain_reaction = 1
def CheckForChainReaction():
for x in range(field.columns):
for y in range(field.rows):
if field.state_of_cell_array[x][y] != "None":
CheckForMinesNear(x, y)
def main(): def main():
# Creating the main window of an application # Creating the main window of an application
win_size = f'{WINDOW_X}x{WINDOW_Y}' win_size = f'{WINDOW_X}x{WINDOW_Y}'
@ -487,6 +532,7 @@ def main():
field.win.configure(bg='gray') field.win.configure(bg='gray')
field.win.geometry(win_size) field.win.geometry(win_size)
print(f'Amount of mines: {AMOUNT_OF_MINES}') print(f'Amount of mines: {AMOUNT_OF_MINES}')
global btn global btn
btn = Button(field.win, btn = Button(field.win,
text="Search for mines", # текст кнопки text="Search for mines", # текст кнопки
@ -498,13 +544,19 @@ def main():
command=click_button command=click_button
) )
btn.place(x=50, y=570) btn.place(x=10, y=560)
# Create array with mines objects # Create array with mines objects
mines_array = [] mines_array = []
CostingOfCells()
# Put mines on coordinates # Put mines on coordinates
PutMines(mines_array) PutMines(mines_array)
CheckForChainReaction()
# Add images of mines in arrays
MinesInArrays(mines_array, "../../files/small_mines_images", field.small_image_array, True) MinesInArrays(mines_array, "../../files/small_mines_images", field.small_image_array, True)
MinesInArrays(mines_array, "../../files/large_mines_images", field.large_image_array, False) MinesInArrays(mines_array, "../../files/large_mines_images", field.large_image_array, False)
@ -514,8 +566,6 @@ def main():
large_directory = "../../files/large_images" large_directory = "../../files/large_images"
ImagesInArray(large_directory, field.large_image_array) ImagesInArray(large_directory, field.large_image_array)
CostingOfCells()
# Add arrow image to Player class # Add arrow image to Player class
images = [] images = []
for file in os.listdir("../../files/arrow"): for file in os.listdir("../../files/arrow"):
@ -540,6 +590,7 @@ def main():
# Binding keyboard press to function # Binding keyboard press to function
# field.win.bind("<Key>", Action) # field.win.bind("<Key>", Action)
# field.small_field_canvas.bind("<Button-1>", MouseClickEvent) # field.small_field_canvas.bind("<Button-1>", MouseClickEvent)
# Starting mainloop for window # Starting mainloop for window
field.win.mainloop() field.win.mainloop()

Binary file not shown.

View File

@ -0,0 +1,641 @@
known,power,new,location,stable,chain_reaction,decision
1,1,1,0,1,1,1
1,1,1,0,1,0,2
1,1,1,0,0,1,1
1,1,1,0,0,0,2
1,1,0,0,1,1,1
1,1,0,0,1,0,2
1,1,0,0,0,1,1
1,1,0,0,0,0,2
1,1,1,1,1,1,1
1,1,1,1,1,0,2
1,1,1,1,0,1,1
1,1,1,1,0,0,2
1,1,0,1,1,1,1
1,1,0,1,1,0,2
1,1,0,1,0,1,1
1,1,0,1,0,0,2
1,1,1,2,1,1,1
1,1,1,2,1,0,2
1,1,1,2,0,1,1
1,1,1,2,0,0,2
1,1,0,2,1,1,1
1,1,0,2,1,0,2
1,1,0,2,0,1,1
1,1,0,2,0,0,2
1,1,1,3,1,1,1
1,1,1,3,1,0,2
1,1,1,3,0,1,1
1,1,1,3,0,0,2
1,1,0,3,1,1,1
1,1,0,3,1,0,2
1,1,0,3,0,1,1
1,1,0,3,0,0,2
1,2,1,0,1,1,1
1,2,1,0,1,0,2
1,2,1,0,0,1,1
1,2,1,0,0,0,2
1,2,0,0,1,1,1
1,2,0,0,1,0,2
1,2,0,0,0,1,1
1,2,0,0,0,0,2
1,2,1,1,1,1,1
1,2,1,1,1,0,2
1,2,1,1,0,1,1
1,2,1,1,0,0,2
1,2,0,1,1,1,1
1,2,0,1,1,0,2
1,2,0,1,0,1,1
1,2,0,1,0,0,2
1,2,1,2,1,1,1
1,2,1,2,1,0,2
1,2,1,2,0,1,1
1,2,1,2,0,0,2
1,2,0,2,1,1,1
1,2,0,2,1,0,2
1,2,0,2,0,1,1
1,2,0,2,0,0,2
1,2,1,3,1,1,1
1,2,1,3,1,0,2
1,2,1,3,0,1,1
1,2,1,3,0,0,2
1,2,0,3,1,1,1
1,2,0,3,1,0,2
1,2,0,3,0,1,1
1,2,0,3,0,0,2
1,3,1,0,1,1,1
1,3,1,0,1,0,2
1,3,1,0,0,1,1
1,3,1,0,0,0,2
1,3,0,0,1,1,1
1,3,0,0,1,0,2
1,3,0,0,0,1,1
1,3,0,0,0,0,2
1,3,1,1,1,1,1
1,3,1,1,1,0,2
1,3,1,1,0,1,1
1,3,1,1,0,0,2
1,3,0,1,1,1,1
1,3,0,1,1,0,2
1,3,0,1,0,1,1
1,3,0,1,0,0,2
1,3,1,2,1,1,1
1,3,1,2,1,0,2
1,3,1,2,0,1,1
1,3,1,2,0,0,2
1,3,0,2,1,1,1
1,3,0,2,1,0,2
1,3,0,2,0,1,1
1,3,0,2,0,0,2
1,3,1,3,1,1,1
1,3,1,3,1,0,2
1,3,1,3,0,1,1
1,3,1,3,0,0,2
1,3,0,3,1,1,1
1,3,0,3,1,0,2
1,3,0,3,0,1,1
1,3,0,3,0,0,2
1,4,1,0,1,1,0
1,4,1,0,1,0,0
1,4,1,0,0,1,1
1,4,1,0,0,0,2
1,4,0,0,1,1,1
1,4,0,0,1,0,2
1,4,0,0,0,1,1
1,4,0,0,0,0,2
1,4,1,1,1,1,3
1,4,1,1,1,0,3
1,4,1,1,0,1,1
1,4,1,1,0,0,2
1,4,0,1,1,1,1
1,4,0,1,1,0,2
1,4,0,1,0,1,1
1,4,0,1,0,0,2
1,4,1,2,1,1,3
1,4,1,2,1,0,3
1,4,1,2,0,1,1
1,4,1,2,0,0,2
1,4,0,2,1,1,1
1,4,0,2,1,0,2
1,4,0,2,0,1,1
1,4,0,2,0,0,2
1,4,1,3,1,1,1
1,4,1,3,1,0,2
1,4,1,3,0,1,1
1,4,1,3,0,0,2
1,4,0,3,1,1,1
1,4,0,3,1,0,2
1,4,0,3,0,1,1
1,4,0,3,0,0,2
1,5,1,0,1,1,0
1,5,1,0,1,0,0
1,5,1,0,0,1,1
1,5,1,0,0,0,2
1,5,0,0,1,1,1
1,5,0,0,1,0,2
1,5,0,0,0,1,1
1,5,0,0,0,0,2
1,5,1,1,1,1,3
1,5,1,1,1,0,3
1,5,1,1,0,1,1
1,5,1,1,0,0,2
1,5,0,1,1,1,1
1,5,0,1,1,0,2
1,5,0,1,0,1,1
1,5,0,1,0,0,2
1,5,1,2,1,1,3
1,5,1,2,1,0,3
1,5,1,2,0,1,1
1,5,1,2,0,0,2
1,5,0,2,1,1,1
1,5,0,2,1,0,2
1,5,0,2,0,1,1
1,5,0,2,0,0,2
1,5,1,3,1,1,1
1,5,1,3,1,0,2
1,5,1,3,0,1,1
1,5,1,3,0,0,2
1,5,0,3,1,1,1
1,5,0,3,1,0,2
1,5,0,3,0,1,1
1,5,0,3,0,0,2
1,6,1,0,1,1,0
1,6,1,0,1,0,0
1,6,1,0,0,1,1
1,6,1,0,0,0,2
1,6,0,0,1,1,1
1,6,0,0,1,0,2
1,6,0,0,0,1,1
1,6,0,0,0,0,2
1,6,1,1,1,1,3
1,6,1,1,1,0,3
1,6,1,1,0,1,1
1,6,1,1,0,0,2
1,6,0,1,1,1,1
1,6,0,1,1,0,2
1,6,0,1,0,1,1
1,6,0,1,0,0,2
1,6,1,2,1,1,3
1,6,1,2,1,0,3
1,6,1,2,0,1,1
1,6,1,2,0,0,2
1,6,0,2,1,1,1
1,6,0,2,1,0,2
1,6,0,2,0,1,1
1,6,0,2,0,0,2
1,6,1,3,1,1,1
1,6,1,3,1,0,2
1,6,1,3,0,1,1
1,6,1,3,0,0,2
1,6,0,3,1,1,1
1,6,0,3,1,0,2
1,6,0,3,0,1,1
1,6,0,3,0,0,2
1,7,1,0,1,1,0
1,7,1,0,1,0,0
1,7,1,0,0,1,1
1,7,1,0,0,0,2
1,7,0,0,1,1,1
1,7,0,0,1,0,2
1,7,0,0,0,1,1
1,7,0,0,0,0,2
1,7,1,1,1,1,3
1,7,1,1,1,0,3
1,7,1,1,0,1,1
1,7,1,1,0,0,2
1,7,0,1,1,1,1
1,7,0,1,1,0,2
1,7,0,1,0,1,1
1,7,0,1,0,0,2
1,7,1,2,1,1,3
1,7,1,2,1,0,3
1,7,1,2,0,1,1
1,7,1,2,0,0,2
1,7,0,2,1,1,1
1,7,0,2,1,0,2
1,7,0,2,0,1,1
1,7,0,2,0,0,2
1,7,1,3,1,1,1
1,7,1,3,1,0,2
1,7,1,3,0,1,1
1,7,1,3,0,0,2
1,7,0,3,1,1,1
1,7,0,3,1,0,2
1,7,0,3,0,1,1
1,7,0,3,0,0,2
1,8,1,0,1,1,0
1,8,1,0,1,0,0
1,8,1,0,0,1,0
1,8,1,0,0,0,0
1,8,0,0,1,1,0
1,8,0,0,1,0,0
1,8,0,0,0,1,0
1,8,0,0,0,0,0
1,8,1,1,1,1,0
1,8,1,1,1,0,0
1,8,1,1,0,1,0
1,8,1,1,0,0,0
1,8,0,1,1,1,0
1,8,0,1,1,0,0
1,8,0,1,0,1,0
1,8,0,1,0,0,0
1,8,1,2,1,1,0
1,8,1,2,1,0,0
1,8,1,2,0,1,0
1,8,1,2,0,0,0
1,8,0,2,1,1,0
1,8,0,2,1,0,0
1,8,0,2,0,1,0
1,8,0,2,0,0,0
1,8,1,3,1,1,0
1,8,1,3,1,0,0
1,8,1,3,0,1,0
1,8,1,3,0,0,0
1,8,0,3,1,1,0
1,8,0,3,1,0,0
1,8,0,3,0,1,0
1,8,0,3,0,0,0
1,9,1,0,1,1,0
1,9,1,0,1,0,0
1,9,1,0,0,1,0
1,9,1,0,0,0,0
1,9,0,0,1,1,0
1,9,0,0,1,0,0
1,9,0,0,0,1,0
1,9,0,0,0,0,0
1,9,1,1,1,1,0
1,9,1,1,1,0,0
1,9,1,1,0,1,0
1,9,1,1,0,0,0
1,9,0,1,1,1,0
1,9,0,1,1,0,0
1,9,0,1,0,1,0
1,9,0,1,0,0,0
1,9,1,2,1,1,0
1,9,1,2,1,0,0
1,9,1,2,0,1,0
1,9,1,2,0,0,0
1,9,0,2,1,1,0
1,9,0,2,1,0,0
1,9,0,2,0,1,0
1,9,0,2,0,0,0
1,9,1,3,1,1,0
1,9,1,3,1,0,0
1,9,1,3,0,1,0
1,9,1,3,0,0,0
1,9,0,3,1,1,0
1,9,0,3,1,0,0
1,9,0,3,0,1,0
1,9,0,3,0,0,0
1,10,1,0,1,1,0
1,10,1,0,1,0,0
1,10,1,0,0,1,0
1,10,1,0,0,0,0
1,10,0,0,1,1,0
1,10,0,0,1,0,0
1,10,0,0,0,1,0
1,10,0,0,0,0,0
1,10,1,1,1,1,0
1,10,1,1,1,0,0
1,10,1,1,0,1,0
1,10,1,1,0,0,0
1,10,0,1,1,1,0
1,10,0,1,1,0,0
1,10,0,1,0,1,0
1,10,0,1,0,0,0
1,10,1,2,1,1,0
1,10,1,2,1,0,0
1,10,1,2,0,1,0
1,10,1,2,0,0,0
1,10,0,2,1,1,0
1,10,0,2,1,0,0
1,10,0,2,0,1,0
1,10,0,2,0,0,0
1,10,1,3,1,1,0
1,10,1,3,1,0,0
1,10,1,3,0,1,0
1,10,1,3,0,0,0
1,10,0,3,1,1,0
1,10,0,3,1,0,0
1,10,0,3,0,1,0
1,10,0,3,0,0,0
0,1,1,0,1,1,1
0,1,1,0,1,0,1
0,1,1,0,0,1,1
0,1,1,0,0,0,1
0,1,0,0,1,1,1
0,1,0,0,1,0,1
0,1,0,0,0,1,1
0,1,0,0,0,0,1
0,1,1,1,1,1,1
0,1,1,1,1,0,1
0,1,1,1,0,1,1
0,1,1,1,0,0,1
0,1,0,1,1,1,1
0,1,0,1,1,0,1
0,1,0,1,0,1,1
0,1,0,1,0,0,1
0,1,1,2,1,1,1
0,1,1,2,1,0,1
0,1,1,2,0,1,1
0,1,1,2,0,0,1
0,1,0,2,1,1,1
0,1,0,2,1,0,1
0,1,0,2,0,1,1
0,1,0,2,0,0,1
0,1,1,3,1,1,1
0,1,1,3,1,0,1
0,1,1,3,0,1,1
0,1,1,3,0,0,1
0,1,0,3,1,1,1
0,1,0,3,1,0,1
0,1,0,3,0,1,1
0,1,0,3,0,0,1
0,2,1,0,1,1,1
0,2,1,0,1,0,1
0,2,1,0,0,1,1
0,2,1,0,0,0,1
0,2,0,0,1,1,1
0,2,0,0,1,0,1
0,2,0,0,0,1,1
0,2,0,0,0,0,1
0,2,1,1,1,1,1
0,2,1,1,1,0,1
0,2,1,1,0,1,1
0,2,1,1,0,0,1
0,2,0,1,1,1,1
0,2,0,1,1,0,1
0,2,0,1,0,1,1
0,2,0,1,0,0,1
0,2,1,2,1,1,1
0,2,1,2,1,0,1
0,2,1,2,0,1,1
0,2,1,2,0,0,1
0,2,0,2,1,1,1
0,2,0,2,1,0,1
0,2,0,2,0,1,1
0,2,0,2,0,0,1
0,2,1,3,1,1,1
0,2,1,3,1,0,1
0,2,1,3,0,1,1
0,2,1,3,0,0,1
0,2,0,3,1,1,1
0,2,0,3,1,0,1
0,2,0,3,0,1,1
0,2,0,3,0,0,1
0,3,1,0,1,1,1
0,3,1,0,1,0,1
0,3,1,0,0,1,1
0,3,1,0,0,0,1
0,3,0,0,1,1,1
0,3,0,0,1,0,1
0,3,0,0,0,1,1
0,3,0,0,0,0,1
0,3,1,1,1,1,1
0,3,1,1,1,0,1
0,3,1,1,0,1,1
0,3,1,1,0,0,1
0,3,0,1,1,1,1
0,3,0,1,1,0,1
0,3,0,1,0,1,1
0,3,0,1,0,0,1
0,3,1,2,1,1,1
0,3,1,2,1,0,1
0,3,1,2,0,1,1
0,3,1,2,0,0,1
0,3,0,2,1,1,1
0,3,0,2,1,0,1
0,3,0,2,0,1,1
0,3,0,2,0,0,1
0,3,1,3,1,1,1
0,3,1,3,1,0,1
0,3,1,3,0,1,1
0,3,1,3,0,0,1
0,3,0,3,1,1,1
0,3,0,3,1,0,1
0,3,0,3,0,1,1
0,3,0,3,0,0,1
0,4,1,0,1,1,1
0,4,1,0,1,0,1
0,4,1,0,0,1,1
0,4,1,0,0,0,1
0,4,0,0,1,1,1
0,4,0,0,1,0,1
0,4,0,0,0,1,1
0,4,0,0,0,0,1
0,4,1,1,1,1,1
0,4,1,1,1,0,1
0,4,1,1,0,1,1
0,4,1,1,0,0,1
0,4,0,1,1,1,1
0,4,0,1,1,0,1
0,4,0,1,0,1,1
0,4,0,1,0,0,1
0,4,1,2,1,1,1
0,4,1,2,1,0,1
0,4,1,2,0,1,1
0,4,1,2,0,0,1
0,4,0,2,1,1,1
0,4,0,2,1,0,1
0,4,0,2,0,1,1
0,4,0,2,0,0,1
0,4,1,3,1,1,1
0,4,1,3,1,0,1
0,4,1,3,0,1,1
0,4,1,3,0,0,1
0,4,0,3,1,1,1
0,4,0,3,1,0,1
0,4,0,3,0,1,1
0,4,0,3,0,0,1
0,5,1,0,1,1,1
0,5,1,0,1,0,1
0,5,1,0,0,1,1
0,5,1,0,0,0,1
0,5,0,0,1,1,1
0,5,0,0,1,0,1
0,5,0,0,0,1,1
0,5,0,0,0,0,1
0,5,1,1,1,1,1
0,5,1,1,1,0,1
0,5,1,1,0,1,1
0,5,1,1,0,0,1
0,5,0,1,1,1,1
0,5,0,1,1,0,1
0,5,0,1,0,1,1
0,5,0,1,0,0,1
0,5,1,2,1,1,1
0,5,1,2,1,0,1
0,5,1,2,0,1,1
0,5,1,2,0,0,1
0,5,0,2,1,1,1
0,5,0,2,1,0,1
0,5,0,2,0,1,1
0,5,0,2,0,0,1
0,5,1,3,1,1,1
0,5,1,3,1,0,1
0,5,1,3,0,1,1
0,5,1,3,0,0,1
0,5,0,3,1,1,1
0,5,0,3,1,0,1
0,5,0,3,0,1,1
0,5,0,3,0,0,1
0,6,1,0,1,1,1
0,6,1,0,1,0,1
0,6,1,0,0,1,1
0,6,1,0,0,0,1
0,6,0,0,1,1,1
0,6,0,0,1,0,1
0,6,0,0,0,1,1
0,6,0,0,0,0,1
0,6,1,1,1,1,1
0,6,1,1,1,0,1
0,6,1,1,0,1,1
0,6,1,1,0,0,1
0,6,0,1,1,1,1
0,6,0,1,1,0,1
0,6,0,1,0,1,1
0,6,0,1,0,0,1
0,6,1,2,1,1,1
0,6,1,2,1,0,1
0,6,1,2,0,1,1
0,6,1,2,0,0,1
0,6,0,2,1,1,1
0,6,0,2,1,0,1
0,6,0,2,0,1,1
0,6,0,2,0,0,1
0,6,1,3,1,1,1
0,6,1,3,1,0,1
0,6,1,3,0,1,1
0,6,1,3,0,0,1
0,6,0,3,1,1,1
0,6,0,3,1,0,1
0,6,0,3,0,1,1
0,6,0,3,0,0,1
0,7,1,0,1,1,1
0,7,1,0,1,0,1
0,7,1,0,0,1,1
0,7,1,0,0,0,1
0,7,0,0,1,1,1
0,7,0,0,1,0,1
0,7,0,0,0,1,1
0,7,0,0,0,0,1
0,7,1,1,1,1,1
0,7,1,1,1,0,1
0,7,1,1,0,1,1
0,7,1,1,0,0,1
0,7,0,1,1,1,1
0,7,0,1,1,0,1
0,7,0,1,0,1,1
0,7,0,1,0,0,1
0,7,1,2,1,1,1
0,7,1,2,1,0,1
0,7,1,2,0,1,1
0,7,1,2,0,0,1
0,7,0,2,1,1,1
0,7,0,2,1,0,1
0,7,0,2,0,1,1
0,7,0,2,0,0,1
0,7,1,3,1,1,1
0,7,1,3,1,0,1
0,7,1,3,0,1,1
0,7,1,3,0,0,1
0,7,0,3,1,1,1
0,7,0,3,1,0,1
0,7,0,3,0,1,1
0,7,0,3,0,0,1
0,8,1,0,1,1,1
0,8,1,0,1,0,1
0,8,1,0,0,1,1
0,8,1,0,0,0,1
0,8,0,0,1,1,1
0,8,0,0,1,0,1
0,8,0,0,0,1,1
0,8,0,0,0,0,1
0,8,1,1,1,1,1
0,8,1,1,1,0,1
0,8,1,1,0,1,1
0,8,1,1,0,0,1
0,8,0,1,1,1,1
0,8,0,1,1,0,1
0,8,0,1,0,1,1
0,8,0,1,0,0,1
0,8,1,2,1,1,1
0,8,1,2,1,0,1
0,8,1,2,0,1,1
0,8,1,2,0,0,1
0,8,0,2,1,1,1
0,8,0,2,1,0,1
0,8,0,2,0,1,1
0,8,0,2,0,0,1
0,8,1,3,1,1,1
0,8,1,3,1,0,1
0,8,1,3,0,1,1
0,8,1,3,0,0,1
0,8,0,3,1,1,1
0,8,0,3,1,0,1
0,8,0,3,0,1,1
0,8,0,3,0,0,1
0,9,1,0,1,1,1
0,9,1,0,1,0,1
0,9,1,0,0,1,1
0,9,1,0,0,0,1
0,9,0,0,1,1,1
0,9,0,0,1,0,1
0,9,0,0,0,1,1
0,9,0,0,0,0,1
0,9,1,1,1,1,1
0,9,1,1,1,0,1
0,9,1,1,0,1,1
0,9,1,1,0,0,1
0,9,0,1,1,1,1
0,9,0,1,1,0,1
0,9,0,1,0,1,1
0,9,0,1,0,0,1
0,9,1,2,1,1,1
0,9,1,2,1,0,1
0,9,1,2,0,1,1
0,9,1,2,0,0,1
0,9,0,2,1,1,1
0,9,0,2,1,0,1
0,9,0,2,0,1,1
0,9,0,2,0,0,1
0,9,1,3,1,1,1
0,9,1,3,1,0,1
0,9,1,3,0,1,1
0,9,1,3,0,0,1
0,9,0,3,1,1,1
0,9,0,3,1,0,1
0,9,0,3,0,1,1
0,9,0,3,0,0,1
0,10,1,0,1,1,1
0,10,1,0,1,0,1
0,10,1,0,0,1,1
0,10,1,0,0,0,1
0,10,0,0,1,1,1
0,10,0,0,1,0,1
0,10,0,0,0,1,1
0,10,0,0,0,0,1
0,10,1,1,1,1,1
0,10,1,1,1,0,1
0,10,1,1,0,1,1
0,10,1,1,0,0,1
0,10,0,1,1,1,1
0,10,0,1,1,0,1
0,10,0,1,0,1,1
0,10,0,1,0,0,1
0,10,1,2,1,1,1
0,10,1,2,1,0,1
0,10,1,2,0,1,1
0,10,1,2,0,0,1
0,10,0,2,1,1,1
0,10,0,2,1,0,1
0,10,0,2,0,1,1
0,10,0,2,0,0,1
0,10,1,3,1,1,1
0,10,1,3,1,0,1
0,10,1,3,0,1,1
0,10,1,3,0,0,1
0,10,0,3,1,1,1
0,10,0,3,1,0,1
0,10,0,3,0,1,1
0,10,0,3,0,0,1
1 known power new location stable chain_reaction decision
2 1 1 1 0 1 1 1
3 1 1 1 0 1 0 2
4 1 1 1 0 0 1 1
5 1 1 1 0 0 0 2
6 1 1 0 0 1 1 1
7 1 1 0 0 1 0 2
8 1 1 0 0 0 1 1
9 1 1 0 0 0 0 2
10 1 1 1 1 1 1 1
11 1 1 1 1 1 0 2
12 1 1 1 1 0 1 1
13 1 1 1 1 0 0 2
14 1 1 0 1 1 1 1
15 1 1 0 1 1 0 2
16 1 1 0 1 0 1 1
17 1 1 0 1 0 0 2
18 1 1 1 2 1 1 1
19 1 1 1 2 1 0 2
20 1 1 1 2 0 1 1
21 1 1 1 2 0 0 2
22 1 1 0 2 1 1 1
23 1 1 0 2 1 0 2
24 1 1 0 2 0 1 1
25 1 1 0 2 0 0 2
26 1 1 1 3 1 1 1
27 1 1 1 3 1 0 2
28 1 1 1 3 0 1 1
29 1 1 1 3 0 0 2
30 1 1 0 3 1 1 1
31 1 1 0 3 1 0 2
32 1 1 0 3 0 1 1
33 1 1 0 3 0 0 2
34 1 2 1 0 1 1 1
35 1 2 1 0 1 0 2
36 1 2 1 0 0 1 1
37 1 2 1 0 0 0 2
38 1 2 0 0 1 1 1
39 1 2 0 0 1 0 2
40 1 2 0 0 0 1 1
41 1 2 0 0 0 0 2
42 1 2 1 1 1 1 1
43 1 2 1 1 1 0 2
44 1 2 1 1 0 1 1
45 1 2 1 1 0 0 2
46 1 2 0 1 1 1 1
47 1 2 0 1 1 0 2
48 1 2 0 1 0 1 1
49 1 2 0 1 0 0 2
50 1 2 1 2 1 1 1
51 1 2 1 2 1 0 2
52 1 2 1 2 0 1 1
53 1 2 1 2 0 0 2
54 1 2 0 2 1 1 1
55 1 2 0 2 1 0 2
56 1 2 0 2 0 1 1
57 1 2 0 2 0 0 2
58 1 2 1 3 1 1 1
59 1 2 1 3 1 0 2
60 1 2 1 3 0 1 1
61 1 2 1 3 0 0 2
62 1 2 0 3 1 1 1
63 1 2 0 3 1 0 2
64 1 2 0 3 0 1 1
65 1 2 0 3 0 0 2
66 1 3 1 0 1 1 1
67 1 3 1 0 1 0 2
68 1 3 1 0 0 1 1
69 1 3 1 0 0 0 2
70 1 3 0 0 1 1 1
71 1 3 0 0 1 0 2
72 1 3 0 0 0 1 1
73 1 3 0 0 0 0 2
74 1 3 1 1 1 1 1
75 1 3 1 1 1 0 2
76 1 3 1 1 0 1 1
77 1 3 1 1 0 0 2
78 1 3 0 1 1 1 1
79 1 3 0 1 1 0 2
80 1 3 0 1 0 1 1
81 1 3 0 1 0 0 2
82 1 3 1 2 1 1 1
83 1 3 1 2 1 0 2
84 1 3 1 2 0 1 1
85 1 3 1 2 0 0 2
86 1 3 0 2 1 1 1
87 1 3 0 2 1 0 2
88 1 3 0 2 0 1 1
89 1 3 0 2 0 0 2
90 1 3 1 3 1 1 1
91 1 3 1 3 1 0 2
92 1 3 1 3 0 1 1
93 1 3 1 3 0 0 2
94 1 3 0 3 1 1 1
95 1 3 0 3 1 0 2
96 1 3 0 3 0 1 1
97 1 3 0 3 0 0 2
98 1 4 1 0 1 1 0
99 1 4 1 0 1 0 0
100 1 4 1 0 0 1 1
101 1 4 1 0 0 0 2
102 1 4 0 0 1 1 1
103 1 4 0 0 1 0 2
104 1 4 0 0 0 1 1
105 1 4 0 0 0 0 2
106 1 4 1 1 1 1 3
107 1 4 1 1 1 0 3
108 1 4 1 1 0 1 1
109 1 4 1 1 0 0 2
110 1 4 0 1 1 1 1
111 1 4 0 1 1 0 2
112 1 4 0 1 0 1 1
113 1 4 0 1 0 0 2
114 1 4 1 2 1 1 3
115 1 4 1 2 1 0 3
116 1 4 1 2 0 1 1
117 1 4 1 2 0 0 2
118 1 4 0 2 1 1 1
119 1 4 0 2 1 0 2
120 1 4 0 2 0 1 1
121 1 4 0 2 0 0 2
122 1 4 1 3 1 1 1
123 1 4 1 3 1 0 2
124 1 4 1 3 0 1 1
125 1 4 1 3 0 0 2
126 1 4 0 3 1 1 1
127 1 4 0 3 1 0 2
128 1 4 0 3 0 1 1
129 1 4 0 3 0 0 2
130 1 5 1 0 1 1 0
131 1 5 1 0 1 0 0
132 1 5 1 0 0 1 1
133 1 5 1 0 0 0 2
134 1 5 0 0 1 1 1
135 1 5 0 0 1 0 2
136 1 5 0 0 0 1 1
137 1 5 0 0 0 0 2
138 1 5 1 1 1 1 3
139 1 5 1 1 1 0 3
140 1 5 1 1 0 1 1
141 1 5 1 1 0 0 2
142 1 5 0 1 1 1 1
143 1 5 0 1 1 0 2
144 1 5 0 1 0 1 1
145 1 5 0 1 0 0 2
146 1 5 1 2 1 1 3
147 1 5 1 2 1 0 3
148 1 5 1 2 0 1 1
149 1 5 1 2 0 0 2
150 1 5 0 2 1 1 1
151 1 5 0 2 1 0 2
152 1 5 0 2 0 1 1
153 1 5 0 2 0 0 2
154 1 5 1 3 1 1 1
155 1 5 1 3 1 0 2
156 1 5 1 3 0 1 1
157 1 5 1 3 0 0 2
158 1 5 0 3 1 1 1
159 1 5 0 3 1 0 2
160 1 5 0 3 0 1 1
161 1 5 0 3 0 0 2
162 1 6 1 0 1 1 0
163 1 6 1 0 1 0 0
164 1 6 1 0 0 1 1
165 1 6 1 0 0 0 2
166 1 6 0 0 1 1 1
167 1 6 0 0 1 0 2
168 1 6 0 0 0 1 1
169 1 6 0 0 0 0 2
170 1 6 1 1 1 1 3
171 1 6 1 1 1 0 3
172 1 6 1 1 0 1 1
173 1 6 1 1 0 0 2
174 1 6 0 1 1 1 1
175 1 6 0 1 1 0 2
176 1 6 0 1 0 1 1
177 1 6 0 1 0 0 2
178 1 6 1 2 1 1 3
179 1 6 1 2 1 0 3
180 1 6 1 2 0 1 1
181 1 6 1 2 0 0 2
182 1 6 0 2 1 1 1
183 1 6 0 2 1 0 2
184 1 6 0 2 0 1 1
185 1 6 0 2 0 0 2
186 1 6 1 3 1 1 1
187 1 6 1 3 1 0 2
188 1 6 1 3 0 1 1
189 1 6 1 3 0 0 2
190 1 6 0 3 1 1 1
191 1 6 0 3 1 0 2
192 1 6 0 3 0 1 1
193 1 6 0 3 0 0 2
194 1 7 1 0 1 1 0
195 1 7 1 0 1 0 0
196 1 7 1 0 0 1 1
197 1 7 1 0 0 0 2
198 1 7 0 0 1 1 1
199 1 7 0 0 1 0 2
200 1 7 0 0 0 1 1
201 1 7 0 0 0 0 2
202 1 7 1 1 1 1 3
203 1 7 1 1 1 0 3
204 1 7 1 1 0 1 1
205 1 7 1 1 0 0 2
206 1 7 0 1 1 1 1
207 1 7 0 1 1 0 2
208 1 7 0 1 0 1 1
209 1 7 0 1 0 0 2
210 1 7 1 2 1 1 3
211 1 7 1 2 1 0 3
212 1 7 1 2 0 1 1
213 1 7 1 2 0 0 2
214 1 7 0 2 1 1 1
215 1 7 0 2 1 0 2
216 1 7 0 2 0 1 1
217 1 7 0 2 0 0 2
218 1 7 1 3 1 1 1
219 1 7 1 3 1 0 2
220 1 7 1 3 0 1 1
221 1 7 1 3 0 0 2
222 1 7 0 3 1 1 1
223 1 7 0 3 1 0 2
224 1 7 0 3 0 1 1
225 1 7 0 3 0 0 2
226 1 8 1 0 1 1 0
227 1 8 1 0 1 0 0
228 1 8 1 0 0 1 0
229 1 8 1 0 0 0 0
230 1 8 0 0 1 1 0
231 1 8 0 0 1 0 0
232 1 8 0 0 0 1 0
233 1 8 0 0 0 0 0
234 1 8 1 1 1 1 0
235 1 8 1 1 1 0 0
236 1 8 1 1 0 1 0
237 1 8 1 1 0 0 0
238 1 8 0 1 1 1 0
239 1 8 0 1 1 0 0
240 1 8 0 1 0 1 0
241 1 8 0 1 0 0 0
242 1 8 1 2 1 1 0
243 1 8 1 2 1 0 0
244 1 8 1 2 0 1 0
245 1 8 1 2 0 0 0
246 1 8 0 2 1 1 0
247 1 8 0 2 1 0 0
248 1 8 0 2 0 1 0
249 1 8 0 2 0 0 0
250 1 8 1 3 1 1 0
251 1 8 1 3 1 0 0
252 1 8 1 3 0 1 0
253 1 8 1 3 0 0 0
254 1 8 0 3 1 1 0
255 1 8 0 3 1 0 0
256 1 8 0 3 0 1 0
257 1 8 0 3 0 0 0
258 1 9 1 0 1 1 0
259 1 9 1 0 1 0 0
260 1 9 1 0 0 1 0
261 1 9 1 0 0 0 0
262 1 9 0 0 1 1 0
263 1 9 0 0 1 0 0
264 1 9 0 0 0 1 0
265 1 9 0 0 0 0 0
266 1 9 1 1 1 1 0
267 1 9 1 1 1 0 0
268 1 9 1 1 0 1 0
269 1 9 1 1 0 0 0
270 1 9 0 1 1 1 0
271 1 9 0 1 1 0 0
272 1 9 0 1 0 1 0
273 1 9 0 1 0 0 0
274 1 9 1 2 1 1 0
275 1 9 1 2 1 0 0
276 1 9 1 2 0 1 0
277 1 9 1 2 0 0 0
278 1 9 0 2 1 1 0
279 1 9 0 2 1 0 0
280 1 9 0 2 0 1 0
281 1 9 0 2 0 0 0
282 1 9 1 3 1 1 0
283 1 9 1 3 1 0 0
284 1 9 1 3 0 1 0
285 1 9 1 3 0 0 0
286 1 9 0 3 1 1 0
287 1 9 0 3 1 0 0
288 1 9 0 3 0 1 0
289 1 9 0 3 0 0 0
290 1 10 1 0 1 1 0
291 1 10 1 0 1 0 0
292 1 10 1 0 0 1 0
293 1 10 1 0 0 0 0
294 1 10 0 0 1 1 0
295 1 10 0 0 1 0 0
296 1 10 0 0 0 1 0
297 1 10 0 0 0 0 0
298 1 10 1 1 1 1 0
299 1 10 1 1 1 0 0
300 1 10 1 1 0 1 0
301 1 10 1 1 0 0 0
302 1 10 0 1 1 1 0
303 1 10 0 1 1 0 0
304 1 10 0 1 0 1 0
305 1 10 0 1 0 0 0
306 1 10 1 2 1 1 0
307 1 10 1 2 1 0 0
308 1 10 1 2 0 1 0
309 1 10 1 2 0 0 0
310 1 10 0 2 1 1 0
311 1 10 0 2 1 0 0
312 1 10 0 2 0 1 0
313 1 10 0 2 0 0 0
314 1 10 1 3 1 1 0
315 1 10 1 3 1 0 0
316 1 10 1 3 0 1 0
317 1 10 1 3 0 0 0
318 1 10 0 3 1 1 0
319 1 10 0 3 1 0 0
320 1 10 0 3 0 1 0
321 1 10 0 3 0 0 0
322 0 1 1 0 1 1 1
323 0 1 1 0 1 0 1
324 0 1 1 0 0 1 1
325 0 1 1 0 0 0 1
326 0 1 0 0 1 1 1
327 0 1 0 0 1 0 1
328 0 1 0 0 0 1 1
329 0 1 0 0 0 0 1
330 0 1 1 1 1 1 1
331 0 1 1 1 1 0 1
332 0 1 1 1 0 1 1
333 0 1 1 1 0 0 1
334 0 1 0 1 1 1 1
335 0 1 0 1 1 0 1
336 0 1 0 1 0 1 1
337 0 1 0 1 0 0 1
338 0 1 1 2 1 1 1
339 0 1 1 2 1 0 1
340 0 1 1 2 0 1 1
341 0 1 1 2 0 0 1
342 0 1 0 2 1 1 1
343 0 1 0 2 1 0 1
344 0 1 0 2 0 1 1
345 0 1 0 2 0 0 1
346 0 1 1 3 1 1 1
347 0 1 1 3 1 0 1
348 0 1 1 3 0 1 1
349 0 1 1 3 0 0 1
350 0 1 0 3 1 1 1
351 0 1 0 3 1 0 1
352 0 1 0 3 0 1 1
353 0 1 0 3 0 0 1
354 0 2 1 0 1 1 1
355 0 2 1 0 1 0 1
356 0 2 1 0 0 1 1
357 0 2 1 0 0 0 1
358 0 2 0 0 1 1 1
359 0 2 0 0 1 0 1
360 0 2 0 0 0 1 1
361 0 2 0 0 0 0 1
362 0 2 1 1 1 1 1
363 0 2 1 1 1 0 1
364 0 2 1 1 0 1 1
365 0 2 1 1 0 0 1
366 0 2 0 1 1 1 1
367 0 2 0 1 1 0 1
368 0 2 0 1 0 1 1
369 0 2 0 1 0 0 1
370 0 2 1 2 1 1 1
371 0 2 1 2 1 0 1
372 0 2 1 2 0 1 1
373 0 2 1 2 0 0 1
374 0 2 0 2 1 1 1
375 0 2 0 2 1 0 1
376 0 2 0 2 0 1 1
377 0 2 0 2 0 0 1
378 0 2 1 3 1 1 1
379 0 2 1 3 1 0 1
380 0 2 1 3 0 1 1
381 0 2 1 3 0 0 1
382 0 2 0 3 1 1 1
383 0 2 0 3 1 0 1
384 0 2 0 3 0 1 1
385 0 2 0 3 0 0 1
386 0 3 1 0 1 1 1
387 0 3 1 0 1 0 1
388 0 3 1 0 0 1 1
389 0 3 1 0 0 0 1
390 0 3 0 0 1 1 1
391 0 3 0 0 1 0 1
392 0 3 0 0 0 1 1
393 0 3 0 0 0 0 1
394 0 3 1 1 1 1 1
395 0 3 1 1 1 0 1
396 0 3 1 1 0 1 1
397 0 3 1 1 0 0 1
398 0 3 0 1 1 1 1
399 0 3 0 1 1 0 1
400 0 3 0 1 0 1 1
401 0 3 0 1 0 0 1
402 0 3 1 2 1 1 1
403 0 3 1 2 1 0 1
404 0 3 1 2 0 1 1
405 0 3 1 2 0 0 1
406 0 3 0 2 1 1 1
407 0 3 0 2 1 0 1
408 0 3 0 2 0 1 1
409 0 3 0 2 0 0 1
410 0 3 1 3 1 1 1
411 0 3 1 3 1 0 1
412 0 3 1 3 0 1 1
413 0 3 1 3 0 0 1
414 0 3 0 3 1 1 1
415 0 3 0 3 1 0 1
416 0 3 0 3 0 1 1
417 0 3 0 3 0 0 1
418 0 4 1 0 1 1 1
419 0 4 1 0 1 0 1
420 0 4 1 0 0 1 1
421 0 4 1 0 0 0 1
422 0 4 0 0 1 1 1
423 0 4 0 0 1 0 1
424 0 4 0 0 0 1 1
425 0 4 0 0 0 0 1
426 0 4 1 1 1 1 1
427 0 4 1 1 1 0 1
428 0 4 1 1 0 1 1
429 0 4 1 1 0 0 1
430 0 4 0 1 1 1 1
431 0 4 0 1 1 0 1
432 0 4 0 1 0 1 1
433 0 4 0 1 0 0 1
434 0 4 1 2 1 1 1
435 0 4 1 2 1 0 1
436 0 4 1 2 0 1 1
437 0 4 1 2 0 0 1
438 0 4 0 2 1 1 1
439 0 4 0 2 1 0 1
440 0 4 0 2 0 1 1
441 0 4 0 2 0 0 1
442 0 4 1 3 1 1 1
443 0 4 1 3 1 0 1
444 0 4 1 3 0 1 1
445 0 4 1 3 0 0 1
446 0 4 0 3 1 1 1
447 0 4 0 3 1 0 1
448 0 4 0 3 0 1 1
449 0 4 0 3 0 0 1
450 0 5 1 0 1 1 1
451 0 5 1 0 1 0 1
452 0 5 1 0 0 1 1
453 0 5 1 0 0 0 1
454 0 5 0 0 1 1 1
455 0 5 0 0 1 0 1
456 0 5 0 0 0 1 1
457 0 5 0 0 0 0 1
458 0 5 1 1 1 1 1
459 0 5 1 1 1 0 1
460 0 5 1 1 0 1 1
461 0 5 1 1 0 0 1
462 0 5 0 1 1 1 1
463 0 5 0 1 1 0 1
464 0 5 0 1 0 1 1
465 0 5 0 1 0 0 1
466 0 5 1 2 1 1 1
467 0 5 1 2 1 0 1
468 0 5 1 2 0 1 1
469 0 5 1 2 0 0 1
470 0 5 0 2 1 1 1
471 0 5 0 2 1 0 1
472 0 5 0 2 0 1 1
473 0 5 0 2 0 0 1
474 0 5 1 3 1 1 1
475 0 5 1 3 1 0 1
476 0 5 1 3 0 1 1
477 0 5 1 3 0 0 1
478 0 5 0 3 1 1 1
479 0 5 0 3 1 0 1
480 0 5 0 3 0 1 1
481 0 5 0 3 0 0 1
482 0 6 1 0 1 1 1
483 0 6 1 0 1 0 1
484 0 6 1 0 0 1 1
485 0 6 1 0 0 0 1
486 0 6 0 0 1 1 1
487 0 6 0 0 1 0 1
488 0 6 0 0 0 1 1
489 0 6 0 0 0 0 1
490 0 6 1 1 1 1 1
491 0 6 1 1 1 0 1
492 0 6 1 1 0 1 1
493 0 6 1 1 0 0 1
494 0 6 0 1 1 1 1
495 0 6 0 1 1 0 1
496 0 6 0 1 0 1 1
497 0 6 0 1 0 0 1
498 0 6 1 2 1 1 1
499 0 6 1 2 1 0 1
500 0 6 1 2 0 1 1
501 0 6 1 2 0 0 1
502 0 6 0 2 1 1 1
503 0 6 0 2 1 0 1
504 0 6 0 2 0 1 1
505 0 6 0 2 0 0 1
506 0 6 1 3 1 1 1
507 0 6 1 3 1 0 1
508 0 6 1 3 0 1 1
509 0 6 1 3 0 0 1
510 0 6 0 3 1 1 1
511 0 6 0 3 1 0 1
512 0 6 0 3 0 1 1
513 0 6 0 3 0 0 1
514 0 7 1 0 1 1 1
515 0 7 1 0 1 0 1
516 0 7 1 0 0 1 1
517 0 7 1 0 0 0 1
518 0 7 0 0 1 1 1
519 0 7 0 0 1 0 1
520 0 7 0 0 0 1 1
521 0 7 0 0 0 0 1
522 0 7 1 1 1 1 1
523 0 7 1 1 1 0 1
524 0 7 1 1 0 1 1
525 0 7 1 1 0 0 1
526 0 7 0 1 1 1 1
527 0 7 0 1 1 0 1
528 0 7 0 1 0 1 1
529 0 7 0 1 0 0 1
530 0 7 1 2 1 1 1
531 0 7 1 2 1 0 1
532 0 7 1 2 0 1 1
533 0 7 1 2 0 0 1
534 0 7 0 2 1 1 1
535 0 7 0 2 1 0 1
536 0 7 0 2 0 1 1
537 0 7 0 2 0 0 1
538 0 7 1 3 1 1 1
539 0 7 1 3 1 0 1
540 0 7 1 3 0 1 1
541 0 7 1 3 0 0 1
542 0 7 0 3 1 1 1
543 0 7 0 3 1 0 1
544 0 7 0 3 0 1 1
545 0 7 0 3 0 0 1
546 0 8 1 0 1 1 1
547 0 8 1 0 1 0 1
548 0 8 1 0 0 1 1
549 0 8 1 0 0 0 1
550 0 8 0 0 1 1 1
551 0 8 0 0 1 0 1
552 0 8 0 0 0 1 1
553 0 8 0 0 0 0 1
554 0 8 1 1 1 1 1
555 0 8 1 1 1 0 1
556 0 8 1 1 0 1 1
557 0 8 1 1 0 0 1
558 0 8 0 1 1 1 1
559 0 8 0 1 1 0 1
560 0 8 0 1 0 1 1
561 0 8 0 1 0 0 1
562 0 8 1 2 1 1 1
563 0 8 1 2 1 0 1
564 0 8 1 2 0 1 1
565 0 8 1 2 0 0 1
566 0 8 0 2 1 1 1
567 0 8 0 2 1 0 1
568 0 8 0 2 0 1 1
569 0 8 0 2 0 0 1
570 0 8 1 3 1 1 1
571 0 8 1 3 1 0 1
572 0 8 1 3 0 1 1
573 0 8 1 3 0 0 1
574 0 8 0 3 1 1 1
575 0 8 0 3 1 0 1
576 0 8 0 3 0 1 1
577 0 8 0 3 0 0 1
578 0 9 1 0 1 1 1
579 0 9 1 0 1 0 1
580 0 9 1 0 0 1 1
581 0 9 1 0 0 0 1
582 0 9 0 0 1 1 1
583 0 9 0 0 1 0 1
584 0 9 0 0 0 1 1
585 0 9 0 0 0 0 1
586 0 9 1 1 1 1 1
587 0 9 1 1 1 0 1
588 0 9 1 1 0 1 1
589 0 9 1 1 0 0 1
590 0 9 0 1 1 1 1
591 0 9 0 1 1 0 1
592 0 9 0 1 0 1 1
593 0 9 0 1 0 0 1
594 0 9 1 2 1 1 1
595 0 9 1 2 1 0 1
596 0 9 1 2 0 1 1
597 0 9 1 2 0 0 1
598 0 9 0 2 1 1 1
599 0 9 0 2 1 0 1
600 0 9 0 2 0 1 1
601 0 9 0 2 0 0 1
602 0 9 1 3 1 1 1
603 0 9 1 3 1 0 1
604 0 9 1 3 0 1 1
605 0 9 1 3 0 0 1
606 0 9 0 3 1 1 1
607 0 9 0 3 1 0 1
608 0 9 0 3 0 1 1
609 0 9 0 3 0 0 1
610 0 10 1 0 1 1 1
611 0 10 1 0 1 0 1
612 0 10 1 0 0 1 1
613 0 10 1 0 0 0 1
614 0 10 0 0 1 1 1
615 0 10 0 0 1 0 1
616 0 10 0 0 0 1 1
617 0 10 0 0 0 0 1
618 0 10 1 1 1 1 1
619 0 10 1 1 1 0 1
620 0 10 1 1 0 1 1
621 0 10 1 1 0 0 1
622 0 10 0 1 1 1 1
623 0 10 0 1 1 0 1
624 0 10 0 1 0 1 1
625 0 10 0 1 0 0 1
626 0 10 1 2 1 1 1
627 0 10 1 2 1 0 1
628 0 10 1 2 0 1 1
629 0 10 1 2 0 0 1
630 0 10 0 2 1 1 1
631 0 10 0 2 1 0 1
632 0 10 0 2 0 1 1
633 0 10 0 2 0 0 1
634 0 10 1 3 1 1 1
635 0 10 1 3 1 0 1
636 0 10 1 3 0 1 1
637 0 10 1 3 0 0 1
638 0 10 0 3 1 1 1
639 0 10 0 3 1 0 1
640 0 10 0 3 0 1 1
641 0 10 0 3 0 0 1

BIN
files/flag/FlagBlue.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 B

BIN
files/flag/FlagGreen.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 397 B

BIN
files/flag/FlagRed.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 B

BIN
files/flag/FlagYellow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 439 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 372 B

View File

@ -14,7 +14,7 @@ MAX_AMOUNT_OF_MINES = 11
AMOUNT_OF_MINES = random.randint(MIN_AMOUNT_OF_MINES, MAX_AMOUNT_OF_MINES) AMOUNT_OF_MINES = random.randint(MIN_AMOUNT_OF_MINES, MAX_AMOUNT_OF_MINES)
DELAY_TIME = 0.2 DELAY_TIME = 0.2
SLEEP_AFTER_CHECK_MINE = 1 SLEEP_AFTER_CHECK_MINE = 2
STEP = IMAGE_SIZE + 5 STEP = IMAGE_SIZE + 5
@ -36,3 +36,6 @@ NUMBER_OF_INDIVIDUALS_FOR_DUEL = 4
NUMBER_OF_POINTS_PERMUTATION = 10 NUMBER_OF_POINTS_PERMUTATION = 10
PERCENT_OF_MUTATION = 0.01 PERCENT_OF_MUTATION = 0.01
PERCENT_OF_OUTGOING_INDIVIDUALS = 0.03 PERCENT_OF_OUTGOING_INDIVIDUALS = 0.03
label_text = ""