include("WBInclusions")

a = open("\\t\\bp", "r")
b = readlines(a)
close(a)

D = Dict()

lenB = length(b)
for i = 1 : lenB
    itm = b[lenB + 1 - i]
    if itm[1:1] == "#"
        continue
    end
    item = split(itm[21:length(itm)], r" +")
    sp = parse(Int32, item[1])
    dp = parse(Int32, item[2])
    date = parse(Int32, item[4])
    x = get!(D, date, [0, 0, 0])
    D[date] = [x[1]+ sp, x[2] + dp, x[3] + 1]
end
ks = []
for k in keys(D)
    push!(ks, Int32(k))
end
ks = sort(ks)

global days = 0
global items = 0
global SumByItemsSP = 0
global SumByItemsDP = 0
global SumByDaysSP = 0
global SumByDaysDP = 0

function h(t)
    return HI_AQUA * string(t) * HI_END
end

function hf(t, n)
    return HI_YELLOW * formatDecimal(t, n) * HI_END
end

lenKS = length(ks)
range = (length(ARGS) > 0 ? parse(Int32, ARGS[1]) : 30)
start = ks[lenKS + 1 - range]

println("\n    NUBP v002.  ksLen: ", h(lenKS), ".  ksMax: ", h(ks[lenKS]), ".  start: ", h(start), " (", h(range), ")\n")

for k in ks
    if k < start
        continue
    end
    dk = D[k]
    global days += 1
    global items += dk[3]
    global SumByItemsSP += dk[1]
    global SumByItemsDP += dk[2]
    global SumByDaysSP += dk[1] / dk[3]
    global SumByDaysDP += dk[2] / dk[3]
end

println("    By item:  ", hf(SumByItemsSP / items, 3), "  ",
              hf(SumByItemsDP / items, 3), "\n    By day:   ",
              hf(SumByDaysSP / days, 3), "  ",
              hf(SumByDaysDP / days, 3))