advent-of-code-cpp-2021/day05/day5Part2.cpp

101 lines
3 KiB
C++

#include <iostream>
#include <cmath>
#include <fstream>
using namespace std;
int arrayDimension = 10;//1000;
int inputLineCount = 10;//500;
int main (void)
{
int map[arrayDimension][arrayDimension] = {};
string rawInput;
int x1[inputLineCount] = {};
int x2[inputLineCount] = {};
int y1[inputLineCount] = {};
int y2[inputLineCount] = {};
string comma = ",";
string arrow = " -> ";
int lineNumber = 0;
int overlapCount = 0;
ifstream readFile ("data/testInput.txt", ios::in);
//Read file into arrays
while(getline(readFile, rawInput))
{
size_t x1End = rawInput.find(comma);
x1[lineNumber] = stoi(rawInput.substr(0,x1End));
size_t y1End = rawInput.find(arrow);
y1[lineNumber] = stoi(rawInput.substr(x1End+1,y1End));
size_t x2End = rawInput.find(comma, y1End);
x2[lineNumber] = stoi(rawInput.substr(y1End+4,x2End));
size_t y2End = rawInput.length()-1;
y2[lineNumber] = stoi(rawInput.substr(x2End+1,y2End));
lineNumber++;
}
for(int index=0;index<inputLineCount;index++)
{
if(x1[index]==x2[index])
{
if(y1[index] < y2[index])
{
for(int j=y1[index];j<=y2[index];j++) map[j][x1[index]]++;
}
else if(y2[index] < y1[index])
{
for(int j=y2[index];j<=y1[index];j++) map[j][x1[index]]++;
}
}
else if(y1[index]==y2[index])
{
if(x1[index] < x2[index]) for(int j=x1[index];j<=x2[index];j++) map[y1[index]][j]++;
else if(x2[index] < x1[index]) for(int j=x2[index];j<=x1[index];j++) map[y1[index]][j]++;
}
else
{
if(x1[index] < x2[index])
{
for (int i=x1[index];i<x2[index];i++)
{
if(y1[index] < y2[index])
{
for(int j=y1[index];j<=y2[index];j++) map[j][i]++;
}
else if(y2[index] < y1[index])
{
for(int j=y2[index];j<=y1[index];j++) map[j][i]++;
}
}
}
else if(x2[index] < x1[index])
{
for (int i=x2[index];i<x1[index];i++)
{
if(y1[index] < y2[index])
{
for(int j=y1[index];j<=y2[index];j++) map[j][i]++;
}
else if(y2[index] < y1[index])
{
for(int j=y2[index];j<=y1[index];j++) map[j][i]++;
}
}
}
}
}
for(int i=0;i<arrayDimension;i++)
{
for(int j=0;j<arrayDimension;j++)
{
cout << map[j][i];
if(map[j][i>1])overlapCount++;
}
cout << endl;
}
cout << overlapCount << endl;
return 0;
}