Здравейте, искам да сигнализирам за грешен тест (тук може да се поспори за разбирането на условието).
Става въпрос за def test_ouroboros_death
. На 45ти ред има assertRaises(Death)
, когато в случая коректна програма НЕ трябва да хвърля Death
в тази ситуация.
Визуално може да го тествате с този github gist (при налично решение solution)
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................##@@............................
..................##..............................
..................######..........................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
От тук се местим два пъти надолу. Досещате се, че така змията НЯМА да се удари в себе си, понеже местейки се, се мести и опашката и. Тоест това е единственият случай, в който не се хвърля директно смърт, когато клетката не е празна и не е храна. Тоест, ако новите координати на главата на змията съвпадат със старите координати на опашката и, тъй като тя се мести цялата съответно тя няма как да се удари в опашката си. (Получава се, че гони опашката си, но не може да я стигне и да я захапе или да се удари в нея.)
Точно си мислех как това е един доста частен случай, който най-вероятно доста хора няма да се сетят да обработят по специален начин и се учудих, когато видях, че нямате тест за него, но очевидно тестът ви за блъскане в себе си разглежда точно тази ситуация, като в случая обаче или сте объркали реда дали трябва да възбужда изключение, или просто и вие не сте се сетили за тази частна ситуация.