#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 const int DAY = 12; Run runInput=FILE1; std::vectorcountGaps(std::string springList){ std::vectorsizes; int hashRun=0; for(char c:springList){ if(c=='#')hashRun++; else{ if(hashRun>0)sizes.push_back(hashRun); hashRun=0; } } if(hashRun>0)sizes.push_back(hashRun); return sizes; } size_t CalculateCombinations(std::string springList,std::vectorsizes){ long combinationCount=0; size_t questionMarkCount=std::count(springList.begin(),springList.end(),'?'); size_t possibilities=std::pow(2,questionMarkCount); for(size_t i=0;imodifiedSizeList=countGaps(modifiedSpringList); if(sizes.size()==modifiedSizeList.size()&&std::equal(sizes.begin(),sizes.end(),modifiedSizeList.begin())){ combinationCount++; } } return combinationCount; } size_t CalculateCombinationsQuick(std::string springList,std::vectorsizes){ long long total=0; size_t combinationCount=CalculateCombinations(springList,sizes); size_t combinationCount2=springList[springList.size()-1]=='#'?combinationCount:CalculateCombinations("?"+springList,sizes); size_t combinationCount3=CalculateCombinations(springList+"?",sizes); total+=combinationCount; for(int i=0;i<4;i++){ total*=std::max(combinationCount2,combinationCount3); } return total; } void doStuff(){ long long sum=0; std::vector>>springLists; while(true){ //lines is accessible as a global. for(std::string&line:lines){ std::string springList=line.substr(0,line.find(' ')); std::vectorsizes; std::string sizeList=line.substr(line.find(' ')+1); size_t comma=sizeList.find(','); while(sizeList.length()>0){ int numb=std::stoi(sizeList.substr(0,comma)); sizes.push_back(numb); if(comma==std::string::npos)break; sizeList=sizeList.substr(comma+1); comma=sizeList.find(','); } springLists.push_back({springList,sizes}); } std::sort(springLists.begin(),springLists.end(),[](std::pair>&spring1,std::pair>&spring2){ return std::count(spring1.first.begin(),spring1.first.end(),'?')modifiedSizes=spring.second; for(int i=0;i<4;i++){ modifiedSpringList+="?"+spring.first; std::copy(spring.second.begin(),spring.second.end(),std::back_inserter(modifiedSizes)); } //long long bruteForceTotal=CalculateCombinations(modifiedSpringList,modifiedSizes); long long total=CalculateCombinations(spring.first,spring.second); //std::cout<