示例#1
0
def test_clip():
    pat, _ = autoguess_life_file("lifep/breeder.lif")
    node = construct(pat)
    verify_clipped(node, 0, 0, 1600, 1600)
    verify_clipped(node, 0, 0, 160, 160)
    verify_clipped(node, 40, 40, 1600, 1600)
    verify_clipped(node, 40, 40, 160, 160)
示例#2
0
def test_gray():
    pat, _ = autoguess_life_file("lifep/breeder.lif")
    node = construct(pat)
    total_on = len(expand(node))
    for l in range(6):
        expansion = expand(node, level=l)
        gray_sum = sum([g for (x, y, g) in expansion])
        assert gray_sum == total_on / (2 ** (l * 2))
示例#3
0
def test_ffwd_large():
    pat, _ = autoguess_life_file("lifep/breeder.lif")
    ffwd(construct(pat), 64)
示例#4
0
def test_all_patterns():
    for pat_fname in os.listdir("lifep"):
        if pat_fname.endswith(".lif"):
            pat, _ = autoguess_life_file("lifep/" + pat_fname)
            verify_baseline(pat, 64)
示例#5
0
    # try to generate all 4x4 successors
    def product_tree(pieces):
        return [join(a, b, c, d) for a, b, c, d in product(pieces, repeat=4)]

    # check cache is working
    for i in range(2):
        boot_2x2 = product_tree([on, off])
        boot_4x4 = product_tree(boot_2x2)
        centres = {p: successor(p, 1) for p in boot_4x4}

        assert join.cache_info().currsize == 65536 + 16
        assert successor.cache_info().currsize == 65536


test_fname = "lifep/gun30.lif"
test_pattern, _ = autoguess_life_file(test_fname)


def test_advance():
    pat_node = construct(test_pattern)
    for i in range(32):
        node = advance(pat_node, i)
        validate_tree(node)

    for i in range(4):
        node, gens = ffwd(pat_node, i)
        validate_tree(node)

    assert advance(get_zero(8), 8).n == 0
    assert ffwd(get_zero(8), 4)[0].n == 0
示例#6
0
def load_life(fname):
    return lifeparsers.to_numpy(lifeparsers.autoguess_life_file(fname)[0])
示例#7
0
 def load_lif(fname):
     pat, comments = autoguess_life_file(fname)
     return construct(pat)