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