Added 2025 day 1.
This commit is contained in:
2
2025/1/Makefile
Normal file
2
2025/1/Makefile
Normal file
@@ -0,0 +1,2 @@
|
||||
a.out: main.cpp
|
||||
clang++ -std=c++20 main.cpp
|
||||
4780
2025/1/data.txt
Normal file
4780
2025/1/data.txt
Normal file
File diff suppressed because it is too large
Load Diff
10
2025/1/data_test.txt
Normal file
10
2025/1/data_test.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
L68
|
||||
L30
|
||||
R48
|
||||
L5
|
||||
R60
|
||||
L55
|
||||
L1
|
||||
L99
|
||||
R14
|
||||
L82
|
||||
67
2025/1/main.cpp
Normal file
67
2025/1/main.cpp
Normal file
@@ -0,0 +1,67 @@
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
int main()
|
||||
{
|
||||
std::vector<std::string> input;
|
||||
|
||||
std::ifstream ifs("data.txt");
|
||||
if(!ifs.is_open())
|
||||
{
|
||||
std::cerr << "Missing data.txt." << std::endl;
|
||||
return -1;
|
||||
}
|
||||
|
||||
std::string line;
|
||||
while(!ifs.eof())
|
||||
{
|
||||
ifs >> line;
|
||||
if(ifs.eof())
|
||||
break;
|
||||
|
||||
input.push_back(line);
|
||||
}
|
||||
|
||||
int answer = 0;
|
||||
int num = 50;
|
||||
for(const std::string &line : input)
|
||||
{
|
||||
bool to_right = ('R' == line[0]);
|
||||
int amount = std::atoi(line.substr(1).c_str());
|
||||
|
||||
if(!to_right)
|
||||
amount *= -1;
|
||||
|
||||
num += amount;
|
||||
num %= 100;
|
||||
if(num == 0)
|
||||
++answer;
|
||||
}
|
||||
|
||||
std::cout << "Part 1: " << answer << std::endl;
|
||||
|
||||
answer = 0;
|
||||
num = 50;
|
||||
for(const std::string &line : input)
|
||||
{
|
||||
bool to_right = ('R' == line[0]);
|
||||
int amount = std::atoi(line.substr(1).c_str());
|
||||
|
||||
// slow, but accurate. :)
|
||||
for(auto i = 0; i < amount; ++i)
|
||||
{
|
||||
num += (to_right ? 1 : -1);
|
||||
num %= 100;
|
||||
if(num < 0)
|
||||
num += 100;
|
||||
if(num == 0)
|
||||
++answer;
|
||||
}
|
||||
}
|
||||
|
||||
std::cout << "Part 2: " << answer << std::endl;
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user