Compare commits

...

16 Commits

Author SHA1 Message Date
aa49da96bb started to work through errors 2024-12-09 17:56:10 +13:00
c172b4e1ef fixed crash 2024-12-09 16:26:21 +13:00
2a57da02a9 handled same number appearing twice 2024-12-09 15:48:24 +13:00
04d7f1305c detected single up or down and removed it 2024-12-09 15:25:21 +13:00
d24974703f first test removing single number that is diffrent to the rest 2024-12-09 15:19:14 +13:00
625cb4986f counting each number now 2024-12-03 18:58:51 +13:00
55f05e4f16 started working on detecting if the front or back number is the problem. 2024-12-03 12:19:45 +13:00
08c10aecd5 started d2p2 2024-12-03 07:58:39 +13:00
f5551d2de2 start d2p2 2024-12-02 21:49:12 +13:00
d1d69d08ad p2p1 complete 2024-12-02 21:44:12 +13:00
a5ce4e5803 correctly identifies safe lines 2024-12-02 21:33:35 +13:00
b4232c905d added line precessing 2024-12-02 20:57:33 +13:00
0d4f948ff5 read each element of a line 2024-12-02 19:54:23 +13:00
5a1721acf7 started puzzle 1 again in c 2024-12-02 15:52:44 +13:00
31b1c51bf5 completed day 1 2024-12-02 11:33:11 +13:00
1f7d96ad3f completed p1p1 2024-12-02 11:06:14 +13:00
22 changed files with 1271 additions and 108 deletions

39
.vscode/launch.json vendored
View File

@@ -1,39 +0,0 @@
{
"configurations": [
{
"type": "cmake",
"request": "launch",
"name": "Debug portfile(s)",
"cmakeDebugType": "external",
"pipeName": "/tmp/vcpkg_ext_portfile_dbg",
"preLaunchTask": "Debug vcpkg commands"
},
{
"name": "C/C++: g++ build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: g++ build active file",
"miDebuggerPath": "/usr/bin/gdb"
}
],
"version": "2.0.0"
}

11
.vscode/settings.json vendored
View File

@@ -1,13 +1,6 @@
{ {
"vcpkg.target.defaultTriplet": "x64-linux",
"vcpkg.target.hostTriplet": "x64-linux",
"vcpkg.target.useManifest": false,
"vcpkg.target.useStaticLib": false,
"cmake.configureArgs": [
"-DVCPKG_MANIFEST_MODE=OFF",
"-DVCPKG_TARGET_TRIPLET=x64-linux"
],
"files.associations": { "files.associations": {
"string.h": "c" "iostream": "cpp",
"*.tcc": "cpp"
} }
} }

36
.vscode/tasks.json vendored
View File

@@ -2,46 +2,26 @@
"tasks": [ "tasks": [
{ {
"type": "cppbuild", "type": "cppbuild",
"label": "C/C++: gcc build active file", "label": "C/C++: cl.exe build active file",
"command": "/usr/bin/g++", "command": "cl.exe",
"args": [ "args": [
"-fdiagnostics-color=always", "/Zi",
"-g", "/EHsc",
"${file}", "/nologo",
"-o", "/Fe${fileDirname}\\${fileBasenameNoExtension}.exe",
"${fileDirname}/${fileBasenameNoExtension}" "${file}"
], ],
"options": { "options": {
"cwd": "${fileDirname}" "cwd": "${fileDirname}"
}, },
"problemMatcher": [ "problemMatcher": [
"$gcc" "$msCompile"
], ],
"group": { "group": {
"kind": "build", "kind": "build",
"isDefault": true "isDefault": true
}, },
"detail": "Task generated by Debugger." "detail": "Task generated by Debugger."
},
{
"type": "cppbuild",
"label": "C/C++: g++ build active file",
"command": "/usr/bin/g++",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": "build",
"detail": "Task generated by Debugger."
} }
], ],
"version": "2.0.0" "version": "2.0.0"

BIN
1/puzzle1

Binary file not shown.

View File

@@ -1,40 +1,15 @@
#include <stdbool.h> #include <stdbool.h>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#define stringSize 20
int listSize = 0; FILE *puzzleFile;
char readChar = '0';
char stringOne[stringSize];
char stringTwo[stringSize];
int readIntoList(char *stringList) {
int index = 0;
while (1) {
char next = getchar();
if (next == '.') {
break;
} else if (next != '\n') {
stringList[index] = next;
index++;
}
}
}
int main() { int main() {
printf("enter list size: \n");
scanf("%i", &listSize); puzzleFile = fopen("input.txt", "r");
int listOne[listSize]; if (puzzleFile==NULL){
int listTwo[listSize]; printf("file unable to be opened");
}
memset(listOne, '\0', listSize);
memset(listTwo, '\0', listSize); printf("helloworld");
printf("enter list 1: \n");
readIntoList(stringOne);
printf("enter list 2: \n");
readIntoList(stringTwo);
printf("one: %s \ntwo: %s ", stringOne, stringTwo);
} }

View File

