From 5a23d15ff9bb69d9e9b52e543596e75af3b090f9 Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Mon, 2 Dec 2024 06:46:28 +0100 Subject: Day 2 2024 --- 2024/02/day02b.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 2024/02/day02b.cpp (limited to '2024/02/day02b.cpp') diff --git a/2024/02/day02b.cpp b/2024/02/day02b.cpp new file mode 100644 index 0000000..2e3dcf4 --- /dev/null +++ b/2024/02/day02b.cpp @@ -0,0 +1,48 @@ +#include +#include +#include +#include +#include +using namespace std; + +bool isvalid_v(const vector &v) { + int b = v[0] > v[1] ? 1 : -1; + for (unsigned i = 0; i < v.size()-1; i++) { + int d = b * (v[i] - v[i+1]); + if (d < 1 || d > 3) + return false; + } + return true; +} + +vector getv(const string &line) { + int x; + vector ret; + istringstream s(line); + + while(s >> x) + ret.push_back(x); + + return ret; +} + +bool isvalid(const string &line) { + vector v0 = getv(line); + if (isvalid_v(v0)) + return true; + for (unsigned i = 0; i < v0.size(); i++) { + vector v = v0; + v.erase(v.begin() + i); + if (isvalid_v(v)) + return true; + } + return false; +} + +int main() { + int tot = 0; + for (string line; getline(cin, line); ) + tot += isvalid(line); + cout << tot << endl; + return 0; +} -- cgit v1.3