Предложение за допълнителна оптимизация - до моя идол jasssonpet и всички които имат време и желание да се позанимават :)
Хареса ми идеята, ако елемент е част от вече проверена редица (т.е. има същия елемент непосредствено преди него в една от 4те посоки на движение) да не се проверява наново, защото няма смисъл. Но според мен е добре и дължината на вече намерената максимално дълга редица от еднакви елементи да оказва влияние при итерацията в масива. Идеята е следната:
Да приемем, че в посочения по-горе масив, всички клетки на първия ред имат една и съща стойност. Промените са в син цвят:
ha |
ha |
ha |
ha |
fo |
ha |
hi |
xx |
xxx |
ho |
ha |
xx |
Тогава, при хоризонтална проверка на първия ред достигаме до 4 повторения, което не е възможно да се достигне при проверка по вертикала или 2та диагонала (броя елементи на ред са повече от тези на колона в конкретния случай). Също така, ако при еднаква дължина се вади само първия елемент със съответната дължина, дори и проверка по редове не е нужна, защото не може да има елемент с повече от 4 повторения.
Примера беше елементарен, но се надявам да съм обяснил добре идеята. Крайната стойност при итерация на масив в цикъл би трябвало да се коригира с дължината на вече намерената максимална редица от повтарящи се елементи.