2013-07-26 60 views
-1

一時間計算器匹配我有一個文本文件,它看起來像這樣:模式在Perl

03:56:10.499 
03:56:29.839 
03:56:54.779 
03:56:59.079 
03:57:02.829 
03:57:09.739 
03:58:25.789 
03:58:33.679 
03:58:36.059 
03:58:36.559 
03:59:00.059 
03:59:30.189 
03:59:30.429 
03:59:35.409 
03:59:39.229 
03:59:44.779 
03:59:56.629 
03:59:58.819 
04:00:16.509 
04:00:37.729 
04:00:46.859 
04:00:47.129 
04:01:00.959 
04:01:17.449 
04:01:17.669 
04:01:55.229 
04:02:04.549 
03:14:22.623 
03:14:23.733 
03:14:24.663 
03:14:54.143 
03:16:00.813 
03:16:02.743 
03:16:15.483 
03:16:30.113 
03:16:48.913 
03:16:50.973 
03:17:02.683 
03:17:05.563 
03:18:19.283 
03:18:20.473 
03:18:22.223 
03:18:58.503 
03:18:59.553 
03:19:06.313 
03:19:11.943 
03:19:13.063 
03:19:13.063 
03:19:40.133 

(這只是一個非常小的一部分)

正如你可以看到它是一個時間的集合,我需要編寫一個增加所有時間的程序(毫秒不需要)。棘手的部分是,你可以看到它不是完全連續的。它從3小時開始,然後到4然後回到3,這使得難以跟蹤。關於如何使程序足夠聰明以識別模式並能夠給出總時間的答案的任何想法?

謝謝。

+1

這些時間(3點)或持續時間(3小時)? – ikegami

+0

你遇到什麼問題? – ikegami

+2

你試圖達到的目標並不完全清楚。如果這些是時間戳(就像它出現的那樣),那麼你必須澄清當它出現向後跳時的含義。那是上一次間隔的結束和新的開始?如果這些是持續時間,那麼你不應該關心順序或不連續性。 –

回答

1

如果你想得到所有次數的總和,訂單並不重要。只需添加秒,分鐘和小時爲秒,最後它,如果它不是我們在輸入數據的相對時間分割以可讀格式

#!/usr/bin/perl -w 

use strict; 

my $sum = 0; 
open (FH, "data.txt") or die "Error opening"; 
for my $line (<FH>){ 
chomp $line; 
(my $h,my $m,my $s) = split ':',$line; 
$sum = $sum + 3600*$h + 60*$m + $s; 
} 
close FH; 

my $days = int($sum/(24*60*60)); 
my $hours = ($sum/(60*60))%24; 
my $mins =($sum/60)%60; 
my $secs = $sum%60; 

print "days=$days hours=$hours mins=$mins secs=$secs\n" 

,你需要過濾的開始和結束時間。除此之外,我們需要更多關於該問題的信息。

+0

這個問題沒有被充分指定來提出答案。此外,這個答案應該是一個評論。 –

+0

爲什麼答案是評論?我想我不能評論,因爲我需要50個聲望。我在這裏很新,爲OT加分(如果你願意,我會稍後再刪除)。 – EverythingRightPlace

+0

因爲它從一個問題開始,如果你的問題的答案不符合你的期望,那麼答案就不適用。此外,如果您將您的帳戶鏈接到第二個SO網站([su],[sf]等),您可以獲得100個代表) –