ББ обламал хаскель на изучение sql тоже времени не осталось ...
вроде решение должно быть в диапазоне O*lnO :
#!/bin/bash
awk -f t1.awk <m1.txt >tmp1
sort tmp1 >tmp2
awk -f t2.awk <tmp2 >tmp3
#!/bin/awk -f
BEGIN {
FIELDWIDTHS = "2 1 2 1 5 9 43 2 5 9 5"
o = "\t"
}
#
/Телефон/ { tel = $10 + 0}
$7 ~ /^343/ {
#print " town " $0
next
}
#7 - dest
#9 - long
#10 - cost
/^[0-9][0-9]\./ {
# print $1 " -- " $3
sub(/\./," ",$5)
gsub(/\t/,"",$7)
time = mktime( " 2007 " $3 " " $1 " " $5 " 00")
timeend = time+$9*60
print time o tel o timeend o $9 o $7 o $10
#print $5 " ++++ " $7 " --- " $8
}
это парсит текст в таблицу ...
#!/bin/awk -f
BEGIN {
FS = "\t"
OFS = "\t"
told = 0
}
told > $1 {
if (bold != "") {
split(bold,b,"\t")
print strftime("%Y%m%d%H%M",b[1]),b[2],b[4],b[5],b[6]
}
bold = ""
print strftime("%Y%m%d%H%M",$1),$2,$4,$5,$6
told = told > $3 ? told : $3
next
}
{
bold = $0
told = told > $3 ? told : $3
}
это удаляет одиночные звонки - которые по идее должны были идти через шлюз, в принципе часть выведеных скриптом звонков тоже пошла бы через шлюз ...
какой алгоритм потребуется для определения :
-сколько выведенных скриптом звонков пойдет через шлюз
-сколько потребуется организации дополнительных линий связи для исходящих звонков с минимальным временем ожидания?
время на разработку:
4 дня на обсуждение инструментария разработки
5 минут на разработку алгоритма
1.5 часа на реализацию (из них полчаса на изучение формата timestamp )
0 отладка - опять почему-то не потребовалась -- я уже начал раслабляться с поиском багов ...
зы: на обработку тестовых 200 кб тратится 3 секунды, клиенты своих баз данных не показывают, в принципе 80мб должно пропарсить без проблемм лишь бы формат совпал ...
авк походу стал несколько ограничивать возможности реализации: плохая поддержка регулярных выражений, плохая интеграция императивного и дата-дривен стилей программирования ... похоже приходит время присмотреться к перлу или лиспу ... что из них практичнее?