Solució de l’examen parcial torn 1 d’Ampliació d’Informàtica

Organització:

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

Data:

2 de novembre de 2023

Copyright:

Reconeixement-CompartirIgual 3.0 No adaptada de Creative Commons

Durada:

1 hora i 10 minuts

Jocs de proves

Aquests jocs de proves necessiten el fitxer tauler_corr.py.

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

Test exercici 1 : Classe TaulerSE

# importem la solució de l’estudiant amb import

>>> import tauler
>>> t = tauler.TaulerSE(20)
>>> t.num_caselles   # doctesttag: +TAG=1_taulerSE
20
>>> t.nombre_serps()  # doctesttag: +TAG=1_taulerSE
0
>>> for i in range(1, 20):  # doctesttag: +TAG=1_taulerSE
...   print(t[i], end="/")
0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/
>>> t.afegir_serp(18, 12)
>>> t.afegir_serp(7, 4)
>>> t.nombre_serps()        # doctesttag: +TAG=1_taulerSE
2
>>> for i in range(1, 20):  # doctesttag: +TAG=1_taulerSE
...   print(t[i], end="/")
0/0/0/0/0/0/4/0/0/0/0/0/0/0/0/0/0/12/0/
>>> t.afegir_serp(15, 1)
>>> t.afegir_serp(10, 6)
>>> t.nombre_serps()        # doctesttag: +TAG=1_taulerSE
4
>>> for i in range(1, 20):  # doctesttag: +TAG=1_taulerSE
...   print(t[i], end="/")
0/0/0/0/0/0/4/0/0/6/0/0/0/0/1/0/0/12/0/
>>> t2 = tauler.TaulerSE(100)
>>> for i in range(0, 40, 2):
...    t2.afegir_serp(i+2, i+1)
...    t2.afegir_serp(51+i, i+2)
>>> for i in range(1, 101):  # doctesttag: +TAG=1_taulerSE
...   print(t2[i], end="/")
0/1/0/3/0/5/0/7/0/9/0/11/0/13/0/15/0/17/0/19/0/21/0/23/0/25/0/27/0/29/0/31/0/33/0/35/0/37/0/39/0/0/0/0/0/0/0/0/0/0/2/0/4/0/6/0/8/0/10/0/12/0/14/0/16/0/18/0/20/0/22/0/24/0/26/0/28/0/30/0/32/0/34/0/36/0/38/0/40/0/0/0/0/0/0/0/0/0/0/0/

Test exercici 2 : iter_serps

# importem una solució correcta am from…import

>>> from tauler_corr import TaulerSE
>>> from iserps import iter_serps
>>> t3 = TaulerSE(20)
>>> t3.afegir_serp(19,2)
>>> t3.afegir_serp(17,10)
>>> t3.afegir_serp(12,4)
>>> t3.afegir_serp(13,5)
>>> t3.afegir_serp(15,6)
>>> it = iter_serps(t3)
>>> for tup in it: # doctesttag: +TAG=2_iserps
...     print(tup, end='/')
(12, 4)/(13, 5)/(15, 6)/(17, 10)/(19, 2)/
>>> t4 = TaulerSE(100)
>>> for i in range(0, 20, 2):
...    t4.afegir_serp(i+50, i+1)
>>> it = iter_serps(t4)
>>> for tup in it:  # doctesttag: +TAG=2_iserps
...     print(tup, end='/')
(50, 1)/(52, 3)/(54, 5)/(56, 7)/(58, 9)/(60, 11)/(62, 13)/(64, 15)/(66, 17)/(68, 19)/
>>> for i in range(0, 20, 2):
...    t4.afegir_serp(i+2, i+1)
>>> it = iter_serps(t4)
>>> for tup in it:  # doctesttag: +TAG=2_iserps
...     print(tup, end='/')
(2, 1)/(4, 3)/(6, 5)/(8, 7)/(10, 9)/(12, 11)/(14, 13)/(16, 15)/(18, 17)/(20, 19)/(50, 1)/(52, 3)/(54, 5)/(56, 7)/(58, 9)/(60, 11)/(62, 13)/(64, 15)/(66, 17)/(68, 19)/

Test exercici 3 : PartidaSE

>>> from partida import PartidaSE
>>> p1 = PartidaSE(10)
>>> p1.num_caselles, p1.pos_blau, p1.pos_groc # doctesttag: +TAG=3_partidaSE
(10, 1, 1)
>>> p1.afegir_serp(5, 1)
>>> p1.afegir_serp(7, 2)
>>> p1.afegir_serp(9, 3)
>>> p1.pos_groc = 4
>>> p1.guanyant() # doctesttag: +TAG=3_partidaSE
4
>>> p1.pos_blau = 7
>>> p1.guanyant() # doctesttag: +TAG=3_partidaSE
7
>>> p1.pos_groc = 10
>>> p1.pos_blau = 10
>>> p1.guanyant() # doctesttag: +TAG=3_partidaSE
10
>>> p1.pos_groc = 1
>>> p1.mou_fitxa('groc', 3)
>>> p1.pos_groc, p1.pos_blau # doctesttag: +TAG=3_partidaSE
(4, 10)
>>> p1.pos_blau = 1
>>> p1.mou_fitxa('blau', 4)
>>> p1.pos_groc, p1.pos_blau # doctesttag: +TAG=3_partidaSE
(4, 1)
>>> for d in [1,2,1,3,6,1,2,5,5,6,1]: # doctesttag: +TAG=3_partidaSE
...    p1.mou_fitxa('groc', d)
...    print(p1.pos_groc, end=',')
1,3,4,2,8,3,1,6,10,10,10,
>>> for d in [2,1,1,3,5,4,5,2,1,6,2,6,6,3]: # doctesttag: +TAG=3_partidaSE
...    p1.mou_fitxa('blau', d)
...    print(p1.pos_blau, end=',')
3,4,1,4,3,2,2,4,1,2,4,10,10,10,