Exemplo n.º 1
0
def testproducts():
    NFA.VISULANG = 5
    NFA.VISU_INITIAL_ARROW = False
    Char = NFA.spec("""
    0
    1
    0 1 1
    1 0 0
    """).map(g=int).named("Char").visu()
    _ = NFA.Stay
    C1 = Char.copy().map(g=lambda x: "b" if x else "a").named("C1")
    C2 = Char.copy().map(g=lambda x: "B" if x else "A").named("C2")
    from itertools import product
    NFA._sprod2_brutal(Char, Char, {(0, 0), (1, 1)}).visu()
    NFA._sprod2_brutal(Char, Char, set(product([0, 1], repeat=2))).visu()
    NFA._sprod2_brutal(Char, Char, {(_, 0), (_, 1), (1, _)}).visu()
    NFA._sprod2_brutal(Char, Char, {(_, 0), (_, 1), (1, 1)}).visu()
    NFA._sprod2_brutal(Char, Char,
                       {x
                        for y in [0, 1] for x in {(_, y), (y, _)}}).visu()
    (Char @ Char).visu()
    C1.visu()
    NFA._sprod2_brutal(Char, C1, set(product([0, 1, _], ["a", 'b', _]))).visu()
    (NFA.of_word([1, 2, 3]) @ NFA.of_word([_, _])).visu()

    NFA.sprod_brutal(Char, C1, svec=set(product([0, 1, _],
                                                ["a", 'b', _]))).visu()
    X = NFA.sprod_brutal(Char,
                         C1,
                         C2,
                         svec=set(
                             product([0, 1, _], ["a", 'b', _],
                                     ["A", "B", _]))).visu()
    Y = NFA.sprod_brutal(Char,
                         Char,
                         Char,
                         svec=set(product([0, 1, _], repeat=3))).visu()

    # on the fly version tests
    svec = NFA.shuffle([1, 1], [_]) | NFA.shuffle([0], [_, _])
    P = NFA.sprod_brutal(Char, Char, Char, svec=svec).visu()

    svec = NFA.shuffle([1, 1], [_]) | NFA.shuffle([0], [_, _])
    P = NFA.sprod(Char, Char, Char, svec=svec, record_steps=True).visu()

    P.visusteps(P._grow_step)

    svec = {(1, 1)}
    P = NFA.sprod_brutal(Char, Char, svec=svec, silent=[0]).visu()
    Q = NFA.sprod(Char, Char, svec=svec, silent=[0]).visu()
    NFA.VISULANG = 10
    NFA.VISU_INITIAL_ARROW = True