['binary code', 'fears', 'language', 'tension', 'astrology']
Imagina que ets un programador que treballa amb un sistema que controla els semàfors d'una ciutat. Tens un error en el codi que està provocant que tots els semàfors es tornin bojos: alguns canvien de color massa ràpid, altres massa lent, i alguns no canvien de color. El codi problemàtic és aquest: `for (int i = 0; i < semafors.length; i++) { semafors[i].canviarEstat(tempsActual); }`. Com ho arreglaries? Explica en català què fa el codi actual i com ho canviaries.
El codi actual fa que cada semàfor a la llista `semafors` canviï d'estat en funció del `tempsActual`. El problema és que tots els semàfors canvien alhora, independentment del seu estat actual o del temps que fa que estan en aquest estat. Per arreglar-ho, hauríem d'afegir una lògica que tingui en compte l'estat actual de cada semàfor i el temps que ha de romandre en aquest estat abans de canviar. 

Per exemple, podríem crear una classe `Semafor` amb atributs com `estatActual` (verd, vermell, ambre), `tempsEnEstat` (segons que porta en l'estat actual) i `tempsCanvi` (segons que ha de durar cada estat). Dins del bucle, en lloc de cridar directament a `canviarEstat(tempsActual)`, comprovaríem si el `tempsEnEstat` és igual o superior al `tempsCanvi`. Si és així, canviaríem l'estat i reiniciaríem el `tempsEnEstat`. En cas contrari, només incrementaríem el `tempsEnEstat`.