コード例 #1
0
def expI():
    t = Sum([Monomial(('+', 4, 1)),
             Expandable((Monomial(('+', 1, 0)),
                         Polynomial([Monomial(('-', 15, 1)),
                                     Monomial(('+', 8, 0)),
                                     Monomial(('-', 5, 1))])))])
    return Expression("I", t)
コード例 #2
0
    def __init__(self, numbers_to_use, **options):
        super().setup("minimal", **options)
        super().setup("numbers", nb=numbers_to_use, **options)
        super().setup("nb_variants", nb=numbers_to_use, **options)

        degrees1 = [0, 1]
        degrees2 = [0, 1]
        random.shuffle(degrees1)
        random.shuffle(degrees2)

        weighted_signs = [('+', 19), ('-', 1)]
        weighted_signs = [
            val for val, cnt in weighted_signs for i in range(cnt)
        ]
        signs = ['+', '-']

        self.expandable = Expandable(
            (Polynomial([
                Monomial(
                    (random.choice(weighted_signs), self.nb1, degrees1.pop())),
                Monomial((random.choice(signs), self.nb3, degrees1.pop()))
            ]),
             Polynomial([
                 Monomial((random.choice(weighted_signs), self.nb2,
                           degrees2.pop())),
                 Monomial((random.choice(signs), self.nb4, degrees2.pop()))
             ])))
        self.expression = Expression(shared.number_of_the_question,
                                     self.expandable)
        self.expression_str = self.expression.printed
        shared.number_of_the_question += 1
コード例 #3
0
ファイル: test_011_products.py プロジェクト: o2edu/mathmaker
def test_product_sum_2_3x_times_sum_minus4_6x_is_not_reducible():
    """Is this Product not reducible?"""
    p = Product([
        Sum([Item(2), Monomial(('+', 3, 1))]),
        Sum([Item(-4), Monomial(('+', 6, 1))])
    ])
    assert not p.is_reducible()
コード例 #4
0
def rubbish_polynomial():
    return Polynomial([
        Monomial(('+', 1, 2)),
        Monomial(('+', 7, 1)),
        Monomial(('-', 10, 2)),
        Monomial(('-', 9, 1)),
        Monomial(('+', 9, 2))
    ])
コード例 #5
0
def expP():
    t = Sum([Expandable((Monomial(('+', 7, 0)),
                         Sum([Monomial(('-', 6, 1)),
                              Monomial((6, 0))]))),
             BinomialIdentity((Monomial(('-', 10, 1)),
                               Monomial(('-', 3, 0))),
                              difference_square='OK')])
    return Expression("P", t)
コード例 #6
0
ファイル: test_041_equations.py プロジェクト: o2edu/mathmaker
def test_eq0_autoresolution():
    """Is this Equation correctly auto-resolved?"""
    eq = Equation((Polynomial([Monomial(
        ('+', 1, 1)), Monomial(('+', 7, 0))]), Item(3)),
                  number=1)
    assert eq.auto_resolution() == wrap_nb('$(\\text{E}_{1}): $'
                                           '\[x+7=3\]'
                                           '\[x=3-7\]'
                                           '\[x=-4\]')
コード例 #7
0
def test_complicated_sum_02():
    """Is this Sum correctly printed as (6+x)^{2}+12(2+11x)?"""
    assert Sum([
        BinomialIdentity((Monomial(('+', 6, 0)), Monomial(('+', 1, 1)))),
        Expandable(
            (Monomial(('+', 12, 0)),
             Sum([Polynomial([Monomial(('+', 2, 0)),
                              Monomial(('+', 11, 1))])])))
    ]).printed == wrap_nb('(6+x)^{2}+12(2+11x)')
コード例 #8
0
ファイル: test_041_equations.py プロジェクト: o2edu/mathmaker
def test_eq1_autoresolution():
    """Is this Equation correctly auto-resolved?"""
    eq = Equation((Polynomial([Monomial(
        ('-', 8, 0)), Monomial(('+', 1, 1))]), Item(-2)),
                  number=1)
    assert eq.auto_resolution() == wrap_nb('$(\\text{E}_{1}): $'
                                           '\[-8+x=-2\]'
                                           '\[x=-2+8\]'
                                           '\[x=6\]')
コード例 #9
0
ファイル: test_041_equations.py プロジェクト: o2edu/mathmaker
def test_eq12_autoresolution():
    """Is this Equation correctly auto-resolved?"""
    eq = Equation((Polynomial([Monomial(
        ('+', 2, 1)), Monomial(('+', 1, 0))]), Item(1)),
                  number=1)
    assert eq.auto_resolution() == wrap_nb('$(\\text{E}_{1}): $'
                                           '\[2x+1=1\]'
                                           '\[2x=1-1\]'
                                           '\[2x=0\]'
                                           '\[x=0\]')
