Возврат ключей, если 3 соседних значения соответствуют

У меня есть следующий массив

[true, false, false, true, true, false, false, true, true, true, false, false] 

Я знаю, как получить среднюю точку и использовать ceil() или floor() чтобы получить ближайшее целочисленное значение и как проверить, имеет ли значение до и после этой середины то же значение, что и моя средняя точка.

Моя проблема в том, что мне нужно три true значения рядом друг с другом, чтобы мое условие возвращало true . В этом примере использование midpoint и смежных с ним значений вернет false . Midpoint – это мое предпочтительное положение здесь, поскольку мне нужно что-то там делать, если мое условие возвращает true . Когда это, однако, возвращает false , мне нужно получить любую другую позицию, в которой есть три true значения рядом друг с другом. Мне нужно получить ключи, поскольку мне нужен ключ, чтобы определить среднюю точку, поскольку мне нужно вставить туда значение.

Поэтому из моего примера мне нужно вернуть номер 7, 8 и 9, а не значения этих ключей

Любые предложения для достижения этого?