Павел обнови решението на 30.03.2015 23:15 (преди около 10 години)
▸ Покажи разликите+import math
+from copy import copy
+from itertools import cycle
+
+
+def fibonacci():
+ n_th_minus_two = 1
+ n_th_minus_one = 1
+ yield n_th_minus_two
+ yield n_th_minus_one
+
+ while True:
+ fibonacci = n_th_minus_one + n_th_minus_two
+ yield fibonacci
+ n_th_minus_two = n_th_minus_one
+ n_th_minus_one = fibonacci
+
+
+def primes():
+ num = 2
+ yield num
+
+ while True:
+ num += 1
+ isprime = True
+ sqt = int(math.sqrt(num)) + 1
+
+ for i in range(2, sqt):
+ if num % i == 0:
+ isprime = False
+ break
+
+ if isprime:
+ yield num
+
+
+alphabets = {
+ "bg": (u"\u0430", 32, u"\u044B", u"\u044D"),
+ "lat": (u"\u0061", 26)
+}
+
+
+def alphabet(code=None, letters=None):
+ if letters is not None:
+
+ letters = iter(letters)
+ while True:
+ yield next(letters)
+
+ elif letters is None:
+
+ language = alphabets[code]
+ letter = ord(language[0])
+ yield chr(letter)
+ range_of_letters = language[1]
+
+ for i in range(range_of_letters):
+ if chr(letter) not in language:
+ yield chr(letter)
+ letter += 1
+
+
+def intertwined_sequences(item, generator_definitions=None):
+
+ generators = {}
+
+ def _interwined_sequences(item, generator_definitions):
+ item = iter(item)
+ while True:
+ current_item = next(item)
+
+ if current_item["sequence"] not in generators.keys():
+
+ if generator_definitions is not None \
+ and current_item["sequence"] \
+ in generator_definitions.keys():
+
+ current_item["sequence"] = \
+ generator_definitions[current_item["sequence"]]. \
+ __name__
+
+ if len((list(current_item.keys()))) == 2:
+ generators[current_item["sequence"]] = \
+ eval(current_item["sequence"])()
+ elif current_item["sequence"] not in generators.keys():
+
+ sequence = current_item["sequence"]
+ _current_item = copy(current_item)
+ del _current_item["sequence"]
+ del _current_item["length"]
+ generators[sequence] = eval(sequence)(**_current_item)
+
+ current_lenght = current_item["length"]
+ current_sequence = current_item["sequence"]
+ for i in range(current_lenght):
+ yield next(generators[current_sequence])
+
+ return _interwined_sequences(item, generator_definitions)
eval
-а спокойно ще ти донесе нула точки за решението, без значение колко теста минава.
Би ли ми казал, защо избора на eval() е лош. Питам за да разбера смисала а не като критика, че не ми даваш да го ползвам. Видях ,че може да заменя eval s globals и да ми върши същата работа, това ли имаше предвид ?