In [1]:
from ipythonblocks import BlockGrid as bg
from IPython.html.widgets import interact, interactive, fixed
from IPython.html import widgets
import random
import numpy as np
%matplotlib inline
import matplotlib.pyplot as plt
from IPython.display import Image


:0: FutureWarning: IPython widgets are experimental and may change in the future.

In [2]:
def array_city(x, p1, p2):
    p0 = 1-(p1+p2)
    p1 = 1-(p0+p2)
    p2 = 1-(p0+p1)
    grid = (np.random.choice([0, 1 , 2], size = (x, x), p = [p0, p1, p2]))
    return grid

In [3]:
def visualize(grid):
    g = bg(grid.shape[0], grid.shape[0])
    for row in range(g.height):
        for col in range(g.width):
            block = g[row,col]
            if grid[row,col] == 0:
                block.blue = 1000
                block.red = 1000
                block.green = 1000
            if grid[row,col] == 1:
                block.blue = 2000
                block.red = 0
                block.green = 0
            if grid[row,col] == 2:
                block.red = 2000
                block.green = 0
                block.blue = 0
    return g

In [4]:
def visualize_big(grid):
    g = bg(grid.shape[0], grid.shape[0],block_size = 5)
    for row in range(g.height):
        for col in range(g.width):
            block = g[row,col]
            if grid[row,col] == 0:
                block.blue = 1000
                block.red = 1000
                block.green = 1000
            if grid[row,col] == 1:
                block.blue = 2000
                block.red = 0
                block.green = 0
            if grid[row,col] == 2:
                block.red = 2000
                block.green = 0
                block.blue = 0
    return g

How does the amount of empty squares effect the number of loops required to reach satisfaction?

Example of high amount of empty squares


In [5]:
g = array_city(90,0.1,0.1)
visualize_big(g)


Out[5]:

Example of low amount of empty squares


In [7]:
g = array_city(90,0.45,0.45)
visualize_big(g)


Out[7]:
</