diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 930ff05..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "files.associations": { - "*.tcc": "cpp" - } -} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 35a60bf..6532339 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -2,22 +2,20 @@ "tasks": [ { "type": "cppbuild", - "label": "C/C++: gcc build active file", - "command": "/usr/bin/g++", + "label": "C/C++: cl.exe build active file", + "command": "cl.exe", "args": [ - "--std", - "gnu++23", - "-fdiagnostics-color=always", - "-g", - "${file}", - "-o", - "${fileDirname}/${fileBasenameNoExtension}" + "/Zi", + "/EHsc", + "/nologo", + "/Fe${fileDirname}\\${fileBasenameNoExtension}.exe", + "${file}" ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": [ - "$gcc" + "$msCompile" ], "group": { "kind": "build", diff --git a/2/puzzle2.exe b/2/puzzle2.exe new file mode 100644 index 0000000..4f51e4f Binary files /dev/null and b/2/puzzle2.exe differ diff --git a/2/puzzle2.ilk b/2/puzzle2.ilk new file mode 100644 index 0000000..f92b31f Binary files /dev/null and b/2/puzzle2.ilk differ diff --git a/2/puzzle2.obj b/2/puzzle2.obj new file mode 100644 index 0000000..1f50fa5 Binary files /dev/null and b/2/puzzle2.obj differ diff --git a/2/puzzle2.pdb b/2/puzzle2.pdb new file mode 100644 index 0000000..00870f7 Binary files /dev/null and b/2/puzzle2.pdb differ diff --git a/2/puzzle2p2.cpp b/2/puzzle2p2.cpp index b3271a0..ba40743 100644 --- a/2/puzzle2p2.cpp +++ b/2/puzzle2p2.cpp @@ -5,6 +5,7 @@ #include #include #include +#include using namespace std; @@ -30,6 +31,7 @@ int main(){ currentLevels.push_back(number); } + list currentLevelsBackup = currentLevels; int numOfLevelsInLine = currentLevels.size(); int numOfLevelsProcessed = 0; auto curListIt = currentLevels.begin(); @@ -44,13 +46,16 @@ int main(){ listlevelStaysSame; int totalChange=0; - changeFromPrevLevel.push_front(0); + //we are going to walk the levels and see what the change is. + //the frontIt is the front number (starts at 2nd entry) + //backIt is the first entry (starts at 1st entry) + auto frontIt = currentLevels.begin(); - frontIt++; + frontIt++; auto backIt = currentLevels.begin(); for(int index = 1;frontIt!=currentLevels.end();index++){ - int change = (*backIt)-(*frontIt); + int change = (*frontIt) - (*backIt); totalChange+=change; changeFromPrevLevel.push_back(change); frontIt++; @@ -63,34 +68,52 @@ int main(){ levelStaysSame.push_front(index); } } - float averageChange = totalChange/(currentLevels.size()-1); - //need to pull the first one to have something to compare to + float averageChange = totalChange/(currentLevels.size()-1); //we use average change to smooth out the data - int prevlevel = currentLevels.front(); - currentLevels.pop_front(); - numOfLevelsProcessed++; - if (prevlevel < currentLevels.front()){ + if (totalChange>0){ + dir= UP; + } else if (totalChange<0){ dir = DOWN; - } else if (prevlevel > currentLevels.front()){ - dir = UP; - } else { + } + + if (dir==UP&&levelGoDown.size()>2){ //if the overall direction goes up and more then 2 leves go down the list is bad + currentLevels.clear(); + } else if (dir==DOWN&&levelGoesUp.size()>2){ //same as above but opiosite dirrection 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++; + if (!currentLevels.empty()){ + if (dir==UP&&levelGoDown.size()==1){ + list::iterator itNumberToDelete = currentLevels.begin(); + advance(itNumberToDelete,levelGoDown.front()); + currentLevels.erase(itNumberToDelete); + listDirty = true; + } else if (dir==DOWN&&levelGoesUp.size()==1){ + auto itNumberToDelete = currentLevels.begin(); + advance(itNumberToDelete,levelGoesUp.front()); + currentLevels.erase(itNumberToDelete); + listDirty=true; } + + //need to pull the first one to have something to compare to + int prevlevel = currentLevels.front(); + currentLevels.pop_front(); + + 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; diff --git a/2/puzzle2p2.exe b/2/puzzle2p2.exe new file mode 100644 index 0000000..f9122b3 Binary files /dev/null and b/2/puzzle2p2.exe differ diff --git a/2/puzzle2p2.ilk b/2/puzzle2p2.ilk new file mode 100644 index 0000000..a8b2ba6 Binary files /dev/null and b/2/puzzle2p2.ilk differ diff --git a/2/puzzle2p2.obj b/2/puzzle2p2.obj new file mode 100644 index 0000000..d9aa1ed Binary files /dev/null and b/2/puzzle2p2.obj differ diff --git a/2/puzzle2p2.pdb b/2/puzzle2p2.pdb new file mode 100644 index 0000000..72b6e99 Binary files /dev/null and b/2/puzzle2p2.pdb differ diff --git a/2/vc140.pdb b/2/vc140.pdb new file mode 100644 index 0000000..a616eac Binary files /dev/null and b/2/vc140.pdb differ