Pełny cykl to 5 minut.
Światło żółte 3, 8, 13, 18...
Podpowiedź
3 mod 5 = 3;
8 mod 5 = 3;
13 mod 5 = 3;
Podobnie dla światła czerwonego; 4, 9, 14, 19...
4 mod 5 = 4;
9 mod 5 = 4;
14 mod 5 = 4;
Światło zielone 0 - 2, 5 - 7, 10 - 12 , 15 - 17...
Zastanówcie się jakie wartości otrzymamy po zastosowaniu operacji modulo dla światła zielonego. Liczymy analogicznie jak wyżej.
Wyżej mamy wartości całkowite, a co jeżeli użytkownik wpisze 2.5? W instrukcji if możemy użyć znaków "<" oraz ">".
Drugi wariant:
Światła zmieniają się o równych minutach. Jeżeli więc upłynęło t = 2.5 min to w czasie t = 2.0 mieliśmy to samo światło. Możemy więc zaokrąglić liczbę w dół i najlepiej zamienić na int.
Do zaokrąglania w dół służy funkcja Match.floor().
Przykład:
t = 14.5 po zaokrągleniu t = 14.
14 mod 5 = 4 - światło czerwone.
Doszedłem do tego rysując sobie na kartce oś i oznaczając co kratkę jedną minutę, a następnie zacząłem kombinować z operatorem "%".
Do rozwiązania napisałem 8 linii kodu.
Myśleć myśleć i jeszcze raz myśleć. Powodzenia.