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