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

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

1 точки общо

7 успешни теста
0 неуспешни теста
Код (ᛚᛟᚾᛖ ᚹᛟᛚᚠꫂ ၴႅၴNi༼ つ ◕_◕ ༽つgga)

 1class RunewordsCalculator:
 2    def __init__(self, runes):
 3        self.runes = runes
 4        self.inventar = []
 5        self.returned = set()
 6
 7    def add_runes(self, runes):
 8        self.inventar.extend(runes)
 9
10    def _continuous(self, target):
11        if not target:
12            return True
13        
14        index = 0
15        for rune in self.inventar:
16            if rune == target[index]:
17                index += 1
18                if index == len(target):
19                    return True
20        return False
21
22    def __iter__(self):
23        return self
24    
25    def __next__(self):
26        if len(self.returned) == len(self.runes):
27            raise StopIteration("хвърля боба")
28        for name, comps in self.runes.items():
29            if name not in self.returned:
30                if self._continuous(comps):
31                    self.returned.add(name)
32                    return name
33        return None

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

OK

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