Colors RGB

Es disposa de tres llistes de tuples. Cada tuple està format per 3 elements: els dos primers són les coordenades d’un píxel (enters) i el tercer és el valor corresponent a la intensitat d’un color (real entre 0 i 1). Cada llista fa referència a un dels tres colors bàsics RGB (vermell, verd o blau).

Dissenyeu la funció color() que a partir de tres llistes, lR, lG i lB del tipus descrit, obtingui i retorni un diccionari on la clau sigui un tuple de dos elements amb les coordenades de cada píxel i el valor sigui una llista amb els valors de les intensitats dels colors R, G i B, en aquest ordre. Pot ser que alguns píxels no apareguin en alguna llista. En aquest cas, s’interpreta que la intensitat corresponent al color d’una llista, per un píxel que no hi apareix, és 0.

Deseu la funció al fitxer colors.py. La funció ha de passar el següent doctest:

>>> lR = [(3, 5, 0.1), (5, 5, 0.3), (5, 4, 0.3), (5, 6, 0.2), (5, 7, 0.7)]
>>> lG = [(3, 5, 0.2), (4, 5, 0.4), (7, 5, 0.4), (5, 6, 0.6), (5, 7, 0.6)]
>>> lB = [(3, 5, 0.4), (4, 5, 0.3), (6, 5, 0.2), (5, 4, 0.9), (5, 7, 0.5)]
>>> d = color(lR, lG, lB)
>>> d == { (3, 5): [0.1, 0.2, 0.4], (5, 5): [0.3, 0, 0],
...        (5, 4): [0.3, 0, 0.9],   (5, 6): [0.2, 0.6, 0],
...        (5, 7): [0.7, 0.6, 0.5], (4, 5): [0, 0.4, 0.3],
...        (7, 5): [0, 0.4, 0],     (6, 5): [0, 0, 0.2] }
True

En aquest exemple es pot veure que el píxel de coordenades (3, 5) apareix a totes tres llistes, el píxel (5, 5) només apareix a la llista del color vermell i el píxel (4, 5) només apareix a les llistes dels colors verd i blau.

Nota

Podeu descarregar el fitxer amb tests colors.txt.

Solució

Disposeu d’una solució al fitxer colors.py