#include #include #include #include int main(int argc, char** argv) { if (argc != 2) { fputs("Usage: ", stdout); fputs(argv[0], stdout); fputs(" \n", stdout); return 1; } FILE* file = fopen(argv[1], "r"); unsigned int safe_count = 0; const int max_length = 16; char buffer[17]; int buf_length = 0; int line_no = 0; while (true) { bool first_number = true; int last_number = INT_MIN; int last_delta = 0; bool safe = true; int c; while (true) { c = fgetc(file); if (buf_length < max_length && c >= '0' && c <= '9') { buffer[buf_length] = c; buf_length++; continue; } if (buf_length > 0) { buffer[buf_length] = 0; int number = atoi(buffer); if (first_number) { first_number = false; } else { int delta = number - last_number; if (last_delta != 0 && delta * last_delta < 0) { safe = false; } else if (delta == 0 || abs(delta) > 3) { safe = false; } last_delta = delta; } last_number = number; buf_length = 0; } if (c == EOF || c == '\n') { break; } } if (safe && !first_number) { safe_count++; } line_no++; if (c == EOF) { break; } } printf("Safe count: %d\n", safe_count); fclose(file); }