Download this file
import pytest
from nerdle import *
@pytest.fixture
def solver():
s = Solver()
s.record("8+7*6=50", "aaaaiiii")
return s
def test1(solver):
assert solver.next_set([]) == solver.digits - ZERO
def test2(solver):
assert solver.next_set(['5']) == solver.digits | solver.operators
def test3(solver):
assert solver.next_set(['5', '-']) == solver.digits - ZERO
def test4(solver):
assert solver.next_set(['5', '5']) == solver.digits | solver.operators
def test5(solver):
assert solver.next_set(['5', '-', '5']) == solver.digits | solver.operators | EQUAL
def test6(solver):
assert solver.next_set(['5', '-', '5', '5']) == solver.digits | solver.operators | EQUAL
def test7(solver):
assert solver.next_set(['5', '5', '-', '5', '5' ]) == solver.digits | solver.operators | EQUAL
def test8(solver):
assert solver.next_set(['5', '5', '-', '5', '-', '5']) == EQUAL
def test9(solver):
assert solver.next_set(['5', '5', '-', '5', '-', '5', '=']) == solver.digits
def test10(solver):
assert solver.next_set(['5', '5', '-', '5', '-', '5', '=', '5']) == solver.digits
def test11(solver):
assert solver.next_set(['5', '-']) == solver.digits - ZERO
def test50():
s = Solver()
s.record("8+7*6=50", "aaaaiiii")
assert s.operators == OPERATORS - {'+', '*'}
assert s.digits == DIGITS - {'8', '7'}
assert s.corrects == [None] * 8
assert s.incorrects == [{'8'}, {'+'}, {'7'}, {'*'}, {'6'}, {'='}, {'5'}, {'0'}]
def test101():
s = Solver()
s.record("8+7*6=50", "caiiiiaa")
s.record("8-12/3=4", "caaiaiia")
assert (-12, "88*9=792") in s._solutions()
s.record("88*9=792", "caciciai")
assert s._solutions() == {(-16, '89*7=623'), (-16, '89*3=267') }
s.record("89*7=623", "ccciciii")
assert s._solutions() == {(-16, "89*3=267")}
def test102():
s = Solver()
s.record("8+7*6=50", "iaaaaiai")
assert (-16, "9-24/3=1") in s._solutions()
s.record("9-24/3=1", "iiiaaaci")
assert s._solutions() == {(-14, "100-98=2"), (-14, "100-92=8")}
s.record("100-98=2", "cccccccc")
assert s._solutions() == {(-14, "100-98=2")}
def test103():
s = Solver()
s.record("8+7*6=50", "iaaaacia")
s.record("129/3=43", "aaiaacca")
assert s.digits == {'4', '5', '8', '9'}
assert s.operators == {'-'}
assert (-10, "94-45=49") in s._solutions()
s.record("94-45=49", "ciciicca")
assert s._solutions() == {(-12, "98-54=44")}
def test104():
s = Solver()
s.record("8+7*6=50", "icaaaiia")
s.record("1+24/3=9", "iciaaaci")
s.record("2+11-5=8", "iccacicc")
assert s._solutions() == {(-16, "5+12-9=8")}
def test105():
s = Solver()
s.record("8+7*6=50", "iaaaicaa")
s.record("129/3=43", "iaacacia")
assert (1, "44//4=11") not in s._solutions()
def test106():
s = Solver()
s.record("8+7*6=50", "iiaaacia")
s.record("129/3=43", "aaaaicia")
assert s.score('54+34=88') < s.score('44+44=88')