go => File = "readings.txt", Total = new_map([num_readings=0,num_good_readings=0,sum_readings=0.0]), InvalidCount = 0, MaxInvalidCount = 0, InvalidRunEnd = "", Id = 0, foreach(Line in read_file_lines(File)) Id := Id + 1, NumReadings = 0, NumGoodReadings = 0, SumReadings = 0, Fields = Line.split, Rec = Fields.tail.map(to_float), foreach([Reading,Flag] in chunks_of(Rec,2)) NumReadings := NumReadings + 1, if Flag > 0 then NumGoodReadings := NumGoodReadings + 1, SumReadings := SumReadings + Reading, InvalidCount := 0 else InvalidCount := InvalidCount + 1, if InvalidCount > MaxInvalidCount then MaxInvalidCount := InvalidCount, InvalidRunEnd := Fields[1] end end end, Total.put(num_readings,Total.get(num_readings) + NumReadings), Total.put(num_good_readings,Total.get(num_good_readings) + NumGoodReadings), Total.put(sum_readings,Total.get(sum_readings) + SumReadings), if Id <= 3 then printf("date:%w accept:%w reject:%w sum:%w\n", Fields[1],NumGoodReadings, NumReadings-NumGoodReadings, SumReadings) end end, nl, printf("readings: %d good readings: %d sum: %0.3f avg: %0.3f\n",Total.get(num_readings), Total.get(num_good_readings), Total.get(sum_readings), Total.get(sum_readings) / Total.get(num_good_readings)), nl, println(maxInvalidCount=MaxInvalidCount), println(invalidRunEnd=InvalidRunEnd), nl.