Skip to content

Instantly share code, notes, and snippets.

@kpace
Created April 3, 2015 11:15
Show Gist options
  • Save kpace/b1798ce413ff0f80b569 to your computer and use it in GitHub Desktop.
Save kpace/b1798ce413ff0f80b569 to your computer and use it in GitHub Desktop.
3rd homework
__author__ = 'kpace'
def fibonacci():
yield 1
prev = 0
after = 1
while True:
result = prev + after
prev = after
after = result
yield result
def primes():
yield 2
yield 3
pl = [2, 3]
pp = 3
while True:
pp += 2
for i in pl: # SQRT
if pp % i == 0:
break
else:
pl.append(pp)
yield pp
alphabets = {
'lat': 'abcdefghijklmnopqrstuvwxyz',
'bg': 'абвгдежзийклмнопрстуфхцчшщъьюя'
}
def alphabet(*, code='bg', letters=''):
seq = ''
if len(letters) > 0:
seq = letters
else:
seq = alphabets[code]
for el in seq:
yield el
no_argument_generators = {
'fibonacci': fibonacci(),
'primes': primes(),
}
def intertwined_sequences(specs, *, generator_definitions):
alph_gen = None
for spec in specs:
gen = None
if spec['sequence'] == 'alphabet':
if alph_gen is None:
code = spec.get('code', 'bg')
letters = spec.get('letters', '')
alph_gen = alphabet(code=code, letters=letters)
gen = alph_gen
else:
gen = no_argument_generators[spec['sequence']]
for _ in range(spec['length']):
yield next(gen)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment