import rhinoscriptsyntax as rs
import random as ran


# delete everthing and start from scratch
allobjs = rs.AllObjects()
rs.DeleteObjects(allobjs)

#soft codings
bsize = 10           # side length of box
dist = 1             # distance between boxes
offs = bsize + dist  # offset of boxes  
num = 10            # number of boxes in einer reihe

# create a box
corners = [(0,0,0), (bsize,0,0), (bsize,bsize,0), (0,bsize,0),
           (0,0,bsize),(bsize,0,bsize),(bsize,bsize,bsize),(0,bsize,bsize)]

rs.EnableRedraw (False)
#gz = range(0,num**3,2)       #num**3 = num*num*num (diese Liste sagt alle geraden Zahlen bis 1000)

fibonacci = [5]
a, b = 0, 3
while b < (num ** 5):
    fibonacci.append(b)
    a, b = b, a+b

for i in range(num):
    for j in range(num):
        for p in range(num):
            # nur bei ungeraden Zahlen
            if not(i+j+p) in fibonacci:
                    box = rs.AddBox(corners)
                    rs.MoveObject(box, (i*offs,j*offs,p*offs))
                    #rs.ObjectColor(box,(i*(255/num),0,0))





"""
# mit else fuelle ich die leeren stellen auf mit der farbe rot in dem fall...
for i in range(num):
    for j in range(num):
        for p in range(num):
            myran = ran.randint(0,9)
            if (myran > 2):
                if ((i+j+p)%3) and ((i-j+p)%3) and ((i-j-p)%3):
                    box = rs.AddBox(corners)
                    rs.MoveObject(box, (i*offs,j*offs,p*offs))
                else:
                    box = rs.AddBox(corners)
                    rs.MoveObject(box, (i*offs,j*offs,p*offs))
                    rs.ObjectColor(box,(255,0,0,))
"""







"""
for i in range(num):                                           # for loop last
    for j in range(num):                                       # nestet for loop!!! secound
        if ((i+j)%3) and ((i-j)%3):                            # if contition wenn das dann das usw if not gegenteil % modulor Restwert
            box = rs.AddBox(corners)                           # macht eine box 
            rs.MoveObject(box, (i*offs,j*offs,0))         # offset the box mit distance

rs.EnableRedraw (True)
"""