Text processing/1: Difference between revisions
→{{header|J}}: give Dates to findLongestRuns as left arg
(→Common utilities: formatting) |
(→{{header|J}}: give Dates to findLongestRuns as left arg) |
||
Line 526:
NB. Find longest run(s) of successive invalid measurements and return
NB. length and date of last measurement(s) in run(s)
NB. Takes matrix of flags as right argument, list of date literals as left argument
findLongestRuns=:
badflags=. , 0 >: y
Line 533:
getrunlengths=. [: #(;.1) 0 , }. *. }:
getidxmax=. >:@I.@e. >./
maxrun=. >./ getrunlengths badflags
maxrun;
)
Line 570:
flags=: _99 ". >(2 + +: i.24){"1 dat
DailySumry=: vals summarize@filter"1 flags
MaxRuns=: Dates findLongestRuns flags
(_4{.Dates) formatDailySumry _4{. DailySumry
Line 607:
<lang j>
'Dates DailySumry Flags'=: processBlock fread jpath '~temp/readings.txt'
MaxRuns=: Dates findLongestRuns Flags
(_4{.Dates) formatDailySumry _4{. DailySumry
Line 638:
strt=. newstrt
end.
MaxRuns=. Dates findLongestRuns Flags
smoutput (_4{. Dates) formatDailySumry _4{. DailySumry
smoutput ''
Line 676:
processLine=: monad define
'dates dat'=. parseLine y
Dates=: Dates,dates NB. append to global▼
'vals flags'=. |: _2 ]\ dat
Flags=: Flags,flags▼
sumry=. vals summarize@filter flags
▲ Dates=: Dates,dates NB. append to global
DailySumry=: DailySumry,sumry
▲ Flags=: Flags,flags
)
Line 693:
processLine fapplylines y
MaxRuns=. Dates findLongestRuns Flags
NB. Format output
smoutput (_4{. Dates) formatDailySumry _4{. DailySumry
|