65 lines
1.2 KiB
Plaintext
65 lines
1.2 KiB
Plaintext
void
|
|
check_format(list l)
|
|
{
|
|
integer i;
|
|
text s;
|
|
|
|
if (l_length(l) != 49) {
|
|
error("wrong number of fields");
|
|
}
|
|
|
|
s = lf_q_text(l);
|
|
if (length(s) != 10 || s[4] != '-' || s[7] != '-') {
|
|
error("bad date format");
|
|
}
|
|
atoi(delete(delete(s, 7), 4));
|
|
|
|
i = 1;
|
|
while (i < 49) {
|
|
l_r_real(l, i, atof(l_q_text(l, i)));
|
|
i += 1;
|
|
l_r_integer(l, i, atoi(l_q_text(l, i)));
|
|
i += 1;
|
|
}
|
|
}
|
|
|
|
integer
|
|
main(void)
|
|
{
|
|
integer goods;
|
|
file f;
|
|
list l;
|
|
record r;
|
|
|
|
goods = 0;
|
|
|
|
f_affix(f, "readings.txt");
|
|
|
|
while (f_list(f, l, 0) != -1) {
|
|
if (!trap(check_format, l)) {
|
|
if (r_key(r, l_head(l))) {
|
|
v_form("duplicate ~ line\n", l_head(l));
|
|
} else {
|
|
integer i;
|
|
|
|
r_put(r, l_head(l), 0);
|
|
i = 2;
|
|
while (i < 49) {
|
|
if (l_q_integer(l, i) != 1) {
|
|
break;
|
|
}
|
|
i += 2;
|
|
}
|
|
if (49 < i) {
|
|
goods += 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
o_integer(goods);
|
|
o_text(" good unique lines\n");
|
|
|
|
return 0;
|
|
}
|