我在工作中有一项非常有趣的任务 - 我需要知道用户花多少时间做某事,而我所拥有的只是他积蓄的时间戳.我知道一个事实,即用户在每一小部分工作后都会保存,因此它们相距甚远.
显而易见的解决方案是找出一个小项目可能花费多少时间,然后只是通过已排序的时间戳,如果当前一个和前一个之间的差异大于此值,则意味着用户有一个喝咖啡休息时间,如果是更少,我们可以将这个差异加到总和中.简单的示例代码来说明:
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;
}
Run Code Online (Sandbox Code Playgroud)
问题是,虽然我知道在一小部分上花了多少时间,但我不想依赖它.如果某个用户比我的预测慢得多,我不希望他没有薪水.所以我在想,这个问题能否有一些聪明的数学解决方案,可以在不知道什么时间间隔可以接受的情况下工作?
PS.很抱歉误会,当然没有人会根据这些数字向人们付款,即使他们愿意,他们也明白这只是一个近似值.但是我想找到一种能够尽可能接近现实生活的解决方案.
| 归档时间: |
|
| 查看次数: |
1559 次 |
| 最近记录: |