Last active
August 17, 2024 01:40
-
-
Save LieBtrau/c03590a2e500eac50ddff7602c75387f to your computer and use it in GitHub Desktop.
Program to find solutions for SmartGames IQ-star puzzle game
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
# | |
# This program is a solver for the [SmartGames IQ-Stars](https://www.smartgames.eu/nl/1-speler-spellen/iq-stars) puzzle game. | |
# 381 unique solutions can be found. My Thinkpad L580 takes 536s to find them. | |
import math, sys | |
from timeit import default_timer as timer | |
def place_block(block, color, x, y): | |
# Check if the block can be placed on the board at the given coordinates | |
# If the block can be placed, return True, otherwise False | |
for coord in block: | |
# Check if the x-coordinate is within the board | |
if x+coord[0] < 0 or x+coord[0] > 12: | |
return False | |
# Check if the y-coordinate is within the board | |
if y+coord[1] < 0 or y+coord[1] > 3: | |
return False | |
# Check if the block is not placed on an illegal place | |
if board[y+coord[1]][x+coord[0]] != 0: | |
return False | |
# Place the block on the board | |
for coord in block: | |
board[y+coord[1]][x+coord[0]] = color | |
return True | |
def remove_block(block, x, y): | |
# Remove the block from the board | |
# No safety measures here. Make sure the block is placed on the board. | |
for coord in block: | |
board[y+coord[1]][x+coord[0]] = 0 | |
def rotate_block_fast(block): | |
# The block is 60° counter-clockwise rotated around the first coordinate, which is (0,0) in every case | |
# The rotated block is returned | |
# The number of mathematical operations is reduced to increase speed. | |
output_block = [] | |
for coord in block: | |
# The following code block can be optimized, but is kept for clarity | |
sqrt3 = 1.73205 # math.sqrt(3) | |
# Convert to actual coordinates | |
x = coord[0]/2 | |
y = coord[1] * sqrt3/2 | |
# Rotate 60° counter-clockwise | |
x2 = round(x - y * sqrt3) | |
y2 = round(x + y / sqrt3) | |
output_block.append([x2, y2]) | |
return output_block | |
def rotate_block(block): | |
# The block is 60° counter-clockwise rotated around the first coordinate, which is (0,0) in every case | |
# The rotated block is returned | |
output_block = [] | |
for coord in block: | |
# The following code block can be optimized, but is kept for clarity | |
# Convert to actual coordinates | |
x = coord[0]/2 | |
y = coord[1] * math.sqrt(3)/2 | |
# Rotate 60° counter-clockwise | |
x2 = (x/2 - y * math.sqrt(3)/2) # x * cos(60°) - y * sin(60°) = x/2 - y * sqrt(3)/2 | |
y2 = (x * math.sqrt(3)/2 + y/2) # x * sin(60°) + y * cos(60°) = x * sqrt(3)/2 + y/2 | |
# Convert back to grid coordinates | |
x2 = round(x2 * 2) | |
y2 = round(y2 * 2 / math.sqrt(3)) | |
output_block.append([x2, y2]) | |
return output_block | |
def string_solution(): | |
# Print the solution | |
output="" | |
for y in range(4): | |
for x in range(13): | |
if board[y][12-x] == 0: | |
output += " " | |
elif board[y][12-x] == 100: | |
output += " " | |
else: | |
color = board[y][12-x] | |
if color==1: | |
output += "P" | |
elif color==2: | |
output += "M" | |
elif color==3: | |
output += "B" | |
elif color==4: | |
output += "R" | |
elif color==5: | |
output += "O" | |
elif color==6: | |
output += "Y" | |
else: | |
output += "G" | |
output += "\t" | |
#output += "\r\n" | |
return output | |
def add_solution(solution): | |
# Add a solutions to the list of solutions | |
# A new solution will only be added when it's not a duplicate of a previous one. | |
for sol in solutions: | |
if sol==solution: | |
return False | |
solutions.append(solution) | |
return True | |
def find_solution(block_index=0): | |
# Find a solution for the board with the given blocks | |
# The board is filled with the blocks and the color of the block | |
# The blocks are placed on the board in the order of the list | |
# The blocks are rotated in the order of the list | |
# The board is modified with the solution | |
for x in range(13): | |
for y in range(4): | |
# Try to place the block on the board | |
rotated_block = rotated_blocks[block_index] | |
# Loop through all the possible rotations of that block | |
for block in rotated_block: | |
#print("Block", block_index, "Rotation", rotation) | |
if place_block(block, block_index+1, x, y): | |
if block_index == 6: | |
# The board is full | |
solution_str = string_solution() | |
if add_solution(solution_str): | |
print(string_solution()) | |
else: | |
find_solution(block_index+1) | |
# Remove the block from the board | |
remove_block(block, x, y) | |
def main(argv): | |
# Find the solution | |
start = timer() | |
find_solution() | |
end = timer() | |
print("Lapsed seconds: ", round(end - start)) | |
print("Solutions found: ", len(solutions)) | |
# Define the board | |
# The board is 4 rows high and each row contains maximum 7 blocks. So the x-coordinates are 0 to 12. | |
# An array of 13x4 is used, which results in 52 places | |
board = [[0 for x in range(13)] for y in range(4)] | |
# The blocks occupy 26 grid locations in total. So the board has 26 illegal places, that must remain empty. | |
# Fill the illegal places with 100 | |
for y in range(4): | |
for x in range(0,14, 2): | |
if y%2 != 0: | |
board[y][x] = 100 | |
elif x < 12: | |
board[y][x+1] = 100 | |
# Define the blocks | |
# The grid coordinates are arranged in triangle shapes. So corners of 60° are used. | |
# On a horizontal line, the coordinates are separated by 2 units. The line above that is shifted by the cosine of 60°, so 2*0.5 = 1 unit. | |
# The vertical distance between the lines is actually sqrt(3)/2, but we use 1 as unit for simplicity. | |
block_purple = ((-2,0), (0,0), (2,0)) | |
block_magenta = ((0, 0), (1, 1), (3, 1), (4, 0)) | |
block_blue = ((0, 0), (1, 1), (2, 0), (4, 0)) | |
block_red = ((0, 0), (1,1), (2,0), (3,1)) | |
block_orange = ((0, 0), (1, 1), (3, 1)) | |
block_yellow = ((0, 0), (1, 1), (2, 0), (2,2)) | |
block_green = ((0, 0), (2,0), (4, 0), (5,1)) | |
blocks = (block_purple, block_magenta, block_blue, block_red, block_orange, block_yellow, block_green) | |
# Precalculate the rotated blocks | |
rotated_blocks = [] | |
for block in blocks: | |
rotated_block = [] | |
for rotation in range(6): | |
rotated_block.append(block) | |
block = rotate_block_fast(block) | |
rotated_blocks.append(rotated_block) | |
solutions = [] | |
if __name__ == '__main__': | |
main(sys.argv[1:]) | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Solutions for the SmartGames IQ-stars | |
Y = yellow block | |
B = blue block | |
P = purple block | |
G = green block | |
O = orange block | |
R = red block | |
M = magenta/pink block | |
Row 1 = Top Row 2 Row 3 Row4 = Bottom | |
Y Y Y B B B P Y G G G B P O G R R M P M O O R R M M | |
G R R B B B P G R R Y B P O G G Y M P M O O Y Y M M | |
G G O B B B P R G O O B P R R G Y M P M R Y Y Y M M | |
O O G B B B P R O G Y B P R R G Y M P M R G Y Y M M | |
G Y Y Y R R P G Y B R R P O G G B M P M O O B B M M | |
Y Y G G G O P Y G B O O P Y R R B M P M R R B B M M | |
B B B Y Y Y P O B M Y M P O R R M M P G O R R G G G | |
Y Y O M R R P Y O M R R P Y B O M M P G B B B G G G | |
O R R M Y Y P O R R M Y P O B M M Y P G B B B G G G | |
Y Y Y M M B P Y G M B B P R R G M B P O R R G G O O | |
Y Y Y B B B P Y G G G B P M G M R R P O M M R R O O | |
Y B B B R R P Y Y B R R P M Y M O O P G M M O G G G | |
Y Y M M R R P Y M O R R P Y B M O O P G B B B G G G | |
B B M M Y Y P B M R M Y P O B R R Y P G O O R G G G | |
O O R R Y Y P M O R R Y P M B B B Y P G M M B G G G | |
B B B R Y Y P M B R R Y P M O O R Y P G M M O G G G | |
M M Y Y Y B P O M Y B B P O M R R B P G O R R G G G | |
Y Y Y O P P P Y G O B B B R R G O M B M R R G G M M | |
Y Y O O P P P Y R R O B M Y R R G B B M G G G B M M | |
Y Y Y G P P P Y R R G B M O R R G B B M O O G B M M | |
G Y Y Y P P P G Y B R R M O G G B R R M O O B B M M | |
B B B Y P P P R B Y O O M R R Y Y G O M R G G G M M | |
R R B B P P P R R B O O M Y Y Y B G O M Y G G G M M | |
O G R R P P P O G R R Y M O G B Y Y Y M G B B B M M | |
B B R R P P P B G R R Y M O B G Y Y Y M O O G G M M | |
Y Y G G P P P Y R R G M O Y B R R G M O B B B M M O | |
Y Y Y B P P P Y R R B M M O R R B B G M O O G G G M | |
O B B B P P P O O B Y M M R R Y Y Y G M R R G G G M | |
Y Y Y B P P P Y O B B M M O O B G R R M G G G R R M | |
O Y Y B P P P O Y B B M M O Y B G R R M G G G R R M | |
Y Y Y G P P P Y R R G M M O R R B G G M O O B B B M | |
B B B G P P P R B Y G M M R R Y O G G M R Y Y O O M | |
B B B Y P P P R B Y Y M M R R O O Y G M R O G G G M | |
Y Y B G P P P Y B B G M M Y B O G R R M O O G R R M | |
Y Y Y G P P P Y B B G M M R R B O G G M R R B O O M | |
B Y O O P P P B Y Y O M M B B Y G R R M G G G R R M | |
B Y Y Y P P P B Y O O M M B B O G R R M G G G R R M | |
B Y Y Y P P P B Y R R M M B B O R R G M O O G G G M | |
B R R G P P P B R R G M M B B Y O G G M Y Y Y O O M | |
Y Y G G P P P Y R R G M M Y B R R G O M B B B O O M | |
Y Y R G P P P Y R R G M M Y B R O G G M B B B O O M | |
B B R R P P P B R R Y M M O B Y Y Y G M O O G G G M | |
Y B B B P P P Y Y B G G G O Y M G M R R O O M M R R | |
O B B B P P P O Y B G G G O Y M G M R R Y Y M M R R | |
O B R R P P P O B R R M M O B B G M Y M G G G Y Y Y | |
B R R G P P P B R R G M M B B O G M Y M O O G Y Y Y | |
O G R R P P P O G R R M M O B G G M Y M B B B Y Y Y | |
B B R G P P P B R R G M M O B R G M Y M O O G Y Y Y | |
O O R R P P P B O R R M M B B B G M Y M G G G Y Y Y | |
Y Y Y M P P P Y G M B B B R R G M M B O R R G G O O | |
B B B Y P P P R B Y M M O R R Y Y G M O R G G G M O | |
R R B B P P P R R B M M O Y Y Y B G M O Y G G G M O | |
B B B G P P P M B M G Y R O M M G Y R R O O G Y Y R | |
Y Y O O P P P Y B M O R R Y B B M R R G B M M G G G | |
O G M M P P P O G Y M R R O G Y M B R R G Y Y B B B | |
B O M M P P P B O O M R R B B Y M R R G Y Y Y G G G | |
O Y M M P P P O Y Y M R R O B Y M R R G B B B G G G | |
Y O O G P P P Y Y O G R R M Y M G B R R M M G B B B | |
Y Y Y G P P P Y O O G R R M O M G B R R M M G B B B | |
Y B B B P P P Y Y B G G G M Y M G O R R M M O O R R | |
Y B B B P P P Y Y B R R O M Y M R R G O M M G G G O | |
B B O O P P P B O Y Y R R M B M Y R R G M M Y G G G | |
Y Y M M P P P Y M G R R O Y B M G R R O B B B G G O | |
B B M M P P P B M Y Y R R O B M Y R R G O O Y G G G | |
B G G O P P P B M G O O R B B M G Y R R M M Y Y Y R | |
B O O G P P P B M O G Y R B B M G Y R R M M G Y Y R | |
Y Y M M P P P Y M O M R R Y O O G B R R G G G B B B | |
B B B G P P P M B O G Y R M O O G Y R R M M G Y Y R | |
B B B Y P P P M B G Y Y R M O O G Y R R M M O G G R | |
Y M M G P P P Y Y M G R R O Y M G B R R O O G B B B | |
O M M G P P P O Y M G R R O Y M G B R R Y Y G B B B | |
M M G Y P P P O M G Y Y R O M G B Y R R O G B B B R | |
G G B B B P O R G M B P O R R G M P Y O R M M Y Y Y | |
Y Y O M G G G Y O M G R R Y B O M M R R B B B P P P | |
G G Y Y Y B B O G Y R R B O M G M R R B O M M P P P | |
Y Y M G G G O Y M G R R O Y B M M R R O B B B P P P | |
R R G G B B B R R M G O B Y Y Y M G O O Y M M P P P | |
Y Y G G G B B Y G M R R B Y O O M R R B O M M P P P | |
G G B B B Y O R G M B Y O R R G M Y Y O R M M P P P | |
G G B B B O O R G M B O Y R R G M Y Y Y R M M P P P | |
R R G G B B O R R M G B O Y Y Y M G B O Y M M P P P | |
Y O O R R B B Y Y O R R B M Y M G G G B M M G P P P | |
Y Y Y R R B B Y O O R R B M O M G G G B M M G P P P | |
Y B B B G G G Y Y B G R R M Y M O O R R M M O P P P | |
Y B B B R R O Y Y B R R O M Y M G G G O M M G P P P | |
Y Y M M G G G Y M O G R R Y B M O O R R B B B P P P | |
Y Y G G B B B Y M M G O B Y R R M G O O R R M P P P | |
Y Y G G B B O Y M M G B O Y R R M G B O R R M P P P | |
B B B G G G Y M B G R R Y M O O R R Y Y M M O P P P | |
Y M M R R B B Y Y M R R B O Y M G G G B O O G P P P | |
O M M R R B B O Y M R R B O Y M G G G B Y Y G P P P | |
Y Y Y P P P B Y G G G B B O G R R M B M O O R R M M | |
G R R P P P B G R R Y B B O G G Y M B M O O Y Y M M | |
G G O P P P B R G O O B B R R G Y M B M R Y Y Y M M | |
O O G P P P B R O G Y B B R R G Y M B M R G Y Y M M | |
B B Y P P P G B Y Y G G G O B M Y M R R O O M M R R | |
Y Y Y P P P O Y G G G B O M G M R R B O M M R R B B | |
Y Y Y P P P B Y G G G B B M G M R R B O M M R R O O | |
B B Y P P P G B Y Y G G G M B M Y O R R M M O O R R | |
B B B P P P G M B Y G G G M Y Y Y O R R M M O O R R | |
B B B P P P G M B Y G G G M O O Y Y R R M M O Y R R | |
O G R R Y Y Y O G R R Y M O G B P P P M G B B B M M | |
B B R R Y Y Y B G R R Y M O B G P P P M O O G G M M | |
Y Y M M O R R Y M O O R R Y B M P P P G B B B G G G | |
M M B B B R R O M Y B R R O M Y P P P G O Y Y G G G | |
G G B B B Y Y R G M B P Y R R G M P Y O R M M P O O | |
O G M M B B B O G Y M P B O G Y M P R R G Y Y P R R | |
Y O O G B B B Y Y O G P B M Y M G P R R M M G P R R | |
Y Y Y G B B B Y O O G P B M O M G P R R M M G P R R | |
Y Y M M B B B Y M O M P B Y O O G P R R G G G P R R | |
Y M M G B B B Y Y M G P B O Y M G P R R O O G P R R | |
O M M G B B B O Y M G P B O Y M G P R R Y Y G P R R | |
Y Y G G G M M Y G B P M O Y R R B P M O R R B B P O | |
B B G G G Y Y B G P P P Y O B R R M Y M O O R R M M | |
B B G G G Y Y B G P P P Y M B M R R Y O M M R R O O | |
B B B P Y Y Y M B G P Y R M O O G P R R M M O G G R | |
M M G P Y Y Y O M G P Y R O M G B P R R O G B B B R | |
Y Y Y R R M M Y B R R M O B B G G G M O B G P P P O | |
B Y Y Y G G G B Y M G M R B B O M M R R O O P P P R | |
Y Y Y G G G O Y M G M O O R R M M B B B R R P P P B | |
Y G G R R B B Y Y G R R B M Y M G O O B M M P P P O | |
Y B B B G G G Y Y B G O R M Y M O O R R M M P P P R | |
Y G G B B O O Y Y G B O R M Y M G B R R M M P P P R | |
B B G G Y Y Y B O O G Y R M B M O G R R M M P P P R | |
B B R R G G G B R R G Y O M B M Y Y Y O M M P P P O | |
O O Y Y Y R R M O Y G R R M G G G B B B M M P P P B | |
M M R R B B B O M R R Y B O M G G G Y Y O G P P P Y | |
M M G Y Y R R O M G Y R R O M G Y B B B O G P P P B | |
M M G B Y Y Y O M G B Y R O M G B B R R O G P P P R | |
M M G G Y Y Y O M B G Y R O M B B G R R O B P P P R | |
Y Y P P P O O Y R R M O M Y B R R M M G B B B G G G | |
Y Y P P P M M Y R R B M O Y R R G B M O G G G B B O | |
O G P P P R R O G Y M R R O G Y M B B B G Y Y M M B | |
O G P P P B B O G Y M M B O G Y M R R B G Y Y M R R | |
G G P P P B O R G M B B O R R G M B Y O R M M Y Y Y | |
G G P P P O Y R G M O O Y R R G M B Y Y R M M B B B | |
Y Y P P P R R Y B M O R R Y B B M O O G B M M G G G | |
M M P P P B B O M G G G B O M G Y R R B O Y Y Y R R | |
M M P P P B B O M Y G G B O M Y R R G B O Y Y R R G | |
M M P P P Y Y O M B B B Y O M R R B Y G O R R G G G | |
M M P P P G Y O M G G G Y O M R R B Y Y O R R B B B | |
M M P P P R R O M Y B R R O M Y B B B G O Y Y G G G | |
Y Y R R G G G Y R R G M O Y B P P P M O B B B M M O | |
Y Y R R G G G Y R R G M M Y B P P P O M B B B O O M | |
G R R M M B B G R R P M B O G G P M Y B O O P Y Y Y | |
O O G M M B B R O G P M B R R G P M Y B R G P Y Y Y | |
B R R M M Y Y B R R P M Y B B O P M Y G O O P G G G | |
B B R M M Y Y B R R P M Y O B R P M Y G O O P G G G | |
B B R R G Y Y B R R P G Y M B M P G Y O M M P G O O | |
B B R R Y Y Y B R R P Y O M B M P O O G M M P G G G | |
B B R R O Y Y B R R P O Y M B M P O Y G M M P G G G | |
B B B G Y Y Y O B P G Y M O R R P G G M O R R P M M | |
Y Y M M G G G Y M P G O O Y B M P O R R B B B P R R | |
Y Y M M G G G Y M P G R R Y B M P O R R B B B P O O | |
Y Y M M G G G Y M P G R R Y B M P R R O B B B P O O | |
Y Y M M G G G Y M P G O R Y B M P O R R B B B P O R | |
Y Y M M G G G Y M P G O O Y B M P R R O B B B P R R | |
Y Y M M G G G Y M P G R O Y B M P R R O B B B P R O | |
B B B P Y Y Y R B P M Y M R R P O M M G R O O G G G | |
Y Y Y P M R R Y B P M R R B B P O M M G B O O G G G | |
Y Y Y P G G G Y B P G M M B B P O R R M B O O R R M | |
B B B P G G G R B P G M M R R P O M Y M R O O Y Y Y | |
B B B P G G G O B P G Y R O M P M Y R R O M M Y Y R | |
B B B P R Y Y O B P R R Y O M P M R Y G O M M G G G | |
O G P R R Y Y O G P R R Y O G B P M Y M G B B B M M | |
B B P R R Y Y B G P R R Y O B G P M Y M O O G G M M | |
O O P G Y Y Y R O P G Y M R R B P G G M R B B B M M | |
Y Y R R B B B Y R R O O B Y G G G M O M G P P P M M | |
Y Y R R O O B Y R R O B B Y G G G M B M G P P P M M | |
O R R Y Y Y B O R R Y B B O G G G M B M G P P P M M | |
O G B R R Y Y O G B R R Y O G B B M Y M G P P P M M | |
O G G R R Y Y O B G R R Y O B B G M Y M B P P P M M | |
G G B B Y Y Y R G B M Y M R R G B M M O R P P P O O | |
G G Y Y Y O O R G Y B O M R R G B B B M R P P P M M | |
O O B G Y Y Y R O B G Y M R R B B G G M R P P P M M | |
G G B B Y Y Y R G B O Y M R R G B O O M R P P P M M | |
B B B G G G Y R B G O M Y R R O O M Y Y R P P P M M | |
G G B B O O Y R G B O M Y R R G B M Y Y R P P P M M | |
G G B B B Y Y R G M B M Y R R G M M Y O R P P P O O | |
Y Y R R G G G Y R R G M M Y O O B B B M O P P P B M | |
O O Y Y G G G R O Y G M M R R Y B B B M R P P P B M | |
Y Y R R M M O Y R R M B O Y G G G M B O G P P P B B | |
Y Y R R M M B Y R R M B B Y G G G M B O G P P P O O | |
G G Y Y Y B B R G Y M M B R R G M O M B R P P P O O | |
O P P P Y Y Y O R R M Y M O B R R M M G B B B G G G | |
Y P P P G G G Y Y R G B M O Y R R B B M O O R B M M | |
O P P P G G G O Y R G B M O Y R R B B M Y Y R B M M | |
B P P P G M M B G G G M O B B Y R R M O Y Y Y R R O | |
B P P P M R R B G G M R R B B Y G M M O Y Y Y G O O | |
B P P P M R R B O O M R R B B Y O M M G Y Y Y G G G | |
B P P P G G G B O O G M M B B Y O R R M Y Y Y R R M | |
O P P P G G G O R R G M M O B R R M Y M B B B Y Y Y | |
Y P P P M M B Y Y R M B B O Y R R M B G O O R G G G | |
O P P P M M B O Y R M B B O Y R R M B G Y Y R G G G | |
B P P P M M O B G G M O O B B Y G M R R Y Y Y G R R | |
O P P P B B B O O M R R B Y Y Y M R R G Y M M G G G | |
O P P P G G G O O M G R R Y Y Y M B R R Y M M B B B | |
O P P P G G G O B M G Y R O B B M Y R R B M M Y Y R | |
O P P P R Y Y O B M R R Y O B B M R Y G B M M G G G | |
O P P P B B B O O M M Y B R R M Y Y Y G R R M G G G | |
Y P P P B B B Y Y O R R B M Y M O R R G M M O G G G | |
Y P P P G G G Y Y O G R R M Y M O B R R M M O B B B | |
Y P P P G G G Y Y B G O O M Y M B O R R M M B B R R | |
Y P P P G G G Y Y B G R R M Y M B O R R M M B B O O | |
Y P P P G G G Y Y B G R R M Y M B R R O M M B B O O | |
Y P P P G G G Y Y B G O R M Y M B O R R M M B B O R | |
Y P P P G G G Y Y B G O O M Y M B R R O M M B B R R | |
Y P P P G G G Y Y B G R O M Y M B R R O M M B B R O | |
B P P P G G G B M O G Y R B B M O Y R R M M O Y Y R | |
B P P P R Y Y B M O R R Y B B M O R Y G M M O G G G | |
B P P P Y Y Y B M R R Y O B B M R R G O M M G G G O | |
G P P P B B B G M M Y Y B O G G M Y R R O O M Y R R | |
G P P P R B B G M M R R B O G G M R Y B O O M Y Y Y | |
G P P P Y Y Y G M M B Y R O G G M B R R O O M B B R | |
G P P P R R Y G M M R R Y O G G M B Y Y O O M B B B | |
B P P P G G G B M M G Y R B B O M Y R R O O M Y Y R | |
B P P P R Y Y B M M R R Y B B O M R Y G O O M G G G | |
O P P P B B B O M M R R B O M Y M R R G Y Y Y G G G | |
O P P P G G G O M M G R R O M Y M B R R Y Y Y B B B | |
B B B G Y Y Y R B P G Y M R R P G O O M R P G O M M | |
M M G G Y Y Y O M P G Y R O M P B G R R O P B B B R | |
Y Y Y G G G B Y P G O B B R R P O M B M R R P O M M | |
Y Y Y O G G G Y P O G B M R R P O B B M R R P B M M | |
Y Y Y B B M M Y P G B M O R R P G B M O R R P G G O | |
Y Y Y G G G O Y P G M O O R R P M B B B R R P M M B | |
B B R R M Y Y B P R R M Y O B P M M Y G O O P G G G | |
Y Y Y O M M B Y P O M B B R R P O M B G R R P G G G | |
Y Y Y M B B B Y P M O O B R R P M M O G R R P G G G | |
Y Y Y M O O B Y P M O B B R R P M M B G R R P G G G | |
Y Y Y G G G O Y P G M M O R R P M B M O R R P B B B | |
B P R R Y Y Y B P R R Y M B B P G O O M G G G O M M | |
O P R R M Y Y O P R R M Y O B P M M Y G B B B G G G | |
R R B B B O O R R G B O M G G G Y Y Y M P P P Y M M | |
B G R R Y Y Y B G R R Y M B B G G O O M P P P O M M | |
B R R G Y Y Y B R R G Y M B B O O G G M P P P O M M | |
Y Y G G G R R Y G O M R R Y O O M B B B P P P M M B | |
R R O O M B B R R G O M B G G G M M Y B P P P Y Y Y | |
O B R R M Y Y O B R R M Y O B B M M Y G P P P G G G | |
O O R R M Y Y B O R R M Y B B B M M Y G P P P G G G | |
Y Y G G G B B Y G O M M B Y O O M R R B P P P M R R | |
B R R M G Y Y B R R M G Y B B M M G Y O P P P G O O | |
B R R M Y Y Y B R R M Y O B B M M O O G P P P G G G | |
B R R M O Y Y B R R M O Y B B M M O Y G P P P G G G | |
O R R M M B B O R R G M B O G G G M Y B P P P Y Y Y | |
B R R M M Y Y B R R O M Y B B O O M Y G P P P G G G | |
R R M M O B B R R G M O B G G G M O Y B P P P Y Y Y | |
P P P Y Y Y B O G G Y B B O R R G M B M O R R G M M | |
P P P G G G B O O G Y B B O R R Y M B M R R Y Y M M | |
P P P G G G B R R G Y B B O R R Y M B M O O Y Y M M | |
P P P G G G B R R G O B B R R Y O M B M Y Y Y O M M | |
P P P G G G B R R G Y B B R R O Y M B M O O Y Y M M | |
P P P G G G B O R G Y B B O R R Y M B M O R Y Y M M | |
P P P G G G B O O G Y B B R R O Y M B M R R Y Y M M | |
P P P G G G B R O G Y B B R R O Y M B M R O Y Y M M | |
P P P G B Y Y G G G B B Y R R O B M Y M R R O O M M | |
P P P O O Y Y G G B B O Y R R G B M Y M R R G B M M | |
P P P R R Y Y G G G R R Y G B O O M Y M B B B O M M | |
P P P O Y Y Y R B O M Y M R R B O M M G R B B G G G | |
P P P B Y Y Y R B B M Y M R R B O M M G R O O G G G | |
P P P O G G G R R O G B M R R Y O B B M Y Y Y B M M | |
P P P G Y Y Y O O B G Y M O R R B G G M R R B B M M | |
P P P G Y Y Y R R B G Y M O R R B G G M O O B B M M | |
P P P G Y Y Y R R B G Y M R R O B G G M O O B B M M | |
P P P G Y Y Y O R B G Y M O R R B G G M O R B B M M | |
P P P G Y Y Y O O B G Y M R R O B G G M R R B B M M | |
P P P G Y Y Y R O B G Y M R R O B G G M R O B B M M | |
P P P B Y Y Y R R B B Y M R R B G O O M G G G O M M | |
P P P G Y Y Y G G G B Y M R R O B B B M R R O O M M | |
P P P G Y Y Y B B B G Y M R R B G O O M R R G O M M | |
P P P G Y Y Y G G G B Y M R R B B O O M R R B O M M | |
P P P O G G G R O O G Y M R R B Y Y Y M R B B B M M | |
P P P G Y Y Y R O O G Y M R R B O G G M R B B B M M | |
P P P G G G Y R B G O M Y R R B O M Y Y R B B O M M | |
P P P B B M M R R G B M O R R Y G B M O Y Y Y G G O | |
P P P Y M R R O O Y M R R O B Y Y M M G B B B G G G | |
P P P Y G G G O O Y G M M O B Y Y R R M B B B R R M | |
P P P G G G O R R G M O O R R Y M B B B Y Y Y M M B | |
P P P O O B B G G O M Y B R R G M Y Y B R R G M M Y | |
P P P G G G O R B G M Y O R R B M Y Y O R B B M M Y | |
P P P G B Y Y G G G B B Y R R M B M Y O R R M M O O | |
P P P O G G G R B O G M M R R B O M Y M R B B Y Y Y | |
P P P B G G G R B B G M M R R B O M Y M R O O Y Y Y | |
P P P O M M B R R O M B B R R Y O M B G Y Y Y G G G | |
P P P M B B B R R M O O B R R Y M M O G Y Y Y G G G | |
P P P M O O B R R M O B B R R Y M M B G Y Y Y G G G | |
P P P M G G G R B M G O O R R B M M Y O R B B Y Y Y | |
P P P G G G Y R B G M M Y R R B M O Y Y R B B M O O | |
P P P M Y Y Y G G G M Y O G B M M R R O B B B R R O | |
P P P M M B B O G G G M B O G R R M Y B O R R Y Y Y | |
P P P M M B B R R O O M B R R O G M Y B G G G Y Y Y | |
P P P M M Y Y O B B B M Y O R R B M Y G O R R G G G | |
P P P M M Y Y G G B B M Y R R G B M Y O R R G B O O | |
P P P M M Y Y O O R R M Y O B R R M Y G B B B G G G | |
P P P B G G G O B B G Y R O M B M Y R R O M M Y Y R | |
P P P B R Y Y O B B R R Y O M B M R Y G O M M G G G | |
P P P G G G O R R G M M O R R Y M B M O Y Y Y B B B | |
P P P M M B B O O M G G B O R R M Y G B R R Y Y Y G | |
P P P M M B B R R M G G B O R R M Y G B O O Y Y Y G | |
P P P M M B B R R M G G B R R O M Y G B O O Y Y Y G | |
P P P M M B B O R M G G B O R R M Y G B O R Y Y Y G | |
P P P M M B B O O M G G B R R O M Y G B R R Y Y Y G | |
P P P M M B B R O M G G B R R O M Y G B R O Y Y Y G | |
P P P M M B O G G M B B O R R G M B Y O R R G Y Y Y | |
P P P M M O Y G G M O O Y R R G M B Y Y R R G B B B | |
P P P M M Y Y O O M B M Y O R R B B Y G R R B G G G | |
P P P M M Y Y R R M B M Y O R R B B Y G O O B G G G | |
P P P M M Y Y R R M B M Y R R O B B Y G O O B G G G | |
P P P M M Y Y O R M B M Y O R R B B Y G O R B G G G | |
P P P M M Y Y O O M B M Y R R O B B Y G R R B G G G | |
P P P M M Y Y R O M B M Y R R O B B Y G R O B G G G | |
P P P Y B B B O M Y R R B O M Y Y R R G O M M G G G | |
P P P R R B B O M R R G B O M G G G Y B O M M Y Y Y | |
P P P Y G G G O M Y G R R O M Y Y B R R O M M B B B | |
P P P R R Y Y O M B R R Y O M B B B Y G O M M G G G | |
P P P B B B O R R M M B O R R M G M Y O G G G Y Y Y | |
P P P O O B B R R M M O B R R M G M Y B G G G Y Y Y | |
P P P B B B Y O M M G B Y O M R R G Y Y O M R R G G | |
P P P Y B B B M G G Y Y B M O O G Y R R M M O G R R | |
P P P O B B B M Y O R R B M Y Y O R R G M M Y G G G | |
P P P G G G O M Y G R B O M Y Y R R B O M M Y R B B | |
P P P B B B Y M G G G B Y M G R R O Y Y M M R R O O | |
P P P B B B Y M O O G B Y M O R R G Y Y M M R R G G | |
P P P R R B B M Y G R R B M Y Y G O O B M M Y G G O | |
P P P O O B B M Y O G G B M Y Y R R G B M M Y R R G | |
P P P G G B B M R R Y G B M R R Y O G B M M Y Y O O | |
P P P G O B B M R R G O B M R R G O Y B M M G Y Y Y | |
P P P G G G B M Y G R B B M Y Y R R B O M M Y R O O | |
P P P Y Y Y B M R R Y B B M R R O O B G M M O G G G | |
P P P B Y Y Y M R R B Y O M R R B B G O M M G G G O | |
P P P O O Y Y M R R B O Y M R R B B Y G M M B G G G | |
P P P O G G G M Y O G R R M Y Y O B R R M M Y B B B | |
P P P B B O O M Y G B O R M Y Y G B R R M M Y G G R | |
P P P O G G G M O O G Y R M B B B Y R R M M B Y Y R | |
P P P O R Y Y M O O R R Y M B B B R Y G M M B G G G | |
P P P O O R R M Y O B R R M Y Y B B B G M M Y G G G | |
P P P G Y Y Y M R R G Y O M R R B G G O M M B B B O | |
P P P O B B B M M Y O O B M Y Y Y G R R M G G G R R | |
P P P Y B B B M M Y R R B M O Y Y R R G M O O G G G | |
P P P Y Y Y O M M G Y O O M R R G B B B M R R G G B | |
P P P R R B B M M R R G B M O G G G Y B M O O Y Y Y | |
P P P Y Y Y B M M O Y B B M R R O O B G M R R G G G | |
P P P Y G G G M M Y G R R M O Y Y B R R M O O B B B | |
P P P G G G Y M M G O O Y M R R O B Y Y M R R B B B | |
P P P R R Y Y M M B R R Y M O B B B Y G M O O G G G | |
P P P G Y Y Y M M B G Y O M B B G R R O M B G R R O | |
P P P R R Y Y M M B R R Y M B B O O Y G M B O G G G | |
P P P O G G G M M O G Y R M B M O Y R R B B B Y Y R | |
P P P G G G O M M G R R O M B M R R Y O B B B Y Y Y | |
P P P O O Y Y M M O R R Y M B M R R Y G B B B G G G | |
P P P R R Y Y M M O R R Y M B M O O Y G B B B G G G | |
P P P R R Y Y M M R R O Y M B M O O Y G B B B G G G | |
P P P O R Y Y M M O R R Y M B M O R Y G B B B G G G | |
P P P O O Y Y M M R R O Y M B M R R Y G B B B G G G | |
P P P R G Y Y M M R R G Y M B M R G Y O B B B G O O | |
P P P R Y Y Y M M R R Y O M B M R O O G B B B G G G | |
P P P R O Y Y M M R R O Y M B M R O Y G B B B G G G | |
R R Y Y Y M M R R Y B M O P P P G B M O G G G B B O | |
R R O M M B B R R O O M B P P P G M Y B G G G Y Y Y | |
O G G R R Y Y O P G R R Y O P B G M Y M P B B B M M | |
O B B B Y Y Y O P B M Y M O P R R M M G P R R G G G | |
O B B B G G G O P B G M M O P R R M Y M P R R Y Y Y | |
P Y Y Y G G G P Y R G B M O P R R B B M O O R B M M | |
P B B B M R R P Y B M R R O P Y Y M M G O O Y G G G | |
P B B B G G G P Y B G M M O P Y Y R R M O O Y R R M | |
P Y Y Y M M B P Y R M B B O P R R M B G O O R G G G | |
P R R M M Y Y P R R B M Y O P B B M Y G O O B G G G | |
P Y Y Y B B B P Y O R R B M P M O R R G M M O G G G | |
P R R G G B B P R R Y G B M P M Y O G B M M Y Y O O | |
P R R G O B B P R R G O B M P M G O Y B M M G Y Y Y | |
P R R Y Y Y B P R R Y B B M P M O O B G M M O G G G | |
P R R B Y Y Y P R R B Y O M P M B B G O M M G G G O | |
P R R O O Y Y P R R B O Y M P M B B Y G M M B G G G | |
P Y Y Y G G G P Y O G R R M P M O B R R M M O B B B | |
P Y Y Y G G G P Y B G O O M P M B O R R M M B B R R | |
P Y Y Y G G G P Y B G R R M P M B O R R M M B B O O | |
P Y Y Y G G G P Y B G R R M P M B R R O M M B B O O | |
P Y Y Y G G G P Y B G O R M P M B O R R M M B B O R | |
P Y Y Y G G G P Y B G O O M P M B R R O M M B B R R | |
P Y Y Y G G G P Y B G R O M P M B R R O M M B B R O | |
P O G G Y Y Y P O O G Y R M P M B G R R M M B B B R | |
P R R G Y Y Y P R R G Y O M P M B G G O M M B B B O |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment