Go через массив и вычислите разницу между текущим и следующим элементом в списке (например, 2000-06-30 - 2000-06-15 = 15), пока не получите список «количество дней между платежными ведомостями. ”(Например, [15, 15, 15, 17 ...])
Затем используйте режим этого списка, чтобы найти наиболее распространенное расстояние между платежными ведомостями (в приведенном выше примере режим равен 15). У вас возникнет соблазн найти среднее / среднее, но режим лучше подходит для игнорирования этих «неправильных» дат.
Кричите, если вам нужна помощь в реализации любого из этих шагов в ruby, но вы должны найти SO ответы уже есть, чтобы вы начали.
Наконец, создайте «тестовый» список дат - тот, где вы вручную знаете ответ, который хотите. Играйте с этим, пока ваш алгоритм не даст вам ответ.