26 lines
908 B
Tcl
26 lines
908 B
Tcl
set data [lrange [split [read [open "readings.txt" "r"]] "\n"] 0 end-1]
|
|
set total [llength $data]
|
|
set correct $total
|
|
set datestamps {}
|
|
|
|
foreach line $data {
|
|
set formatOk true
|
|
set hasAllMeasurements true
|
|
|
|
set date [lindex $line 0]
|
|
if {[llength $line] != 49} { set formatOk false }
|
|
if {![regexp {\d{4}-\d{2}-\d{2}} $date]} { set formatOk false }
|
|
if {[lsearch $datestamps $date] != -1} { puts "Duplicate datestamp: $date" } {lappend datestamps $date}
|
|
|
|
foreach {value flag} [lrange $line 1 end] {
|
|
if {$flag < 1} { set hasAllMeasurements false }
|
|
|
|
if {![regexp -- {[-+]?\d+\.\d+} $value] || ![regexp -- {-?\d+} $flag]} {set formatOk false}
|
|
}
|
|
if {!$hasAllMeasurements} { incr correct -1 }
|
|
if {!$formatOk} { puts "line \"$line\" has wrong format" }
|
|
}
|
|
|
|
puts "$correct records with good readings = [expr $correct * 100.0 / $total]%"
|
|
puts "Total records: $total"
|