Предизвикателства > Runewords Calculator > Решения > Решението на Милица Лазарова

Резултати
1 точки от тестове
0 точки от учител

1 точки общо

6 успешни теста
1 неуспешни теста
Код

 1class RunewordsCalculator:
 2    def __init__(self, runewords):
 3        self.runewords = list(runewords.items())
 4        self.returned = set()
 5        self.runes = []
 6
 7    def add_runes(self, runes):
 8        self.runes.extend(runes)
 9
10    def __next__(self):
11        if len(self.returned) == len(self.runewords):
12            raise StopIteration
13
14        for name, recipe in self.runewords:
15            if name in self.returned:
16                continue
17            if self.cooked(recipe):
18                self.returned.add(name)
19                return name
20
21    def cooked(self, ingredients):
22        idxs = self.ingredientsIndexes(ingredients)
23
24        if idxs is None:
25            return False
26
27        self.runes = [value for i, value in enumerate(self.runes) if i not in idxs]
28        return True
29
30    def ingredientsIndexes(self, ingredients):
31        idxs = []
32        ingredients_idx = 0
33
34        if not len(ingredients):
35            return idxs
36
37        for i, curr in enumerate(self.runes):
38            if curr == ingredients[ingredients_idx]:
39                idxs.append(i)
40                ingredients_idx += 1
41            if ingredients_idx == len(ingredients):
42                return idxs
43
44        return None
45
46    def __iter__(self):
47        return self

.....F.
======================================================================
FAIL: test_returns_runewords_in_runeword_order (test.TestRunewordsCalculator.test_returns_runewords_in_runeword_order)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/tmp/test.py", line 55, in test_returns_runewords_in_runeword_order
self.assertEqual(next(iterator), "First")
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: None != 'First'

----------------------------------------------------------------------
Ran 7 tests in 0.001s

FAILED (failures=1)

Дискусия
История
Това решение има само една версия.