import numpy as np

def horiz(w, p, xo, yo):
    n = np.arange(0, w, p)
    out = ""
    for i in n:
        out += f"{xo} {yo+i} 0\n"
        out += f"{xo+w} {yo+i} 0\n"
        out += f"write\n"
    return out
    
def vert(w, p, xo, yo):
    n = np.arange(0, w, p)
    out = ""
    for i in n:
        out += f"{xo+i} {yo} 0\n"
        out += f"{xo+i} {yo+w} 0\n"
        out += f"write\n"
    return out

def board2x2(w, p, xo, yo):
    out = ""
    out += horiz(w, p, xo, yo)
    out += vert(w, p, xo+w, yo)
    out += vert(w, p, xo, yo+w)
    out += horiz(w, p, xo+w, yo+w)
    return out
    
def lin45(w, p, xo, yo):
    n = np.arange(0, w, p)
    out = ""
    for i in n:
        out += f"{xo} {yo+i} 0\n"
        out += f"{xo+w-i} {yo+w} 0\n"
        out += f"write\n"
        
        out += f"{xo+i} {yo} 0\n"
        out += f"{xo+w} {yo+w-i} 0\n"
        out += f"write\n"
    return out
    
    
def lin135(w, p, xo, yo):
    n = np.arange(0, w, p)
    out = ""
    for i in n:
        out += f"{xo+i} {yo+w} 0\n"
        out += f"{xo+w} {yo+i} 0\n"
        out += f"write\n"
        
        out += f"{xo} {yo+w-i} 0\n"
        out += f"{xo+w-i} {yo} 0\n"
        out += f"write\n"
    return out

def board2x2_45(w, p, xo, yo):
    out = ""
    out += lin45(w, p, xo, yo)
    out += lin135(w, p, xo+w, yo)
    out += lin135(w, p, xo, yo+w)
    out += lin45(w, p, xo+w, yo+w)
    return out

with open("out.gwl", "w") as f:
    w = 50
    ps = [.1, .2, .3, .4, .5, .6, .7][::-1]
    out = ""
    for i,p in enumerate(ps):
        out += board2x2(w, p, 110 * i, 0)
        
    for i,p in enumerate(ps):
        out += board2x2_45(w, p, 110 * i, 110)
    f.write(out)
   
