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

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

1 точки общо

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

 1class RunewordsCalculator:
 2    def __init__(self, runewords):
 3        self.runewords = dict(runewords)
 4        self.added_runes = []
 5        self.returned_runewords = set()
 6
 7    def add_runes(self, runes):
 8        self.added_runes.extend(runes)
 9
10    def _is_subsequence(self, recipe):
11        runes_iterator = iter(self.added_runes)
12        return all(rune in runes_iterator for rune in recipe)
13
14    def __iter__(self):
15        return self
16
17    def __next__(self):
18        if self.returned_runewords == set(self.runewords):
19            raise StopIteration
20
21        for name, recipe in self.runewords.items():
22            if name in self.returned_runewords:
23                continue
24
25            if self._is_subsequence(recipe):
26                self.returned_runewords.add(name)
27                return name
28
29        return None

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

OK

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