Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
25
Task/Text-processing-2/Tcl/text-processing-2-1.tcl
Normal file
25
Task/Text-processing-2/Tcl/text-processing-2-1.tcl
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
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"
|
||||
39
Task/Text-processing-2/Tcl/text-processing-2-2.tcl
Normal file
39
Task/Text-processing-2/Tcl/text-processing-2-2.tcl
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
set total [set good 0]
|
||||
array set seen {}
|
||||
set fh [open readings.txt]
|
||||
while {[gets $fh line] != -1} {
|
||||
incr total
|
||||
set fields [regexp -inline -all {[^ \t\r\n]+} $line]
|
||||
if {[llength $fields] != 49} {
|
||||
puts "bad format: not 49 fields on line $total"
|
||||
continue
|
||||
}
|
||||
if { ! [regexp {^(\d{4}-\d\d-\d\d)$} [lindex $fields 0] -> date]} {
|
||||
puts "bad format: invalid date on line $total: '$date'"
|
||||
continue
|
||||
}
|
||||
|
||||
if {[info exists seen($date)]} {
|
||||
puts "duplicate date on line $total: $date"
|
||||
}
|
||||
incr seen($date)
|
||||
|
||||
set line_format_ok true
|
||||
set readings_ignored 0
|
||||
foreach {value flag} [lrange $fields 1 end] {
|
||||
if { ! [string is double -strict $value]} {
|
||||
puts "bad format: value not a float on line $total: '$value'"
|
||||
set line_format_ok false
|
||||
}
|
||||
if { ! [string is int -strict $flag]} {
|
||||
puts "bad format: flag not an integer on line $total: '$flag'"
|
||||
set line_format_ok false
|
||||
}
|
||||
if {$flag < 1} {incr readings_ignored}
|
||||
}
|
||||
if {$line_format_ok && $readings_ignored == 0} {incr good}
|
||||
}
|
||||
close $fh
|
||||
|
||||
puts "total: $total"
|
||||
puts [format "good: %d = %5.2f%%" $good [expr {100.0 * $good / $total}]]
|
||||
Loading…
Add table
Add a link
Reference in a new issue