Solució del lliurament 1 G30 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

Test seqint

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

>>> from seqint import seqint
>>> for n in seqint(iter([])):      # doctesttag:  +TAG=1_seqint
...     print(repr(n), end='-')

Cas mínim (subseqüència buida o sense xifres):

>>> for n in seqint(iter([-1])):     # doctesttag:  +TAG=1_seqint
...     print(repr(n), end='-')
0-

Una subseqüència amb les xifres 1 i 3:

>>> for n in seqint(iter([ 2, 5, -1 ])):  # doctesttag:  +TAG=1_seqint
...     print(repr(n), end='-')
25-

Tres subseqüències:

>>> for n in seqint(iter([ 6, 2, 7, 1, -1, 0, 3, 6, -1, -1])): # doctesttag:  +TAG=1_seqint
...     print(repr(n), end='-')
6271-36-0-
>>> for n in seqint(iter([-1, -1, -1, -1, -1])): # doctesttag:  +TAG=1_seqint
...     print(repr(n), end='-')
0-0-0-0-0-
>>> for n in seqint(iter([4, -1, 2, -1, 7, -1, 6, -1, 1, -1])): # doctesttag: +TAG=1_seqint
...     print(repr(n), end='-')
4-2-7-6-1-
>>> for n in seqint(iter([5,  5,  5,  5,  5, -1,
...                       4,  4,  4,  4, -1,
...                       3,  3,  3, -1,
...                       2,  2, -1,
...                       1, -1,
...                       0, -1])):   # doctesttag:  +TAG=1_seqint
...     print(repr(n), end='-')
55555-4444-333-22-1-0-

Cinc subseqüències:

>>> exemple2 = [ 7, 6, 9, 4, -1, 2, 5, 6, 2, 5, 1, -1, 2, 2, -1, 9, -1, -1]
>>> for n in seqint(iter(exemple2)): # doctesttag:  +TAG=1_seqint
...     print(repr(n), end='-')
...
7694-256251-22-9-0-

Test selelem

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

>>> import itertools
>>> from selelem import selelem
>>> sel = itertools.cycle([False, True])
>>> nombres = itertools.count(10)
>>> exemple = selelem(nombres, sel)
>>> for i in range(10):                      # doctesttag: +TAG=2_selelem
...     print(next(exemple), end='·')
...
11·13·15·17·19·21·23·25·27·29·
>>> seleccio = [False, True, True, True, False, True, False]
>>> nombres  = [   0,     1,     2,    3,    4,     5,    6,    7,    8,   9]
>>> # resultat:           1      2     3
>>> exemple = selelem(nombres, seleccio)
>>> for n in exemple:                        # doctesttag: +TAG=2_selelem
...     print(n, end='·')
...
1·2·3·5·
>>> sel = itertools.cycle([False, False, True, True])
>>> nombres = itertools.count(17)
>>> exemple = selelem(nombres, sel)
>>> for i in range(10):                     # doctesttag: +TAG=2_selelem
...     print(next(exemple), end='·')
...
19·20·23·24·27·28·31·32·35·36·
>>> sel= (True, False, False, False, False, False, False, False, True )
>>> for n in selelem(range(100), sel):      # doctesttag: +TAG=2_selelem
...     print(repr(n), end='·')
0·8·
>>> sel= (n % 8 == 0 for n in range(100))
>>> for c in selelem('Avinguda Diagonal, 647 08029 Barcelona', sel): # doctesttag: +TAG=2_selelem
...     print(repr(c), end='·')
'A'·' '·'l'·'8'·'c'·