コード例 #10
0
ファイル: test_041_equations.py プロジェクト: o2edu/mathmaker
def test_eq7_autoresolution():
    """Is this Equation correctly auto-resolved?"""
    eq = Equation((Polynomial([Monomial(
        ('+', 19, 0)), Monomial(('+', 3, 1))]), Monomial(('+', 2, 1))),
                  number=1)
    assert eq.auto_resolution() == wrap_nb('$(\\text{E}_{1}): $'
                                           '\[19+3x=2x\]'
                                           '\[3x-2x=-19\]'
                                           '\[(3-2)x=-19\]'
                                           '\[x=-19\]')
コード例 #11
0
ファイル: test_041_equations.py プロジェクト: o2edu/mathmaker
def test_eq6_autoresolution():
    """Is this Equation correctly auto-resolved?"""
    eq = Equation((Polynomial([Monomial(
        ('+', 2, 1)), Monomial(('+', 3, 0))]), Item(8)),
                  number=1)
    assert eq.auto_resolution() == wrap_nb('$(\\text{E}_{1}): $'
                                           '\[2x+3=8\]'
                                           '\[2x=8-3\]'
                                           '\[2x=5\]'
                                           '\[x=\\frac{5}{2}\]')
コード例 #12
0
ファイル: test_041_equations.py プロジェクト: o2edu/mathmaker
def test_eq2_autoresolution():
    """Is this Equation correctly auto-resolved?"""
    eq = Equation(
        (Item(-5), Polynomial([Monomial(
            ('+', 1, 1)), Monomial(('+', 3, 0))])),
        number=1)
    assert eq.auto_resolution() == wrap_nb('$(\\text{E}_{1}): $'
                                           '\[-5=x+3\]'
                                           '\[x=-5-3\]'
                                           '\[x=-8\]')
コード例 #13
0
ファイル: test_041_equations.py プロジェクト: o2edu/mathmaker
def test_eq14_autoresolution():
    """Is this Equation correctly auto-resolved?"""
    eq = Equation((Sum([Monomial(('+', 3, 0)),
                        Monomial(('+', 10, 1))]), Monomial(('+', 10, 1))))
    assert eq.auto_resolution() == wrap_nb('$(\\text{E}): $'
                                           '\[3+10x=10x\]'
                                           '\[10x-10x=-3\]'
                                           '\[(10-10)x=-3\]'
                                           '\[0x=-3\]'
                                           '\[0=-3\]'
                                           'This equation has no solution.'
                                           '\\newline ')
コード例 #14
0
ファイル: test_041_equations.py プロジェクト: o2edu/mathmaker
def test_eq21_autoresolution():
    """Is this Equation correctly auto-resolved?"""
    eq = Equation((Sum([Monomial(('-', 1, 0)),
                        Monomial(('-', 4, 1))]), Monomial(('-', 9, 0))))
    assert eq.auto_resolution() == wrap_nb('$(\\text{E}): $'
                                           '\[-1-4x=-9\]'
                                           '\[-4x=-9+1\]'
                                           '\[-4x=-8\]'
                                           '\[x=\\frac{-8}{-4}\]'
                                           '\[x=\\frac{+\\bcancel{4}\\times 2}'
                                           '{+\\bcancel{4}}\]'
                                           '\[x=2\]')
コード例 #15
0
ファイル: test_041_equations.py プロジェクト: o2edu/mathmaker
def test_eq11_autoresolution():
    """Is this Equation correctly auto-resolved?"""
    eq = Equation((Polynomial([Monomial(
        ('+', 5, 0)), Monomial(
            ('-', 1, 1))]), Polynomial([Monomial(('+', 5, 1))])),
                  number=1)
    assert eq.auto_resolution() == wrap_nb('$(\\text{E}_{1}): $'
                                           '\[5-x=5x\]'
                                           '\[-x-5x=-5\]'
                                           '\[(-1-5)x=-5\]'
                                           '\[-6x=-5\]'
                                           '\[x=\\frac{-5}{-6}\]'
                                           '\[x=\\frac{5}{6}\]')
コード例 #16
0
ファイル: test_011_products.py プロジェクト: o2edu/mathmaker
def big_product():
    s = Sum(['x', 3])
    s.set_exponent(3)
    p = Product(Monomial((1, 2)))
    p.set_exponent(3)
    p1 = Product([2, 3])
    p1.set_exponent(3)
    return Product([
        Monomial((2, 1)),
        Monomial((-4, 2)), s,
        Item(5), p,
        Item(('+', -1, 2)), p1
    ])
