Хорошо, проблема в том, что вы увеличиваете количество инфекций в каждом блоке.Посмотрите на ваш пример из комментариев: 1 паниковал, 1 спокоен, 1 предупрежден, и три встретились.Взгляните на перспективу настороженной черепахи (первая часть вашего кода):
- первый тест: да, поблизости есть паника, поэтому настроение меняется, а заражение увеличивается
- секундатест: да, рядом также есть затишье, поэтому меняется настроение и увеличивается заражение СНОВА
- третий тест: да, поблизости (само по себе) есть оповещение, поэтому снова увеличивается заражение
Первое исправление состоит в том, чтобы изменить ваши тесты на if any? other citizens ...
, потому что включение other
исключает себя из теста.
Второе исправление на самом деле является проблемой логики, а не проблемой кодирования, вам нужно разобратьсячто вы действительно хотите посчитать.