Предизвикателства > Runewords Calculator > Решения > Решението на Цветинка Хаджиева

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

1 точки общо

7 успешни теста
0 неуспешни теста
Код

 1class RunewordsCalculator:
 2    def __init__(self, runewords):
 3        self.runewords = list(runewords.items())
 4        self.available_runes = []
 5        self.used = set()
 6
 7    def add_runes(self, runes):
 8        self.available_runes.extend(runes)
 9
10    def __iter__(self):
11        return self
12
13    def __next__(self):
14        if len(self.used) == len(self.runewords):
15            raise StopIteration
16
17        for name, recipe in self.runewords:
18            if name not in self.used and self._can_build(recipe):
19                self.used.add(name)
20                return name
21
22        return None
23
24    def _can_build(self, recipe):
25        i = 0
26        for r in self.available_runes:
27            if i < len(recipe) and r == recipe[i]:
28                i += 1
29        return i == len(recipe)

.......
----------------------------------------------------------------------
Ran 7 tests in 0.000s

OK

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