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

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

1 точки общо

6 успешни теста
1 неуспешни теста
Код

 1class RunewordsCalculator:
 2    def __init__(self, runewords):
 3        self.runewords = runewords
 4        self.runes = []
 5        self.runewords_made = 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.runewords_made) == len(self.runewords):
15            raise StopIteration
16        for name, required_runes in self.runewords.items():
17            if name in self.runewords_made:
18                continue
19            index = 0
20            indexes_to_remove = []
21            for rune in required_runes:
22                found = False
23                for i in range(index, len(self.runes)):
24                    if self.runes[i] == rune:
25                        found = True
26                        index = i + 1
27                        indexes_to_remove.append(i)
28                        break
29                if not found:
30                    break
31            if len(indexes_to_remove) == len(required_runes):
32                self.runewords_made.add(name)
33                for i in sorted(indexes_to_remove, reverse=True):
34                    self.runes.pop(i)
35                return name
36        return None

.....F.
======================================================================
FAIL: test_returns_runewords_in_runeword_order (test.TestRunewordsCalculator.test_returns_runewords_in_runeword_order)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/tmp/test.py", line 55, in test_returns_runewords_in_runeword_order
self.assertEqual(next(iterator), "First")
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: None != 'First'

----------------------------------------------------------------------
Ran 7 tests in 0.001s

FAILED (failures=1)

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