correctly identifies safe lines
This commit is contained in:
parent
b4232c905d
commit
a5ce4e5803
3 changed files with 12 additions and 8 deletions
|
|
@ -16,10 +16,13 @@ enum Direction {
|
|||
int main(){
|
||||
string line;
|
||||
int safeReports = 0;
|
||||
stringstream wholeDoc;
|
||||
|
||||
ifstream puzzle("input.txt", ifstream::in);
|
||||
wholeDoc << puzzle.rdbuf();
|
||||
|
||||
while (getline(puzzle, line)) {
|
||||
cout << line<<"\n";
|
||||
istringstream lineStream(line);
|
||||
string numberString;
|
||||
list<int> currentLevels;
|
||||
|
|
@ -36,23 +39,24 @@ int main(){
|
|||
int prevlevel = currentLevels.front();
|
||||
currentLevels.pop_front();
|
||||
numOfLevelsProcessed++;
|
||||
if (prevlevel - currentLevels.front()>0){
|
||||
dir = UP;
|
||||
} else if (prevlevel - currentLevels.front()< 0){
|
||||
if (prevlevel < currentLevels.front()){
|
||||
dir = DOWN;
|
||||
} else if (prevlevel > currentLevels.front()){
|
||||
dir = UP;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
for (int level = 0; !currentLevels.empty();level=currentLevels.front()){
|
||||
for (int level = currentLevels.front(); !currentLevels.empty();level=currentLevels.front()){
|
||||
if (abs(prevlevel-level)>3) {currentLevels.clear();break;}
|
||||
if(prevlevel-level==0){ currentLevels.clear();break;}
|
||||
if(dir==UP&&(prevlevel-currentLevels.front())<0) {currentLevels.clear();break;}
|
||||
if(dir==DOWN&&(prevlevel-currentLevels.front()>0)) {currentLevels.clear();break;}
|
||||
if(prevlevel==level){ currentLevels.clear();break;}
|
||||
if(dir==UP&&(prevlevel<currentLevels.front())) {currentLevels.clear();break;}
|
||||
if(dir==DOWN&&(prevlevel>currentLevels.front())) {currentLevels.clear();break;}
|
||||
|
||||
prevlevel=currentLevels.front();
|
||||
currentLevels.pop_front();
|
||||
numOfLevelsProcessed++;
|
||||
|
||||
if(numOfLevelsProcessed==numOfLevelsInLine){
|
||||
safeReports++;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue