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

Organització:

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

Data:

13 de març de 2024

Durada:

45 minuts

Copyright:

Reconeixement-CompartirIgual 4.0 No adaptada de Creative Commons

Jocs de proves

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

>>> import itertools

Tests transforma_seq

>>> from valors import transforma_seq
>>> it = transforma_seq(iter([2, 1]*4), 10)
>>> for v in it:     # doctesttag: +TAG=1_transforma_seq
...    print(v, end=";")
2;1;2;1;2;1;2;1;
>>> it = transforma_seq(iter([2]*40), 10)
>>> for v in it:     # doctesttag: +TAG=1_transforma_seq
...    print(v, end=";")
2;
>>> it = transforma_seq(iter([2, 10]*5), 7)
>>> for v in it:     # doctesttag: +TAG=1_transforma_seq
...    print(v, end=";")
2;6.0;10;6.0;2;6.0;10;6.0;2;6.0;10;6.0;2;6.0;10;6.0;2;6.0;10;
>>> it = transforma_seq(iter([1, 3, 1, 6, 8, 11, 8, 11]), 4)
>>> for v in it:     # doctesttag: +TAG=1_transforma_seq
...    print(v, end=";")
1;3;1;3.5;6;8;11;8;11;
>>> it = transforma_seq(iter([1, 2, 1, 2, 3, 6, 10, 2, 2, 7]), 2)
>>> for v in it:     # doctesttag: +TAG=1_transforma_seq
...    print(v, end=";")
1;2;1;2;3;4.5;6;8.0;10;6.0;2;4.5;7;
>>> it = transforma_seq(iter([2, 2, 2, 10, 10, 3]*6), 7)
>>> for v in it:     # doctesttag: +TAG=1_transforma_seq
...    print(v, end=";")
2;6.0;10;3;2;6.0;10;3;2;6.0;10;3;2;6.0;10;3;2;6.0;10;3;2;6.0;10;3;
>>> it = transforma_seq(iter([-10, 10]), 7)
>>> for v in it:     # doctesttag: +TAG=1_transforma_seq
...    print(v, end=";")
-10;0.0;10;
>>> it = transforma_seq((x*x for x in range(-10, 11, 2)), 8)
>>> for v in it:     # doctesttag: +TAG=1_transforma_seq
...    print(v, end=";")
100;82.0;64;50.0;36;26.0;16;10.0;4;0;4;10.0;16;26.0;36;50.0;64;82.0;100;
>>> it = transforma_seq(itertools.chain([4],itertools.repeat(8)), 3.2)
>>> list(itertools.islice(it, 2))     # doctesttag: +TAG=1_transforma_seq
[4, 6.0]
>>> it = transforma_seq(itertools.count(5), 0.5)
>>> for v in range(10):     # doctesttag: +TAG=1_transforma_seq
...    print(next(it), end=";")
5;5.5;6;6.5;7;7.5;8;8.5;9;9.5;

Tests per a interval

>>> from concerts import interval
>>> interval(2023, 5)     # doctesttag: +TAG=2_interval
datetime.timedelta(days=91)
>>> interval(2024, 8)     # doctesttag: +TAG=2_interval
datetime.timedelta(days=52, seconds=12342, microseconds=857143)
>>> interval(2000, 12)     # doctesttag: +TAG=2_interval
datetime.timedelta(days=33, seconds=15709, microseconds=90909)
>>> interval(2001, 2)     # doctesttag: +TAG=2_interval
datetime.timedelta(days=364)
>>> interval(1992, 25)     # doctesttag: +TAG=2_interval
datetime.timedelta(days=15, seconds=18000)
>>> interval(1992, 24)     # doctesttag: +TAG=2_interval
datetime.timedelta(days=15, seconds=75130, microseconds=434783)
>>> interval(2032, 52)     # doctesttag: +TAG=2_interval
datetime.timedelta(days=7, seconds=13552, microseconds=941176)
>>> interval(2032, 35)     # doctesttag: +TAG=2_interval
datetime.timedelta(days=10, seconds=63529, microseconds=411765)
>>> interval(2008, 100)     # doctesttag: +TAG=2_interval
datetime.timedelta(days=3, seconds=59345, microseconds=454545)
>>> interval(2008, 101)     # doctesttag: +TAG=2_interval
datetime.timedelta(days=3, seconds=56160)

