Advent-of-Code/2022/6/main2.cpp

53 lines
950 B
C++

#include <fstream>
#include <iostream>
#include <string>
#include <vector>
int main()
{
std::ifstream ifs("data.txt");
if(!ifs.is_open())
{
std::cerr << "Missing data.txt." << std::endl;
return -1;
}
for(std::string line; std::getline(ifs, line); )
{
if(line == "")
continue;
std::vector<char> buf;
int idx = 0;
for(const char &ch : line)
{
++idx;
// clear out from beginning up until this character is found:
auto i = std::find(buf.begin(), buf.end(), ch);
if(i != buf.end())
buf.erase(buf.begin(), i+1);
buf.push_back(ch);
if(buf.size() == 4)
{
std::cout << "Start-of-Packet at index " << idx << ": ";
for(const char &ch : buf)
std::cout << ch;
std::cout << std::endl;
}
else if(buf.size() == 14)
{
std::cout << "Start-of-Message at index " << idx << ": ";
for(const char &ch : buf)
std::cout << ch;
std::cout << std::endl;
}
}
}
return 0;
}