コード例 #17
0
ファイル: test_041_equations.py プロジェクト: o2edu/mathmaker
def test_eq8_autoresolution():
    """Is this Equation correctly auto-resolved?"""
    eq = Equation(
        (Polynomial([Monomial(
            ('+', 4, 1)), Monomial(('+', 2, 0))]),
         Polynomial([Monomial(
             ('-', 3, 0)), Monomial(('+', 2, 1))])),
        number=1)
    assert eq.auto_resolution() == wrap_nb('$(\\text{E}_{1}): $'
                                           '\[4x+2=-3+2x\]'
                                           '\[4x-2x=-3-2\]'
                                           '\[(4-2)x=-5\]'
                                           '\[2x=-5\]'
                                           '\[x=-\\frac{5}{2}\]')
コード例 #18
0
def expN():
    t = Sum([Expandable((Monomial(('-', 1, 0)),
                         Expandable((Sum([Monomial((2, 1)),
                                          Monomial((9, 0))]),
                                     Sum([Monomial((-3, 1)),
                                          Monomial((-7, 0))]))))),
             Expandable((Monomial((4, 0)),
                         Sum([Monomial((-3, 1)),
                              Monomial((9, 0))]))),
             Monomial((13, 0))])
    return Expression("N", t)
コード例 #19
0
def complicated_sum_to_reduce():
    return Sum([
        Monomial(('+', 3, 1)),
        Item(4),
        Sum([
            Monomial(('+', 3, 1)),
            Monomial(('+', 5, 2)),
            Product([Item(-7), Item('a'), Item('b')])
        ]),
        Product([Item('-a'), Item('b')]),
        Monomial(('+', 5, 2)),
        Item(2),
        Monomial(('-', 2, 1)),
        Product([Item(2), Item('a'), Item('b')])
    ])
コード例 #20
0
ファイル: test_041_equations.py プロジェクト: o2edu/mathmaker
def test_eq9_autoresolution():
    """Is this Equation correctly auto-resolved?"""
    eq = Equation(
        (Polynomial([Monomial(
            ('-', 2, 1)), Monomial(('+', 5, 0))]),
         Polynomial([Monomial(
             ('+', 3, 1)), Monomial(('-', 4, 0))])),
        number=1)
    assert eq.auto_resolution() == wrap_nb('$(\\text{E}_{1}): $'
                                           '\[-2x+5=3x-4\]'
                                           '\[-2x-3x=-4-5\]'
                                           '\[(-2-3)x=-9\]'
                                           '\[-5x=-9\]'
                                           '\[x=\\frac{-9}{-5}\]'
                                           '\[x=\\frac{9}{5}\]')
コード例 #21
0
ファイル: test_041_equations.py プロジェクト: o2edu/mathmaker
def test_eq32_autoresolution():
    """Is this Equation correctly auto-resolved?"""
    eq = Equation((Monomial(('+', 1, 1)), SquareRoot(Item(16))))
    assert eq.auto_resolution(dont_display_equations_name=True,
                              decimal_result=2) == \
        wrap_nb('\[x=\\sqrt{\mathstrut 16}\]'
                '\[x=4\]')
コード例 #22
0
ファイル: test_041_equations.py プロジェクト: o2edu/mathmaker
def test_eq13_autoresolution():
    """Is this Equation correctly auto-resolved?"""
    eq = Equation(
        (Polynomial([Monomial(
            ('+', 1, 1)), Monomial(('+', 5, 0))]),
         Polynomial([Monomial(
             ('+', 1, 1)), Monomial(('+', 2, 0))])),
        number=1)
    assert eq.auto_resolution() == wrap_nb('$(\\text{E}_{1}): $'
                                           '\[x+5=x+2\]'
                                           '\[x-x=2-5\]'
                                           '\[(1-1)x=-3\]'
                                           '\[0x=-3\]'
                                           '\[0=-3\]'
                                           'This equation has no solution.'
                                           '\\newline ')
コード例 #23
0
ファイル: test_041_equations.py プロジェクト: o2edu/mathmaker
def test_eq28_autoresolution():
    """Is this Equation correctly auto-resolved?"""
    eq = Equation((Monomial(('+', 8, 1)), Item(6)), number=1)
    assert eq.auto_resolution(decimal_result=2) == \
        wrap_nb('$(\\text{E}_{1}): $'
                '\[8x=6\]'
                '\[x=\\frac{6}{8}\]'
                '\[x=0.75\]')
コード例 #24
0
ファイル: test_041_equations.py プロジェクト: o2edu/mathmaker
def test_eq27_autoresolution():
    """Is this Equation correctly auto-resolved?"""
    eq = Equation((Monomial(('+', 3, 1)), Item(1)), number=1)
    assert eq.auto_resolution(decimal_result=2) == \
        wrap_nb('$(\\text{E}_{1}): $'
                '\[3x=1\]'
                '\[x=\\frac{1}{3}\]'
                '\[x\\simeq0.33\]')
