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.x_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.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.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
self.canvas_small_images = []
@ -47,7 +51,11 @@ class Field(object):
bg='gray')
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
def Moving(self):

View File

@ -1,7 +1,15 @@
class Mine:
def __init__(self, x, y):
def __init__(self, x, y, known, power, new, location, stable):
self.array_x = x
self.array_y = y
self.status = True
self.small_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 time
from tkinter import *
import pandas as pd
from bin.Classess.Field import Field
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.Travel as tr
from resources.Globals import *
from bin.Classess.DecisionTree import DecisionTree
# WINDOW_X = 533 + 1200
# WINDOW_Y = 950
@ -27,12 +29,16 @@ from resources.Globals import *
player = Player()
field = Field()
travel = Travel()
decision_tree = DecisionTree()
# Globals
fringe = []
explored = []
action_list = []
images_coord = []
label = None
def Arrow(direction):
image = ""
@ -62,18 +68,17 @@ def Fill(bool):
print(travel.points_map)
for i in range(0, len(field.canvas_small_images)):
images_coord.append(field.small_field_canvas.coords(field.canvas_small_images[i]))
# print("Coords List: ", images_coord)
nd.init_data(images_coord, field.cell_expense)
# Drawing red/green rectangles
for el in field.state_of_cell_array:
if el[0] != 0:
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])
# # Drawing red/green rectangles
# for el in field.state_of_cell_array:
# if el[0] != 0:
# 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])
DrawingLargeImage()
@ -179,11 +184,11 @@ def CellDesignation(array, color):
def Action(action):
if action in ["Right", "Left", "Up", "space"]:
Moving(action)
elif action in ["1", "2"]:
if action == "1":
CellDesignation(field.state_of_cell_array, "red")
else:
CellDesignation(field.state_of_cell_array, "green")
# elif action in ["1", "2"]:
# if action == "1":
# CellDesignation(field.state_of_cell_array, "red")
# else:
# CellDesignation(field.state_of_cell_array, "green")
# 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))
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):
global fringe
global explored
@ -230,7 +271,6 @@ def MouseClickEvent(track):
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 = []
@ -249,80 +289,39 @@ def MouseClickEvent(track):
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()
DrawFlag()
# Decision by tree
prediction = MakeDecision()
# Draw the right flag
MarkMine(prediction)
time.sleep(SLEEP_AFTER_CHECK_MINE)
# start_position = field.small_field_canvas.coords(player.image_canvas_id)
# end_position = []
#
# # print("Pierwsza pozycja: {} {}".format(start_position[0], start_position[1]))
#
# for i in range(0, len(field.canvas_small_images)):
# img_coords = field.small_field_canvas.coords(field.canvas_small_images[i])
# 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
# print("Color cost: ", field.cell_expense[i])
#
# # if len(end_position) == 2:
# # print("Koncowa pozycja: {} {}".format(end_position[0], end_position[1]))
#
# node = nd.Node()
# if len(fringe) == 0:
# node.state.coord = start_position
# node.state.direction = "east"
# else:
# 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()
# Check in which locations is mine
def CheckLocation(x, y):
# Add x + y like strings that create xy number
temp_x = str(x)
temp_y = str(y)
position_str = temp_x + temp_y
position = int(position_str)
color_number = -1
if field.cell_expense[position] == standard_cell_cost:
color_number = 0
elif field.cell_expense[position] == sand_cell_cost:
color_number = 1
elif field.cell_expense[position] == water_cell_cost:
color_number = 2
elif field.cell_expense[position] == swamp_cell_cost:
color_number = 3
return color_number
# Add mines on the field and to arrays
def PutMines(mines_array):
counter = 0
@ -339,9 +338,18 @@ def PutMines(mines_array):
if x == 0 and y == 0:
continue
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)
# Add mine to array at the right position
field.state_of_cell_array[x][y] = mine
field.field_state_array[x][y] = True
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])
def DrawFlag():
field.small_field_canvas.create_image(player.current_x, player.current_y, anchor=NW, image=field.flag_img)
def DrawFlag(image):
field.small_field_canvas.create_image(player.current_x, player.current_y, anchor=NW, image=image)
# def IsItMine():
@ -439,15 +447,14 @@ def DrawRectangle():
elif field.cell_expense[i] == swamp_cell_cost:
color = "green4"
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
if x + IMAGE_SIZE + 2 > field.width:
x = 4
y += player.step
def AddCostCellsToArray(amount, cost):
counter = 0
while counter < amount:
@ -461,7 +468,9 @@ def CostingOfCells():
AddCostCellsToArray(amount_of_sand_cells, sand_cell_cost)
AddCostCellsToArray(amount_of_water_cells, water_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
DrawRectangle()
@ -469,8 +478,9 @@ def CostingOfCells():
def click_button():
btn.destroy()
label = Label(field.win, text="Wait...\nAI conquers the world...", fg='black', font="20")
label.place(x=50, y=570)
global label
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()
track = tr.genetic_algorithm(travel.points_map)
@ -480,6 +490,41 @@ def click_button():
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():
# Creating the main window of an application
win_size = f'{WINDOW_X}x{WINDOW_Y}'
@ -487,6 +532,7 @@ def main():
field.win.configure(bg='gray')
field.win.geometry(win_size)
print(f'Amount of mines: {AMOUNT_OF_MINES}')
global btn
btn = Button(field.win,
text="Search for mines", # текст кнопки
@ -498,13 +544,19 @@ def main():
command=click_button
)
btn.place(x=50, y=570)
btn.place(x=10, y=560)
# Create array with mines objects
mines_array = []
CostingOfCells()
# Put mines on coordinates
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/large_mines_images", field.large_image_array, False)
@ -514,8 +566,6 @@ def main():
large_directory = "../../files/large_images"
ImagesInArray(large_directory, field.large_image_array)
CostingOfCells()
# Add arrow image to Player class
images = []
for file in os.listdir("../../files/arrow"):
@ -540,6 +590,7 @@ def main():
# Binding keyboard press to function
# field.win.bind("<Key>", Action)
# field.small_field_canvas.bind("<Button-1>", MouseClickEvent)
# Starting mainloop for window
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)
DELAY_TIME = 0.2
SLEEP_AFTER_CHECK_MINE = 1
SLEEP_AFTER_CHECK_MINE = 2
STEP = IMAGE_SIZE + 5
@ -36,3 +36,6 @@ NUMBER_OF_INDIVIDUALS_FOR_DUEL = 4
NUMBER_OF_POINTS_PERMUTATION = 10
PERCENT_OF_MUTATION = 0.01
PERCENT_OF_OUTGOING_INDIVIDUALS = 0.03
label_text = ""