У меня на работе довольно интересное задание - мне нужно выяснить, сколько времени пользователь потратил на выполнение чего-либо, и все, что у меня есть, это временные метки его сбережений. Я точно знаю, что пользователь сохраняет после каждой небольшой части работы, поэтому они не далеко друг от друга.
Очевидным решением было бы выяснить, сколько времени может занять один маленький элемент, а затем просто пройти через отсортированные временные метки, и если разница между текущей и предыдущей больше, это означает, что у пользователя был перерыв на кофе, и если оно меньше, мы можем просто сложить эту разницу в общую сумму. Простой пример кода для иллюстрации этого:
var prev_timestamp = null;
var total_time = 0;
foreach (timestamp in timestamps) {
if (prev_timestamp != null) {
var diff = timestamp - prev_timestamp;
if (diff < threshold) {
total_time += diff;
}
}
prev_timestamp = timestamp;
}
Проблема в том, что, хотя я знаю, сколько времени тратится на одну маленькую порцию, я не хочу зависеть от этого. Что, если какой-то пользователь будет намного медленнее, чем мои прогнозы, я не хочу, чтобы он остался без зарплаты. Поэтому я подумал, может ли быть какое-нибудь умное математическое решение этой проблемы, которое могло бы работать без знания того, какой интервал времени является приемлемым?
PS. Извините за недоразумение, конечно, никто не будет платить людям, основываясь на этих цифрах, и даже если они будут, они понимают, что это только приблизительное. Но я бы хотел найти решение, которое бы излучало числа, максимально приближенные к реальной жизни.