Solució del lliurament 1 G40 d’Informàtica

Organització:

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

Data:

15 de març de 2023

Durada:

50 minuts

Copyright:

Reconeixement-CompartirIgual 4.0 No adaptada de Creative Commons

Jocs de proves

Test exercici 1 : Codi secret

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

>>> from codisecret import revela
>>> it = revela('pata condiment mata rizzoto jornada serrall cama lira loteria latitud dau niu nas')
>>> next(it)  # doctesttag: +TAG=1_revela
'paco'
>>> next(it)  # doctesttag: +TAG=1_revela
'mari'
>>> for e in it:   # doctesttag: +TAG=1_revela
...     print(e, end='-')
...
jose-cali-lola-dani-nana-
>>> s = 'bo '*10
>>> it = revela('bo '*10)
>>> list(it)       # doctesttag: +TAG=1_revela
['bobo', 'bobo', 'bobo', 'bobo', 'bobo']
>>> it = revela('panxa '*7)
>>> list(it)       # doctesttag: +TAG=1_revela
['papa', 'papa', 'papa', 'papa']
>>> it = revela('xarxa vinagre oli egressar tenaç')
>>> next(it)    # doctesttag: +TAG=1_revela
'xavi'
>>> next(it)    # doctesttag: +TAG=1_revela
'oleg'
>>> next(it)    # doctesttag: +TAG=1_revela
'tete'
>>> next(it)      # doctesttag: +TAG=1_revela
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
>>> it = revela('mar gominola')
>>> list(it)   # doctesttag: +TAG=1_revela
['mago']
>>> it = revela('mar gominola pot')
>>> list(it)   # doctesttag: +TAG=1_revela
['mago', 'popo']

Test exercici 2 : Seleccio

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

>>> from vagons import Vago
>>> from viatge import seleccio
>>> it1 = list([Vago('RX67', 23, 10), Vago('CB25', 4, 10), Vago('YZ77', 4, 0), Vago('OO89', 4, 0), Vago('XY45', 0, 4)])
>>> it2 = seleccio(it1)
>>> next(it2)   # doctesttag: +TAG=2_seleccio
'YZ77'
>>> next(it2)   # doctesttag: +TAG=2_seleccio
'OO89'
>>> next(it2)   # doctesttag: +TAG=2_seleccio
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
>>> l = []
>>> for i in range(30):
...    l.append(Vago('VA-{:02d}'.format(i*2), 4, 0))
...    l.append(Vago('VA-{:02d}'.format(i*2+1), i, i))
...
>>> it1 = list(l)
>>> it2 = seleccio(it1)
>>> list(it2)   # doctesttag: +TAG=2_seleccio
['VA-00', 'VA-02', 'VA-04', 'VA-06', 'VA-08', 'VA-10', 'VA-12', 'VA-14', 'VA-16', 'VA-18', 'VA-20', 'VA-22', 'VA-24', 'VA-26', 'VA-28', 'VA-30', 'VA-32', 'VA-34', 'VA-36', 'VA-38', 'VA-40', 'VA-42', 'VA-44', 'VA-46', 'VA-48', 'VA-50', 'VA-52', 'VA-54', 'VA-56', 'VA-58']
>>> l = []
>>> for i in range(10):
...    l.append(Vago('VA-{:02d}'.format(i*3), 4, 0))
...    l.append(Vago('VA-{:02d}'.format(i*3+1), 3, 3))
...    l.append(Vago('VA-{:02d}'.format(i*3+2), 5, 5))
...
>>> it1 = list(l)
>>> it2 = seleccio(it1)
>>> list(it2)   # doctesttag: +TAG=2_seleccio
['VA-00', 'VA-03', 'VA-06', 'VA-09', 'VA-12', 'VA-15', 'VA-18', 'VA-21', 'VA-24', 'VA-27']

Test exercici 3 : Cadenes

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

>>> from encadena import cadenes
>>> it = cadenes([[12, 3, 14, 16], [18, 18, 1], [11, 12, 13, 14, 15]], 2)
>>> next(it)  # doctesttag: +TAG=3_cadenes
12
>>> next(it)  # doctesttag: +TAG=3_cadenes
14
>>> for e in it:    # doctesttag: +TAG=3_cadenes
...     print(e, end='-')
...
16-18-18-12-14-
>>> it = cadenes(([23, 4, 3], (27, 21, 6, 2), iter((1, 1, 1, 1, 1, 8, 10, 4))), 3)
>>> list(it)     # doctesttag: +TAG=3_cadenes
[3, 27, 21, 6]
>>> it = cadenes(((23, 16, 6), (21, 28, 3, 4)), 4)
>>> next(it)   # doctesttag: +TAG=3_cadenes
16
>>> next(it)   # doctesttag: +TAG=3_cadenes
28
>>> next(it)   # doctesttag: +TAG=3_cadenes
4
>>> next(it)   # doctesttag: +TAG=3_cadenes
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
>>> it = cadenes(([2, 23, 21, 4, 6], (21, 27, 3, 2)), 2)
>>> list(it)   # doctesttag: +TAG=3_cadenes
[2, 4, 6, 2]
>>> it = cadenes([[23, 4, 6]], 12)
>>> list(it)  # doctesttag: +TAG=3_cadenes
[]
>>> it = cadenes([[23, 4, 6]], 23)
>>> list(it)   # doctesttag: +TAG=3_cadenes
[23]
>>> it = cadenes([[23, 2, 23, 4, 23, 6]], 23)
>>> list(it)   # doctesttag: +TAG=3_cadenes
[23, 23, 23]