Предизвикателства > Runewords Calculator > Решения > Решението на Георги Иванов

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

1 точки общо

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

 1class RunewordsCalculator:
 2    def __init__(self, runewords):
 3        self.runewords = runewords
 4        self.runes = []
 5        self.returned = set()
 6
 7    def add_runes(self, runes):
 8        self.runes.extend(runes)
 9
10    def __iter__(self):
11        return self
12
13    def __next__(self):
14        if len(self.returned) == len(self.runewords):
15            raise StopIteration
16
17        for name, recipe in self.runewords.items():
18            if name in self.returned:
19                continue
20            if self._can_craft(recipe):
21                self.returned.add(name)
22                return name
23
24        return None
25
26    def _can_craft(self, recipe):
27        index = 0
28        for rune in recipe:
29            while index < len(self.runes) and self.runes[index] != rune:
30                index += 1
31            if index >= len(self.runes):
32                return False
33            index += 1
34        return True

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

OK

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