Tests per a distribueix_concerts

>>> from datetime import timedelta
>>> from concerts import distribueix_concerts
>>> it = distribueix_concerts(2023, 5, timedelta(days=91))
>>> list(it)     # doctesttag: +TAG=3_distribueix_concerts
[(1, 1), (2, 4), (2, 7), (1, 10), (31, 12)]
>>> it = distribueix_concerts(2024, 8, timedelta(days=52, seconds=12342, microseconds=857143))
>>> list(it)     # doctesttag: +TAG=3_distribueix_concerts
[(1, 1), (22, 2), (14, 4), (5, 6), (28, 7), (18, 9), (9, 11), (31, 12)]
>>> it = distribueix_concerts(2000, 12, timedelta(days=33, seconds=15709, microseconds=90909))
>>> list(it)    # doctesttag: +TAG=3_distribueix_concerts
[(1, 1), (3, 2), (7, 3), (10, 4), (13, 5), (15, 6), (18, 7), (20, 8), (22, 9), (26, 10), (28, 11), (31, 12)]
>>> it = distribueix_concerts(2001, 2, timedelta(days=364))
>>> list(it)    # doctesttag: +TAG=3_distribueix_concerts
[(1, 1), (31, 12)]
>>> it = distribueix_concerts(1992, 25, timedelta(days=15, seconds=18000))
>>> list(it)    # doctesttag: +TAG=3_distribueix_concerts
[(1, 1), (16, 1), (31, 1), (16, 2), (2, 3), (17, 3), (1, 4), (16, 4), (2, 5), (17, 5), (1, 6), (16, 6), (2, 7), (17, 7), (1, 8), (16, 8), (31, 8), (16, 9), (1, 10), (16, 10), (31, 10), (15, 11), (1, 12), (16, 12), (31, 12)]
>>> it = distribueix_concerts(1992, 24, timedelta(days=15, seconds=75130, microseconds=434783))
>>> list(it)    # doctesttag: +TAG=3_distribueix_concerts
[(1, 1), (17, 1), (2, 2), (18, 2), (4, 3), (20, 3), (5, 4), (21, 4), (7, 5), (23, 5), (8, 6), (24, 6), (9, 7), (25, 7), (10, 8), (26, 8), (11, 9), (27, 9), (13, 10), (29, 10), (13, 11), (29, 11), (15, 12), (31, 12)]
>>> it = distribueix_concerts(2032, 52, timedelta(days=7, seconds=13552, microseconds=941176))
>>> list(it)    # doctesttag: +TAG=3_distribueix_concerts
[(1, 1), (8, 1), (15, 1), (22, 1), (30, 1), (6, 2), (13, 2), (20, 2), (27, 2), (5, 3), (13, 3), (20, 3), (27, 3), (3, 4), (10, 4), (17, 4), (25, 4), (2, 5), (9, 5), (16, 5), (23, 5), (30, 5), (6, 6), (14, 6), (21, 6), (28, 6), (5, 7), (12, 7), (19, 7), (27, 7), (3, 8), (10, 8), (17, 8), (24, 8), (31, 8), (7, 9), (15, 9), (22, 9), (29, 9), (6, 10), (13, 10), (20, 10), (28, 10), (4, 11), (11, 11), (18, 11), (25, 11), (2, 12), (10, 12), (17, 12), (24, 12), (31, 12)]
>>> it = distribueix_concerts(2032, 35, timedelta(days=10, seconds=63529, microseconds=411765))
>>> list(it)    # doctesttag: +TAG=3_distribueix_concerts
[(1, 1), (12, 1), (22, 1), (2, 2), (13, 2), (24, 2), (5, 3), (16, 3), (27, 3), (7, 4), (17, 4), (28, 4), (9, 5), (20, 5), (30, 5), (10, 6), (21, 6), (2, 7), (12, 7), (23, 7), (3, 8), (13, 8), (24, 8), (4, 9), (15, 9), (25, 9), (6, 10), (17, 10), (28, 10), (7, 11), (18, 11), (29, 11), (10, 12), (20, 12), (31, 12)]
>>> it = distribueix_concerts(2008, 100, timedelta(days=3, seconds=59345, microseconds=454545))
>>> list(it)    # doctesttag: +TAG=3_distribueix_concerts
[(1, 1), (5, 1), (8, 1), (12, 1), (16, 1), (19, 1), (23, 1), (27, 1), (30, 1), (3, 2), (7, 2), (11, 2), (14, 2), (18, 2), (22, 2), (25, 2), (29, 2), (4, 3), (7, 3), (11, 3), (15, 3), (18, 3), (22, 3), (26, 3), (29, 3), (2, 4), (6, 4), (10, 4), (13, 4), (17, 4), (21, 4), (24, 4), (28, 4), (2, 5), (5, 5), (9, 5), (13, 5), (16, 5), (20, 5), (24, 5), (27, 5), (31, 5), (4, 6), (8, 6), (11, 6), (15, 6), (19, 6), (22, 6), (26, 6), (30, 6), (3, 7), (7, 7), (11, 7), (14, 7), (18, 7), (22, 7), (25, 7), (29, 7), (2, 8), (6, 8), (9, 8), (13, 8), (17, 8), (20, 8), (24, 8), (28, 8), (31, 8), (4, 9), (8, 9), (11, 9), (15, 9), (19, 9), (22, 9), (26, 9), (30, 9), (4, 10), (7, 10), (11, 10), (15, 10), (18, 10), (22, 10), (26, 10), (29, 10), (2, 11), (6, 11), (9, 11), (13, 11), (17, 11), (20, 11), (24, 11), (28, 11), (2, 12), (5, 12), (9, 12), (13, 12), (16, 12), (20, 12), (24, 12), (27, 12), (31, 12)]
>>> it = distribueix_concerts(2008, 101, timedelta(days=3, seconds=56160))
>>> list(it)    # doctesttag: +TAG=3_distribueix_concerts
[(1, 1), (5, 1), (8, 1), (12, 1), (16, 1), (19, 1), (23, 1), (27, 1), (30, 1), (3, 2), (7, 2), (10, 2), (14, 2), (17, 2), (21, 2), (25, 2), (28, 2), (3, 3), (7, 3), (10, 3), (14, 3), (18, 3), (21, 3), (25, 3), (29, 3), (1, 4), (5, 4), (9, 4), (12, 4), (16, 4), (20, 4), (23, 4), (27, 4), (30, 4), (4, 5), (8, 5), (11, 5), (15, 5), (19, 5), (22, 5), (26, 5), (30, 5), (2, 6), (6, 6), (10, 6), (13, 6), (17, 6), (21, 6), (24, 6), (28, 6), (2, 7), (5, 7), (9, 7), (12, 7), (16, 7), (20, 7), (23, 7), (27, 7), (31, 7), (3, 8), (7, 8), (11, 8), (14, 8), (18, 8), (22, 8), (25, 8), (29, 8), (2, 9), (5, 9), (9, 9), (13, 9), (16, 9), (20, 9), (23, 9), (27, 9), (1, 10), (4, 10), (8, 10), (12, 10), (15, 10), (19, 10), (23, 10), (26, 10), (30, 10), (3, 11), (6, 11), (10, 11), (14, 11), (17, 11), (21, 11), (25, 11), (28, 11), (2, 12), (5, 12), (9, 12), (13, 12), (16, 12), (20, 12), (24, 12), (27, 12), (31, 12)]