1. Posicions d’una fresa¶
Avís
Per a resoldre aquest exercici no es poden fer servir llistes, tuples, diccionaris ni cap altra estructura de dades per a desar tots els elements d’un iterador.
Una fresadora de control numèric envia al controlador una seqüència de
zeros, uns i menys uns (0, 1, -1). Aquests nombres, agrupats de tres
en tres, representen el desplaçament de la fresa en els eixos
\(x\), \(y\) i \(z\) respectivament. Per exemple, si el
controlador rep la seqüència 1 0 0 0 0 -1, els tres primers
nombres indequen que la fresa s’ha desplaçat 1 unitat en l’eix
\(x\) i els tres enters següents indiquen que s’ha desplaçat -1
unitat en l’eix \(z\).
A partir de la posició inicial de la fresa (en coordenades 3D) i una
seqüència de desplaçaments com l’anterior, es pot calcular la
seqüència de posicions de la fresa. Seguint l’exemple anterior, si la
posició inicial és la (3, 1, 7), després del primer desplaçament
la fresa estarà a la posició (4, 1, 7) i després del segon a (4,
1, 6).
Dissenya la funció següent i desa-la al mòdul posicions
(fitxer posicions.py):
- posicions.posicions_fresa(origen, desp)¶
Calcula l’iterador de les posicions de la fresa a partir del punt origen i de l’iterador de desplaçaments desp.
- Paràmetres:
- Retorna:
iterador de les posicions 3D de la fresa. Les posicions són tuples de 3 enters, les coordenades \(x\), \(y\) i \(z\).
Per exemple,
>>> desp1 = [1, 0, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0] >>> desp1_it = iter(desp1) >>> p1_it = posicions_fresa((0, 0, 0), desp1_it) >>> list(p1_it) [(0, 0, 0), (1, 0, 0), (1, 0, -1), (1, 1, -1), (2, 1, -1)]
Disposes d’un joc de proves més complet al fitxer
tests-posicions.txt.