#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::vectorlines; bool waitForRender=false; void wait(int pauseMs=0){ waitForRender=true; while(waitForRender); std::this_thread::sleep_for(std::chrono::milliseconds(pauseMs)); } #pragma endregion #include const int DAY = 2; Run runInput=FILE2; void doStuff2(){ while(true){ //lines is accessible as a global. int id=1; long powerSum=0; for(std::string&line:lines){ bool allowed=true; std::string strippedLine=line.substr(line.find(':')+2); size_t semiColon=strippedLine.find(';'); int min_red=0,min_green=0,min_blue=0; #pragma region Parse by Semi-Colon while(semiColon!=std::string::npos){ std::string pull=strippedLine.substr(0,semiColon); #pragma region Parse by Spaces size_t space=pull.find(' '); while(space!=std::string::npos){ std::string numb=pull.substr(0,space); int number=atoi(numb.c_str()); if(pull[space+1]=='b'){ if(number>min_blue)min_blue=number; }else if(pull[space+1]=='g'){ if(number>min_green)min_green=number; }else if(pull[space+1]=='r'){ if(number>min_red)min_red=number; } if(pull.find(' ',space)==std::string::npos)break; pull=pull.substr(pull.find(' ',space)+1); space=pull.find(' '); } #pragma endregion strippedLine=strippedLine.substr(semiColon+2); semiColon=strippedLine.find(';'); } #pragma endregion #pragma region Parse by Spaces std::string pull=strippedLine; size_t space=pull.find(' '); while(space!=std::string::npos){ std::string numb=pull.substr(0,space); int number=atoi(numb.c_str()); if(pull[space+1]=='b'){ if(number>min_blue)min_blue=number; }else if(pull[space+1]=='g'){ if(number>min_green)min_green=number; }else if(pull[space+1]=='r'){ if(number>min_red)min_red=number; } if(pull.find(' ',space)==std::string::npos)break; pull=pull.substr(pull.find(' ',space)+1); space=pull.find(' '); } #pragma endregion uint32_t power=min_red*min_green*min_blue; std::cout<<"======="<limit_red||green>limit_green||blue>limit_blue); strippedLine=strippedLine.substr(semiColon+2); semiColon=strippedLine.find(';'); } #pragma endregion #pragma region Parse by Spaces int red=0,green=0,blue=0; std::string pull=strippedLine; size_t space=pull.find(' '); while(space!=std::string::npos){ std::string numb=pull.substr(0,space); int number=atoi(numb.c_str()); if(pull[space+1]=='b'){ blue=number; }else if(pull[space+1]=='g'){ green=number; }else if(pull[space+1]=='r'){ red=number; } if(pull.find(' ',space)==std::string::npos)break; pull=pull.substr(pull.find(' ',space)+1); space=pull.find(' '); } #pragma endregion std::cout<<"Pulled out "<limit_red||green>limit_green||blue>limit_blue); std::cout<<"======="<