44 lines
1.2 KiB
Plaintext
44 lines
1.2 KiB
Plaintext
import "io" for File
|
|
import "./pattern" for Pattern
|
|
import "./fmt" for Fmt
|
|
import "./sort" for Sort
|
|
|
|
var p = Pattern.new("+1/s")
|
|
var fileName = "readings.txt"
|
|
var lines = File.read(fileName).trimEnd().split("\r\n")
|
|
var count = 0
|
|
var invalid = 0
|
|
var allGood = 0
|
|
var map = {}
|
|
for (line in lines) {
|
|
count = count + 1
|
|
var fields = p.splitAll(line)
|
|
var date = fields[0]
|
|
if (fields.count == 49) {
|
|
map[date] = map.containsKey(date) ? map[date] + 1 : 1
|
|
var good = 0
|
|
var i = 2
|
|
while (i < fields.count) {
|
|
if (Num.fromString(fields[i]) >= 1) good = good + 1
|
|
i = i + 2
|
|
}
|
|
if (good == 24) allGood = allGood + 1
|
|
} else {
|
|
invalid = invalid + 1
|
|
}
|
|
}
|
|
|
|
Fmt.print("File = $s", fileName)
|
|
System.print("\nDuplicated dates:")
|
|
var keys = map.keys.toList
|
|
Sort.quick(keys)
|
|
for (k in keys) {
|
|
var v = map[k]
|
|
if (v > 1) Fmt.print(" $s ($d times)", k, v)
|
|
}
|
|
Fmt.print("\nTotal number of records : $d", count)
|
|
var percent = invalid/count * 100
|
|
Fmt.print("Number of invalid records : $d ($5.2f)\%", invalid, percent)
|
|
percent = allGood/count * 100
|
|
Fmt.print("Number which are all good : $d ($5.2f)\%", allGood, percent)
|