import numpy as np
%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns

import antipackage
import github.ellisonbg.misc.vizarray as va

"""
Explanation: Numpy Exercise 1
Imports
End of explanation
"""


def checkerboard(size):
    """Return a 2d checkboard of 0.0 and 1.0 as a NumPy array"""
    a=np.zeros((size,size))
    a[::2,::2]=1.0 #slices the array at every even index and makes it 1.0 in first, third,... rows
    a[1::2,1::2]=1.0 #slices the array at every odd index and makes it 1.0 in second, fourth,... rows
    return a
    raise NotImplementedError()

a = checkerboard(4)
assert a[0,0]==1.0
assert a.sum()==8.0
assert a.dtype==np.dtype(float)
assert np.all(a[0,0:5:2]==1.0)
assert np.all(a[1,0:5:2]==0.0)

b = checkerboard(5)
assert b[0,0]==1.0
assert b.sum()==13.0
assert np.all(b.ravel()[0:26:2]==1.0)
assert np.all(b.ravel()[1:25:2]==0.0)

"""
Explanation: Checkerboard
Write a Python function that creates a square (size,size) 2d Numpy array with the values 0.0 and 1.0:

Your function should work for both odd and even size.
The 0,0 element should be 1.0.
The dtype should be float.
End of explanation
"""


f=checkerboard(20)
va.set_block_size(10) #creating the checkerboard and setting pixel size to 10
va.enable()
f

va.disable()

assert True

"""
Explanation: Use vizarray to visualize a checkerboard of size=20 with a block size of 10px.
End of explanation
"""


g=checkerboard(27)
va.set_block_size(5) #same as above process, with different pixel size
va.enable()
g

va.disable()

assert True

"""
Explanation: Use vizarray to visualize a checkerboard of size=27 with a block size of 5px.
End of explanation
"""


