parent
23e9253b13
commit
d782c02ec8
@ -1,112 +0,0 @@ |
||||
#pragma region Hidden Setup Stuff |
||||
#define OLC_PGE_APPLICATION |
||||
#include "olcPixelGameEngine.h" |
||||
|
||||
using namespace olc; |
||||
|
||||
enum Run{ |
||||
FILE1, |
||||
FILE2 |
||||
}; |
||||
|
||||
// Override base class with your custom functionality
|
||||
class AoC2023 : public olc::PixelGameEngine |
||||
{ |
||||
std::vector<std::string>lines; |
||||
bool waitForRender=false; |
||||
|
||||
void wait(int pauseMs=0){ |
||||
waitForRender=true; |
||||
while(waitForRender); |
||||
std::this_thread::sleep_for(std::chrono::milliseconds(pauseMs)); |
||||
} |
||||
|
||||
#pragma endregion |
||||
|
||||
const int DAY = 4; |
||||
Run runInput=FILE2; |
||||
|
||||
void doStuff(){ |
||||
while(true){ //lines is accessible as a global.
|
||||
int sum=0; |
||||
for(std::string&line:lines){ |
||||
std::vector<int>winningNumbersList; |
||||
size_t colonPos=line.find(':')+1; |
||||
std::string winningNumbers=line.substr(colonPos,line.find('|')-colonPos-1); |
||||
while(winningNumbers.length()>0){ |
||||
std::string numb=winningNumbers.substr(0,3); |
||||
int number=atoi(numb.c_str()); |
||||
winningNumbersList.push_back(number); |
||||
winningNumbers=winningNumbers.substr(3); |
||||
} |
||||
std::string pickedNumbers=line.substr(line.find('|')+1); |
||||
int score=0; |
||||
while(pickedNumbers.length()>0){ |
||||
std::string numb=pickedNumbers.substr(0,3); |
||||
int number=atoi(numb.c_str()); |
||||
if(std::find(winningNumbersList.begin(),winningNumbersList.end(),number)!=winningNumbersList.end()){ |
||||
if(score==0)score=1;else score*=2; |
||||
} |
||||
pickedNumbers=pickedNumbers.substr(3); |
||||
} |
||||
sum+=score; |
||||
} |
||||
std::cout<<sum<<std::endl; |
||||
break; |
||||
//wait(0); //Wait for 0ms and render the screen (calls draw())
|
||||
} |
||||
} |
||||
|
||||
void draw(){ //Only use Sprites! If using decals, you must reference global variables!
|
||||
Clear(BLACK); |
||||
int count=0; |
||||
for(std::string&line:lines){ |
||||
DrawString({0,count*32},line,WHITE,4); |
||||
count++; |
||||
} |
||||
} |
||||
|
||||
#pragma region Hidden Engine Stuff |
||||
public: |
||||
AoC2023() |
||||
{ |
||||
// Name your application
|
||||
std::string fileName="day"+std::to_string(DAY)+"_1.txt"; |
||||
if(runInput==FILE2){fileName="day"+std::to_string(DAY)+"_2.txt";} |
||||
std::ifstream file(fileName); |
||||
while(file.good()){ |
||||
std::string line; |
||||
std::getline(file,line); |
||||
lines.push_back(line); |
||||
} |
||||
|
||||
sAppName = "Advent of Code 2023 - Day "+std::to_string(DAY); |
||||
} |
||||
|
||||
public: |
||||
bool OnUserCreate() override |
||||
{ |
||||
|
||||
return true; |
||||
} |
||||
|
||||
bool OnUserUpdate(float fElapsedTime) override |
||||
{ |
||||
static std::thread aocSolver(&AoC2023::doStuff,this); |
||||
|
||||
if(waitForRender){ |
||||
draw(); |
||||
waitForRender=false; |
||||
} |
||||
return true; |
||||
} |
||||
}; |
||||
|
||||
int main() |
||||
{ |
||||
AoC2023 game; |
||||
if (game.Construct(640, 480, 2, 2)) |
||||
game.Start(); |
||||
return 0; |
||||
} |
||||
#pragma endregion |
Loading…
Reference in new issue