#define OLC_PGE_APPLICATION #include "pixelGameEngine.h" #include "olcutils.h" using namespace olc; struct Blueprint{ int oreRobotCost,clayRobotCost,obsidianRobotCost1,obsidianRobotCost2,geodeRobotCost1,geodeRobotCost2; }; int runSimulation(Blueprint print){ int minute=0; int ore=0,clay=0,obsidian=0,geodes=0; int oreRobots=1/*We start with 1 free ore robot*/,clayRobots=0,obsidianRobots=0,geodeRobots=0; int oreRequired=print.oreRobotCost+print.clayRobotCost+print.obsidianRobotCost1+print.geodeRobotCost1; int clayRequired=print.obsidianRobotCost2; int obsidianRequired=print.geodeRobotCost2; int geodeRequired=print.geodeRobotCost2; int totalRequired=oreRequired+clayRequired+obsidianRequired+1; float oreRatio=(float)oreRequired/totalRequired; float clayRatio=(float)clayRequired/totalRequired; float obsidianRatio=(float)obsidianRequired/totalRequired; float geodeRatio=(float)1/totalRequired; float orePct=0; float clayPct=0; float obsidianPct=0; float geodePct=0; for (int i=0;i<24;i++){ //Find out total robots needed for one geode robot. //Geode: 2ore:19obsidian //Obsidian 4ore:7clay //Clay 4ore //Ore 4ore std::cout<<"Minute "<0){ std::cout<<"Collected "<0){ std::cout<<"Collected "<0){ std::cout<<"Collected "<0){ std::cout<<"Collected "<=print.geodeRobotCost1&&obsidian>=print.geodeRobotCost2&&geodePct=print.obsidianRobotCost1&&clay>=print.obsidianRobotCost2&&obsidianPct=print.oreRobotCost&&orePct=print.clayRobotCost&&clayPctblueprints; while (file.good()){ std::string line; std::getline(file,line); std::cout<0){ Blueprint newBlueprint; int marker=0; for (int i=0;i<6;i++){ marker=line.find(' ',marker+1); } newBlueprint.oreRobotCost=std::atoi(line.substr(marker+1,line.find(' ',marker+1)-marker).c_str()); for (int i=0;i<6;i++){ marker=line.find(' ',marker+1); } newBlueprint.clayRobotCost=std::atoi(line.substr(marker+1,line.find(' ',marker+1)-marker).c_str()); for (int i=0;i<6;i++){ marker=line.find(' ',marker+1); } newBlueprint.obsidianRobotCost1=std::atoi(line.substr(marker+1,line.find(' ',marker+1)-marker).c_str()); for (int i=0;i<3;i++){ marker=line.find(' ',marker+1); } newBlueprint.obsidianRobotCost2=std::atoi(line.substr(marker+1,line.find(' ',marker+1)-marker).c_str()); for (int i=0;i<6;i++){ marker=line.find(' ',marker+1); } newBlueprint.geodeRobotCost1=std::atoi(line.substr(marker+1,line.find(' ',marker+1)-marker).c_str()); for (int i=0;i<3;i++){ marker=line.find(' ',marker+1); } newBlueprint.geodeRobotCost2=std::atoi(line.substr(marker+1,line.find(' ',marker+1)-marker).c_str()); std::cout<<"Blueprint "<