diff --git a/2/puzzle2p2.cpp b/2/puzzle2p2.cpp new file mode 100644 index 0000000..be872a4 --- /dev/null +++ b/2/puzzle2p2.cpp @@ -0,0 +1,66 @@ +#include +#include +#include +#include +#include +#include +#include + +using namespace std; + +enum Direction { + UP, + DOWN +}; + +int main(){ + string line; + int safeReports = 0; + stringstream wholeDoc; + + ifstream puzzle("input.txt", ifstream::in); + + while (getline(puzzle, line)) { + istringstream lineStream(line); + string numberString; + list currentLevels; + while (getline(lineStream, numberString, ' ')) { + int number = stoi(numberString); + currentLevels.push_back(number); + } + + int numOfLevelsInLine = currentLevels.size(); + int numOfLevelsProcessed = 0; + + //need to pull the first one to have something to compare to + enum Direction dir; + int prevlevel = currentLevels.front(); + currentLevels.pop_front(); + numOfLevelsProcessed++; + if (prevlevel < currentLevels.front()){ + dir = DOWN; + } else if (prevlevel > currentLevels.front()){ + dir = UP; + } else { + currentLevels.clear(); + } + + + for (int level = currentLevels.front(); !currentLevels.empty();level=currentLevels.front()){ + if (abs(prevlevel-level)>3) {currentLevels.clear();break;} + if(prevlevel==level){ currentLevels.clear();break;} + if(dir==UP&&(prevlevelcurrentLevels.front())) {currentLevels.clear();break;} + + prevlevel=currentLevels.front(); + currentLevels.pop_front(); + numOfLevelsProcessed++; + + if(numOfLevelsProcessed==numOfLevelsInLine){ + safeReports++; + } + } + } +cout << safeReports; +puzzle.close(); +} \ No newline at end of file