コード例 #25
0
ファイル: test_041_equations.py プロジェクト: o2edu/mathmaker
def test_eq23_autoresolution():
    """Is this Equation correctly auto-resolved?"""
    eq = Equation(
        (Item(5),
         Sum([
             Expandable(
                 (Item(1), Sum([Monomial(('+', 1, 1)),
                                Monomial(('-', 2, 0))]))),
             Item(7)
         ])),
        number=1)
    assert eq.auto_resolution() == wrap_nb('$(\\text{E}_{1}): $'
                                           '\[5=(x-2)+7\]'
                                           '\[5=x-2+7\]'
                                           '\[5=x+5\]'
                                           '\[x=5-5\]'
                                           '\[x=0\]')
コード例 #26
0
ファイル: test_041_equations.py プロジェクト: o2edu/mathmaker
def test_eq10_autoresolution():
    """Is this Equation correctly auto-resolved?"""
    eq = Equation(
        (Polynomial([Monomial(
            ('+', 5, 0)), Monomial(('+', 4, 1))]),
         Polynomial([Monomial(
             ('-', 20, 1)), Monomial(('+', 3, 0))])),
        number=1)
    assert eq.auto_resolution() == wrap_nb('$(\\text{E}_{1}): $'
                                           '\[5+4x=-20x+3\]'
                                           '\[4x+20x=3-5\]'
                                           '\[(4+20)x=-2\]'
                                           '\[24x=-2\]'
                                           '\[x=-\\frac{2}{24}\]'
                                           '\[x=-\\frac{\\bcancel{2}}'
                                           '{\\bcancel{2}\\times 12}\]'
                                           '\[x=-\\frac{1}{12}\]')
コード例 #27
0
ファイル: test_041_equations.py プロジェクト: o2edu/mathmaker
def test_eq5_autoresolution():
    """Is this Equation correctly auto-resolved?"""
    eq = Equation((Monomial(('+', 12, 1)), Item(8)), number=1)
    assert eq.auto_resolution() == wrap_nb('$(\\text{E}_{1}): $'
                                           '\[12x=8\]'
                                           '\[x=\\frac{8}{12}\]'
                                           '\[x=\\frac{\\bcancel{4}\\times 2}'
                                           '{\\bcancel{4}\\times 3}\]'
                                           '\[x=\\frac{2}{3}\]')
コード例 #28
0
ファイル: test_041_equations.py プロジェクト: o2edu/mathmaker
def test_eq17_autoresolution():
    """Is this Equation correctly auto-resolved?"""
    eq = Equation(
        (Expandable((Item(-1), Sum([Monomial(
            (-11, 1)), Item(-10)]))),
         Sum([
             Expandable((Item(1), Sum([Item(-15), Monomial((12, 1))]))),
             Item(-1)
         ])),
        number=1)
    assert eq.auto_resolution() == wrap_nb('$(\\text{E}_{1}): $'
                                           '\[-(-11x-10)=(-15+12x)-1\]'
                                           '\[11x+10=-15+12x-1\]'
                                           '\[11x+10=-15-1+12x\]'
                                           '\[11x+10=-16+12x\]'
                                           '\[11x-12x=-16-10\]'
                                           '\[(11-12)x=-26\]'
                                           '\[-x=-26\]'
                                           '\[x=26\]')
コード例 #29
0
ファイル: test_041_equations.py プロジェクト: o2edu/mathmaker
def test_eq16_autoresolution():
    """Is this Equation correctly auto-resolved?"""
    eq = Equation((Sum([
        Monomial(('+', 9, 1)),
        Expandable((Monomial(
            ('+', 9, 0)), Sum([Monomial(
                ('-', 4, 0)), Monomial(('-', 1, 1))])))
    ]), Item(8)),
                  number=1)
    assert eq.auto_resolution() == wrap_nb('$(\\text{E}_{1}): $'
                                           '\[9x+9(-4-x)=8\]'
                                           '\[9x+9\\times (-4)+9\\times '
                                           '(-x)=8\]'
                                           '\[9x-36-9x=8\]'
                                           '\[(9-9)x-36=8\]'
                                           '\[0x-36=8\]'
                                           '\[-36=8\]'
                                           'This equation has no solution.'
                                           '\\newline ')
コード例 #30
0
ファイル: test_041_equations.py プロジェクト: o2edu/mathmaker
def test_eq25_autoresolution():
    """Is this Equation correctly auto-resolved?"""
    eq = Equation((Item(
        ('+', 5, 2)), Sum([Item(
            ('+', 4, 2)), Monomial(('+', 1, 1))])),
                  number=1)
    assert eq.auto_resolution(dont_display_equations_name=True) == \
        wrap_nb('\[5^{2}=4^{2}+x\]'
                '\[25=16+x\]'
                '\[x=25-16\]'
                '\[x=9\]')