>>> from itertools import islice ============================================================================ Test nombres Catalan Els exemples que compten per la nota són només els que van seguits de ``# doctesttag: +TAG=1_catalan`` >>> from catalan import catalan >>> it = catalan(13) >>> for i in range(13): # doctesttag: +TAG=1_catalan ... print(i, ' - ', next(it)) ... 0 - 1 1 - 1 2 - 2 3 - 5 4 - 14 5 - 42 6 - 132 7 - 429 8 - 1430 9 - 4862 10 - 16796 11 - 58786 12 - 208012 >>> for c in catalan(16): # doctesttag: +TAG=1_catalan ... print(c, end='-') 1-1-2-5-14-42-132-429-1430-4862-16796-58786-208012-742900-2674440-9694845- >>> for i, c in islice(enumerate(catalan(21)), 17, 20) : # doctesttag: +TAG=1_catalan ... print('{} -- {}'.format(i,c)) 17 -- 129644790 18 -- 477638700 19 -- 1767263190 >>> it = map(int, catalan(16)) >>> for i in range(16): # doctesttag: +TAG=1_catalan ... print(i, ' - ', next(it)) ... 0 - 1 1 - 1 2 - 2 3 - 5 4 - 14 5 - 42 6 - 132 7 - 429 8 - 1430 9 - 4862 10 - 16796 11 - 58786 12 - 208012 13 - 742900 14 - 2674440 15 - 9694845 >>> for c in map(int, catalan(12)): # doctesttag: +TAG=1_catalan ... print(c, end='-') 1-1-2-5-14-42-132-429-1430-4862-16796-58786- >>> for i, c in islice(enumerate(map(int, catalan(21))), 18, 21) : # doctesttag: +TAG=1_catalan ... print('{} -- {}'.format(i,c)) 18 -- 477638700 19 -- 1767263190 20 -- 6564120420 ============================================================================ Test dies Els exemples que compten per la nota són només els que van seguits de ``# doctesttag: +TAG=2_dies`` >>> from dies import dies_setmana >>> ndies= ['dilluns','dimarts','dimecres','dijous','divendres', ... 'dissabte','diumenge'] >>> dies = [28, 29, 30, 1, 2] >>> it = dies_setmana(ndies, 4, dies) >>> next(it) # doctesttag: +TAG=2_dies ('divendres', 28) >>> next(it) # doctesttag: +TAG=2_dies ('dissabte', 29) >>> next(it) # doctesttag: +TAG=2_dies ('diumenge', 30) >>> next(it) # doctesttag: +TAG=2_dies ('dilluns', 1) >>> next(it) # doctesttag: +TAG=2_dies ('dimarts', 2) >>> next(it,'final') 'final' >>> import itertools >>> dies = itertools.chain(range(3, 32), range(1, 26)) >>> it = dies_setmana(ndies, 4, dies) >>> next(it) ('divendres', 3) >>> next(it) ('dissabte', 4) >>> next(it) ('diumenge', 5) >>> next(it) ('dilluns', 6) >>> it2 = itertools.islice(it, 22, 28) >>> for d in it2: # doctesttag: +TAG=2_dies ... print(d, end='-') ('dimecres', 29)-('dijous', 30)-('divendres', 31)-('dissabte', 1)-('diumenge', 2)-('dilluns', 3)- >>> for d in itertools.islice(it, 20, None): # doctesttag: +TAG=2_dies ... print(d, end='-') ('dilluns', 24)-('dimarts', 25)- Fem un calendari a partir de l'iterador. >>> from functools import reduce >>> import operator >>> n_set = {'dilluns': 0,'dimarts': 1,'dimecres': 2,'dijous': 3, ... 'divendres': 4,'dissabte':5 ,'diumenge': 6} >>> def calendari(it): ... def str_dia(dia): ... dset, dmes = dia ... return '{:2d} '.format(dmes) + ('\n' if dset == 'diumenge' else '') ... s = 'dl dt dc dj dv ds dd \n' ... dia = next(it) ... s += ' ' * n_set[dia[0]] + str_dia(dia) ... s += reduce(operator.add, map(str_dia, it)) ... return s >>> >>> dies = itertools.chain(range(1, 32), range(1, 31)) >>> it = dies_setmana(ndies, 3, dies) >>> print(calendari(it)) # doctesttag: +TAG=2_dies dl dt dc dj dv ds dd 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30