aoc/2022/day-5.cpp

89 lines
2.5 KiB
C++

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
int main(int argc, char* argv[]){
std::cout<<"paste input followed by a ; IGNORE THE NUMBER LINE!!\n";
std::vector<std::vector<char>> stack = {{}};
std::vector<std::vector<int>> moves;
int step = 0;
std::string line = "";
while(getline(std::cin, line)){
if(line==";")
break;
if(line==""&&step==0){
step=1;
}
if(step==0){
//parsing initial boxes
for(int i = 0;i<=line.size();i+=4){
if(line[i+1]!=' '){
while(i/4>=stack.size()){
stack.push_back({});
}
stack[i/4].push_back(line[i+1]);
}
}
} else {
//command mode
if(line[0]!=' '){ //ignore the number line
std::string s1 = "";
int index = 0;
//moves.push_back({0,0,0});
std::vector<int> temp = {0,0,0};
std::vector<int> bu = temp;
for(int i = 0; i<=line.size();i++){
if(line[i]==' '){
for(int z = i+1; z!=line.size();z++){
if(line[z]==' ')
break;
s1+=line[z];
}
for(int z = 0; z!=temp.size();z++){
if(temp[z]==0){
temp[z]=stoi(s1);
break;
}
}
i+=s1.size()+1;
s1 = "";
}
}
if(temp!=bu )
moves.push_back(temp);
}
//std::cout<<s1;
}
}
std::vector<std::vector<char>> p2_stack = stack;
for(int i = 0;i!=moves.size();i++){
//for(int z = 0; z!=moves[i].size();z++){
//std::cout<<stack[moves[i][1]-1][0];
for(int z = 0;z!=moves[i][0];z++){
stack[moves[i][2]-1].insert(stack[moves[i][2]-1].begin(),stack[moves[i][1]-1][0]);
stack[moves[i][1]-1].erase(stack[moves[i][1]-1].begin());
}
for(int z = moves[i][0]-1;z>=0;z--){
p2_stack[moves[i][2]-1].insert(p2_stack[moves[i][2]-1].begin(),p2_stack[moves[i][1]-1][z]);
p2_stack[moves[i][1]-1].erase(p2_stack[moves[i][1]-1].begin()+z);
}
//}
}
//std::cout<<moves.size();
std::cout<<"part 1 :";
for(int i = 0; i!=stack.size();i++)
std::cout<<stack[i][0];
std::cout<<std::endl<<"part 2 :";
for(int i = 0; i!=p2_stack.size();i++)
std::cout<<p2_stack[i][0];
return 0;
}