Solució del lliurament 1 G20 d’Ampliació d’Informàtica

Organització:

Secció ETSEIB, Departament de Ciències de la Computació, UPC

Data:

11 d’octubre de 2023

Durada:

30 minuts

Copyright:

Reconeixement-CompartirIgual 3.0 No adaptada de Creative Commons

Jocs de proves

>>> import itertools

Tests exercici 1

Els exemples que compten per la nota són només els que van seguits de # doctesttag: +TAG=1_mact

>>> from mmact import max_min_actuals
>>> it = iter([22, 34, 55, 67, 90, 10, 10, -45, -60, -18, -90, 88, 55, 32, 44, 11, 39, 89, 50, 22])
>>> for elem in max_min_actuals(it):    # doctesttag: +TAG=1_mact
...     print(elem, end=',')
(22, 22),(22, 34),(22, 55),(22, 67),(22, 90),(10, 90),(10, 90),(-45, 90),(-60, 90),(-60, 90),(-90, 90),(-90, 90),(-90, 90),(-90, 90),(-90, 90),(-90, 90),(-90, 90),(-90, 90),(-90, 90),(-90, 90),
>>> for t in max_min_actuals(iter([0, 1, -2, 3, -4, 5, -6, -7])): # doctesttag: +TAG=1_mact
...   print(t, end=",")
(0, 0),(0, 1),(-2, 1),(-2, 3),(-4, 3),(-4, 5),(-6, 5),(-7, 5),
>>> for t in max_min_actuals(iter(range(-21, 21, 6))): # doctesttag: +TAG=1_mact
...   print(t, end=",")
(-21, -21),(-21, -15),(-21, -9),(-21, -3),(-21, 3),(-21, 9),(-21, 15),
>>> it = map(lambda x, y: x**y, itertools.cycle([-2, 0, 3]), itertools.count(0))
>>> list(itertools.islice(max_min_actuals(it), 20)) # doctesttag: +TAG=1_mact
[(1, 1), (0, 1), (0, 9), (-8, 9), (-8, 9), (-8, 243), (-8, 243), (-8, 243), (-8, 6561), (-512, 6561), (-512, 6561), (-512, 177147), (-512, 177147), (-512, 177147), (-512, 4782969), (-32768, 4782969), (-32768, 4782969), (-32768, 129140163), (-32768, 129140163), (-32768, 129140163)]
>>> list(itertools.islice(max_min_actuals(it), 40, 60, 5)) # doctesttag: +TAG=1_mact
[(-144115188075855872, 14130386091738734504764811067), (-9223372036854775808, 10301051460877537453973547267843), (-590295810358705651712, 278128389443693511257285776231761), (-37778931862957161709568, 202755595904452569706561330872953769)]

Tests exercici 2

Els exemples que compten per la nota són només els que van seguits de # doctesttag: +TAG=2_multseq

>>> from multseq import productes_seq
>>> it = productes_seq([5, 3, 2], [10, 20, 30])
>>> for r in it:  # doctesttag: +TAG=2_multseq
...     print(r, end=',')
50,60,60,
>>> next(productes_seq(iter([]), iter([])), 'final')  # doctesttag: +TAG=2_multseq
'final'
>>> it = productes_seq(iter(range(7)), iter(range(12)))
>>> for r in it:  # doctesttag: +TAG=2_multseq
...     print(r, end=',')
0,1,4,9,16,25,36,7,8,9,10,11,
>>> it = productes_seq(iter(range(11)), iter(range(3)))
>>> for r in it:  # doctesttag: +TAG=2_multseq
...     print(r, end=',')
0,1,4,3,4,5,6,7,8,9,10,
>>> it = productes_seq(iter([2]*10), iter([3]*5))
>>> for r in it:  # doctesttag: +TAG=2_multseq
...     print(r, end=',')
6,6,6,6,6,2,2,2,2,2,
>>> it = productes_seq(iter([2]*4), iter([5]*10))
>>> for r in it:  # doctesttag: +TAG=2_multseq
...     print(r, end=',')
10,10,10,10,5,5,5,5,5,5,
>>> it = productes_seq(range(12345670, 12345680), range(30))
>>> for r in it:  # doctesttag: +TAG=2_multseq
...     print(r, end=',')
0,12345671,24691344,37037019,49382696,61728375,74074056,86419739,98765424,111111111,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,
>>> it = productes_seq(iter([2]), range(100, 200, 11))
>>> for r in it:  # doctesttag: +TAG=2_multseq
...     print(r, end=',')
200,111,122,133,144,155,166,177,188,199,
>>> it = productes_seq(range(100, 200, 13), iter([7]))
>>> for r in it:  # doctesttag: +TAG=2_multseq
...     print(r, end=',')
700,113,126,139,152,165,178,191,
>>> it = productes_seq(range(-10000, 10000, 1), iter([1,2,-1]*5000))
>>> it2 = itertools.islice(it, 1990, 2000)
>>> for r in it2:  # doctesttag: +TAG=2_multseq
...     print(r, end=',')
-16020,8009,-8008,-16014,8006,-8005,-16008,8003,-8002,-16002,