Beispiel #1
0
def test_reverse_insertion_complete():
    n = 8
    count = 200
    for w in Permutation.symplectic_hecke_words(n):
        count -= 1
        if count == 0:
            break
        print(w)
        p, q = FState.insertion_tableaux(*w)
        print()
        print(p)
        print()
        print(q)
        v = FState.inverse_insertion(p, q)
        print()
        print(v)
        print()
        assert v == w
Beispiel #2
0
def test_reverse_insertion():
    w = (2, 1, 4, 1, 4, 3, 4, 1, 2)
    p, q = FState.insertion_tableaux(*w)
    r = (2, 3, {-9})

    assert q.values() == {1, -2, 3, -4, 5, 6, 7, -8, -9}

    assert p == Tableau({
        (1, 1): 2,
        (1, 2): 3,
        (1, 3): 4,
        (2, 2): 4,
        (2, 3): 5
    })

    s, box = FState(p).previous(r)
    assert box == (2, 3)
    assert s.tableau == Tableau({
        (1, 1): 2,
        (1, 2): 3,
        (1, 3): 4,
        (2, 2): 4,
        (4, 3): 5
    })
    assert s.outer == (4, 3)

    s, box = s.previous()
    assert box == (2, 2)
    assert s.tableau == Tableau({
        (1, 1): 2,
        (1, 2): 3,
        (1, 3): 4,
        (2, 2): 4,
        (2, 5): 3
    })
    assert s.outer == (2, 5)

    s, box = s.previous()
    assert box == (1, 2)
    assert s.tableau == Tableau({
        (1, 1): 2,
        (1, 2): 3,
        (1, 3): 4,
        (2, 2): 4,
        (1, 5): 2
    })
    assert s.outer == (1, 5)
    assert s.is_initial()

    assert FState.inverse_insertion(p, q) == w

    #
    #     22
    #   6  8 22
    # 2 4  6 20
    #
    w = (2, 6, 8, 22, 4, 6, 20, 6)
    p, q = FState.insertion_tableaux(*w)
    assert p == Tableau({
        (3, 3): 22,
        (2, 2): 6,
        (2, 3): 8,
        (2, 4): 22,
        (1, 1): 2,
        (1, 2): 4,
        (1, 3): 6,
        (1, 4): 20
    })
    assert FState.inverse_insertion(p, q) == w