@@ -28,7 +28,7 @@ int main(){
listTwo.sort(); listTwo.sort();
for (int x=0; !listOne.empty();x++){ for (int x=0; !listOne.empty();x++){
totalDistance += listOne.front() + listTwo.front(); totalDistance += abs(listOne.front() - listTwo.front());
listOne.pop_front(); listOne.pop_front();
listTwo.pop_front(); listTwo.pop_front();
} }

BIN
1/puzzle1p2 Executable file

Binary file not shown.

43
1/puzzle1p2.cpp Normal file
View File

@@ -0,0 +1,43 @@
#include <stdio.h>
#include <list>
#include <iostream>
#include <fstream>
#include <unordered_map>
using namespace std;
list<int> listOne{};
list<int> listTwo{};
unordered_map<int, int> listTwoMap;
int simscore = 0;
int main(){
ifstream puzzle("input.txt");
int tempOne, tempTwo;
while (puzzle >> tempOne >> tempTwo)
{
listOne.push_back(tempOne);
listTwo.push_back(tempTwo);
}
puzzle.close();
for (int num:listTwo){
listTwoMap[num]++;
}
for (int listOneItem = 0; !listOne.empty(); listOneItem= listOne.front()) {
if(listTwoMap.contains(listOneItem)){
simscore += listOneItem * listTwoMap[listOneItem];
}
listOne.pop_front();
}
printf("total simularity: %i\n", simscore);
}

1000
2/input.txt Normal file

File diff suppressed because it is too large Load Diff

BIN
2/puzzle2 Executable file

Binary file not shown.

66
2/puzzle2.cpp Normal file
View File

@@ -0,0 +1,66 @@
#include <stdio.h>
#include <list>
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <sstream>
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<int> 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&&(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++;
}
}
}
cout << safeReports;
puzzle.close();
}

BIN
2/puzzle2.exe Normal file

Binary file not shown.

BIN
2/puzzle2.ilk Normal file

Binary file not shown.

BIN
2/puzzle2.obj Normal file

Binary file not shown.

BIN
2/puzzle2.pdb Normal file

Binary file not shown.

BIN
2/puzzle2p2 Executable file

Binary file not shown.

145
2/puzzle2p2.cpp Normal file
View File

@@ -0,0 +1,145 @@
#include <stdio.h>
#include <list>
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <sstream>
#include <iterator>
using namespace std;
enum Direction {
UP,
DOWN,
UNSET
};
int main(){
string line;
int safeReports = 0;
stringstream wholeDoc;
int linesReadFromFile= 0;
ifstream puzzle("input.txt", ifstream::in);
while (getline(puzzle, line)) {
istringstream lineStream(line);
string numberString;
list<int> currentLevels;
while (getline(lineStream, numberString, ' ')) {
int number = stoi(numberString);
currentLevels.push_back(number);
}
linesReadFromFile++;
list<int> currentLevelsBackup = currentLevels;
int numOfLevelsProcessed = 0;
auto curListIt = currentLevels.begin();
curListIt++; //point to second item in list
auto RevCurListIt = currentLevels.rbegin();
RevCurListIt++; //points to second to last item
enum Direction dir;
bool listDirty =false;
list<int>changeFromPrevLevel;
list<int>levelGoesUp;
list<int>levelGoDown;
list<int>levelStaysSame;
int totalChange=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++;
auto backIt = currentLevels.begin();
for(int index = 1;frontIt!=currentLevels.end();index++){
int change = (*frontIt) - (*backIt);
totalChange+=change;
changeFromPrevLevel.push_back(change);
frontIt++;
backIt++;
if (change>0){
levelGoesUp.push_front(index);
} else if(change<0){
levelGoDown.push_front(index);
} else {
levelStaysSame.push_front(index);
}
}
if (totalChange>0){
dir= UP;
} else if (totalChange<0){
dir = DOWN;
}
if(dir==UP&&changeFromPrevLevel.front()<0){
currentLevels.erase(currentLevels.begin());
levelGoDown.pop_front();
listDirty=true;
}
if (dir==UP&&levelGoDown.size()>1){ //if the overall direction goes up and more then 1 level go down the list is bad
currentLevels.clear();
} else if (dir==DOWN&&levelGoesUp.size()>1){ //same as above but opiosite dirrection
currentLevels.clear();
}
if (levelStaysSame.size()>1||(listDirty&&levelStaysSame.size()==0)){ //cant have more then 1 number the same or the list is bad
currentLevels.clear();
}
if (!currentLevels.empty()&&levelStaysSame.size()==1){
auto itNumberToDelete = currentLevels.begin();
advance(itNumberToDelete,levelStaysSame.front());
currentLevels.erase(itNumberToDelete);
listDirty = true;
}
if(listDirty&&dir==DOWN&&levelGoesUp.size()>0){
currentLevels.clear();
} else if(listDirty&&dir==UP&&levelGoDown.size()>0){
currentLevels.clear();
}
if (!currentLevels.empty()){
if (dir==UP&&levelGoDown.size()==1){
list<int>::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;
}
int numOfLevelsInLine = currentLevels.size();
//need to pull the first one to have something to compare to
int prevlevel = currentLevels.front();
currentLevels.pop_front();
numOfLevelsProcessed++;
for (int level = currentLevels.front(); !currentLevels.empty();level=currentLevels.front()){
if (abs(prevlevel-level)>3) {currentLevels.clear();break;}
prevlevel=currentLevels.front();
currentLevels.pop_front();
numOfLevelsProcessed++;
if(numOfLevelsProcessed==numOfLevelsInLine){
safeReports++;
}
}
}
}
cout <<"lines read in: " << linesReadFromFile<<"\n";
cout <<"safe Reports: " << safeReports;
puzzle.close();
}

BIN
2/puzzle2p2.exe Normal file

Binary file not shown.

BIN
2/puzzle2p2.ilk Normal file

Binary file not shown.

BIN
2/puzzle2p2.obj Normal file

Binary file not shown.

BIN
2/puzzle2p2.pdb Normal file

Binary file not shown.

BIN
2/vc140.pdb Normal file

Binary file not shown.