master
Benjamin Kraft 3 years ago
parent c3677a6dea
commit 4cf318a360
  1. 2
      fill.py
  2. 1
      pre.cpp
  3. 8
      pre.h
  4. 8
      src/Day.h
  5. 1
      src/days/01/Day01.cpp
  6. 8
      src/days/01/Day01.h
  7. 1
      src/days/02/Day02.cpp
  8. 8
      src/days/02/Day02.h
  9. 1
      src/days/03/Day03.cpp
  10. 8
      src/days/03/Day03.h
  11. 1
      src/days/04/Day04.cpp
  12. 8
      src/days/04/Day04.h
  13. 1
      src/days/05/Day05.cpp
  14. 8
      src/days/05/Day05.h
  15. 1
      src/days/06/Day06.cpp
  16. 8
      src/days/06/Day06.h
  17. 1
      src/days/07/Day07.cpp
  18. 8
      src/days/07/Day07.h
  19. 1
      src/days/08/Day08.cpp
  20. 8
      src/days/08/Day08.h
  21. 1
      src/days/09/Day09.cpp
  22. 8
      src/days/09/Day09.h
  23. 1
      src/days/10/Day10.cpp
  24. 8
      src/days/10/Day10.h
  25. 1
      src/days/11/Day11.cpp
  26. 8
      src/days/11/Day11.h
  27. 1
      src/days/12/Day12.cpp
  28. 8
      src/days/12/Day12.h
  29. 1
      src/days/13/Day13.cpp
  30. 8
      src/days/13/Day13.h
  31. 1
      src/days/14/Day14.cpp
  32. 8
      src/days/14/Day14.h
  33. 1
      src/days/15/Day15.cpp
  34. 8
      src/days/15/Day15.h
  35. 1
      src/days/16/Day16.cpp
  36. 8
      src/days/16/Day16.h
  37. 1
      src/days/17/Day17.cpp
  38. 8
      src/days/17/Day17.h
  39. 1
      src/days/18/Day18.cpp
  40. 8
      src/days/18/Day18.h
  41. 1
      src/days/19/Day19.cpp
  42. 8
      src/days/19/Day19.h
  43. 1
      src/days/20/Day20.cpp
  44. 8
      src/days/20/Day20.h
  45. 1
      src/days/21/Day21.cpp
  46. 8
      src/days/21/Day21.h
  47. 1
      src/days/22/Day22.cpp
  48. 8
      src/days/22/Day22.h
  49. 1
      src/days/23/Day23.cpp
  50. 8
      src/days/23/Day23.h
  51. 1
      src/days/24/Day24.cpp
  52. 8
      src/days/24/Day24.h
  53. 1
      src/days/25/Day25.cpp
  54. 8
      src/days/25/Day25.h
  55. 8
      src/days/days.h
  56. 14
      src/main.cpp
  57. 5
      src/util.h

@ -10,7 +10,7 @@ for dayNum in range(1, 26):
try:
os.mkdir(dirName)
except OSError:
continue
pass
with open(f"{dirName}/Day{pad}.h", "w") as file:
file.write(preH.replace("XX", pad))
with open(f"{dirName}/Day{pad}.cpp", "w") as file:

@ -1,4 +1,3 @@
#include "DayXX.h"
Result DayXX::Task1() {

@ -1,14 +1,10 @@
#ifndef ADVENTOFCODE2022_DAYXX_H
#define ADVENTOFCODE2022_DAYXX_H
#pragma once
#include "../../Day.h"
class DayXX : public Day {
protected:
Result Task1() override;
Result Task2() override;
};
#endif

@ -1,5 +1,4 @@
#ifndef ADVENTOFCODE2022_DAY_H
#define ADVENTOFCODE2022_DAY_H
#pragma once
#include <chrono>
#include "util.h"
@ -11,8 +10,11 @@ typedef std::vector<std::string> Input;
class Day {
protected:
Input input;
virtual Result Task1() { return ""; }
virtual Result Task2() { return ""; }
public:
int run(Input &_input) {
input = _input;
@ -36,5 +38,3 @@ public:
return 0;
}
};
#endif

@ -1,4 +1,3 @@
#include "Day01.h"
Result Day01::Task1() {

@ -1,14 +1,10 @@
#ifndef ADVENTOFCODE2022_DAY01_H
#define ADVENTOFCODE2022_DAY01_H
#pragma once
#include "../../Day.h"
class Day01 : public Day {
protected:
Result Task1() override;
Result Task2() override;
};
#endif

@ -1,4 +1,3 @@
#include "Day02.h"
Result Day02::Task1() {

@ -1,14 +1,10 @@
#ifndef ADVENTOFCODE2022_DAY02_H
#define ADVENTOFCODE2022_DAY02_H
#pragma once
#include "../../Day.h"
class Day02 : public Day {
protected:
Result Task1() override;
Result Task2() override;
};
#endif

@ -1,4 +1,3 @@
#include "Day03.h"
Result Day03::Task1() {

@ -1,14 +1,10 @@
#ifndef ADVENTOFCODE2022_DAY03_H
#define ADVENTOFCODE2022_DAY03_H
#pragma once
#include "../../Day.h"
class Day03 : public Day {
protected:
Result Task1() override;
Result Task2() override;
};
#endif

@ -1,4 +1,3 @@
#include "Day04.h"
Result Day04::Task1() {

@ -1,14 +1,10 @@
#ifndef ADVENTOFCODE2022_DAY04_H
#define ADVENTOFCODE2022_DAY04_H
#pragma once
#include "../../Day.h"
class Day04 : public Day {
protected:
Result Task1() override;
Result Task2() override;
};
#endif

@ -1,4 +1,3 @@
#include "Day05.h"
Result Day05::Task1() {

@ -1,14 +1,10 @@
#ifndef ADVENTOFCODE2022_DAY05_H
#define ADVENTOFCODE2022_DAY05_H
#pragma once
#include "../../Day.h"
class Day05 : public Day {
protected:
Result Task1() override;
Result Task2() override;
};
#endif

@ -1,4 +1,3 @@
#include "Day06.h"
Result Day06::Task1() {

@ -1,14 +1,10 @@
#ifndef ADVENTOFCODE2022_DAY06_H
#define ADVENTOFCODE2022_DAY06_H
#pragma once
#include "../../Day.h"
class Day06 : public Day {
protected:
Result Task1() override;
Result Task2() override;
};
#endif

@ -1,4 +1,3 @@
#include "Day07.h"
Result Day07::Task1() {

@ -1,14 +1,10 @@
#ifndef ADVENTOFCODE2022_DAY07_H
#define ADVENTOFCODE2022_DAY07_H
#pragma once
#include "../../Day.h"
class Day07 : public Day {
protected:
Result Task1() override;
Result Task2() override;
};
#endif

@ -1,4 +1,3 @@
#include "Day08.h"
Result Day08::Task1() {

@ -1,14 +1,10 @@
#ifndef ADVENTOFCODE2022_DAY08_H
#define ADVENTOFCODE2022_DAY08_H
#pragma once
#include "../../Day.h"
class Day08 : public Day {
protected:
Result Task1() override;
Result Task2() override;
};
#endif

@ -1,4 +1,3 @@
#include "Day09.h"
Result Day09::Task1() {

@ -1,14 +1,10 @@
#ifndef ADVENTOFCODE2022_DAY09_H
#define ADVENTOFCODE2022_DAY09_H
#pragma once
#include "../../Day.h"
class Day09 : public Day {
protected:
Result Task1() override;
Result Task2() override;
};
#endif

@ -1,4 +1,3 @@
#include "Day10.h"
Result Day10::Task1() {

@ -1,14 +1,10 @@
#ifndef ADVENTOFCODE2022_DAY10_H
#define ADVENTOFCODE2022_DAY10_H
#pragma once
#include "../../Day.h"
class Day10 : public Day {
protected:
Result Task1() override;
Result Task2() override;
};
#endif

@ -1,4 +1,3 @@
#include "Day11.h"
Result Day11::Task1() {

@ -1,14 +1,10 @@
#ifndef ADVENTOFCODE2022_DAY11_H
#define ADVENTOFCODE2022_DAY11_H
#pragma once
#include "../../Day.h"
class Day11 : public Day {
protected:
Result Task1() override;
Result Task2() override;
};
#endif

@ -1,4 +1,3 @@
#include "Day12.h"
Result Day12::Task1() {

@ -1,14 +1,10 @@
#ifndef ADVENTOFCODE2022_DAY12_H
#define ADVENTOFCODE2022_DAY12_H
#pragma once
#include "../../Day.h"
class Day12 : public Day {
protected:
Result Task1() override;
Result Task2() override;
};
#endif

@ -1,4 +1,3 @@
#include "Day13.h"
Result Day13::Task1() {

@ -1,14 +1,10 @@
#ifndef ADVENTOFCODE2022_DAY13_H
#define ADVENTOFCODE2022_DAY13_H
#pragma once
#include "../../Day.h"
class Day13 : public Day {
protected:
Result Task1() override;
Result Task2() override;
};
#endif

@ -1,4 +1,3 @@
#include "Day14.h"
Result Day14::Task1() {

@ -1,14 +1,10 @@
#ifndef ADVENTOFCODE2022_DAY14_H
#define ADVENTOFCODE2022_DAY14_H
#pragma once
#include "../../Day.h"
class Day14 : public Day {
protected:
Result Task1() override;
Result Task2() override;
};
#endif

@ -1,4 +1,3 @@
#include "Day15.h"
Result Day15::Task1() {

@ -1,14 +1,10 @@
#ifndef ADVENTOFCODE2022_DAY15_H
#define ADVENTOFCODE2022_DAY15_H
#pragma once
#include "../../Day.h"
class Day15 : public Day {
protected:
Result Task1() override;
Result Task2() override;
};
#endif

@ -1,4 +1,3 @@
#include "Day16.h"
Result Day16::Task1() {

@ -1,14 +1,10 @@
#ifndef ADVENTOFCODE2022_DAY16_H
#define ADVENTOFCODE2022_DAY16_H
#pragma once
#include "../../Day.h"
class Day16 : public Day {
protected:
Result Task1() override;
Result Task2() override;
};
#endif

@ -1,4 +1,3 @@
#include "Day17.h"
Result Day17::Task1() {

@ -1,14 +1,10 @@
#ifndef ADVENTOFCODE2022_DAY17_H
#define ADVENTOFCODE2022_DAY17_H
#pragma once
#include "../../Day.h"
class Day17 : public Day {
protected:
Result Task1() override;
Result Task2() override;
};
#endif

@ -1,4 +1,3 @@
#include "Day18.h"
Result Day18::Task1() {

@ -1,14 +1,10 @@
#ifndef ADVENTOFCODE2022_DAY18_H
#define ADVENTOFCODE2022_DAY18_H
#pragma once
#include "../../Day.h"
class Day18 : public Day {
protected:
Result Task1() override;
Result Task2() override;
};
#endif

@ -1,4 +1,3 @@
#include "Day19.h"
Result Day19::Task1() {

@ -1,14 +1,10 @@
#ifndef ADVENTOFCODE2022_DAY19_H
#define ADVENTOFCODE2022_DAY19_H
#pragma once
#include "../../Day.h"
class Day19 : public Day {
protected:
Result Task1() override;
Result Task2() override;
};
#endif

@ -1,4 +1,3 @@
#include "Day20.h"
Result Day20::Task1() {

@ -1,14 +1,10 @@
#ifndef ADVENTOFCODE2022_DAY20_H
#define ADVENTOFCODE2022_DAY20_H
#pragma once
#include "../../Day.h"
class Day20 : public Day {
protected:
Result Task1() override;
Result Task2() override;
};
#endif

@ -1,4 +1,3 @@
#include "Day21.h"
Result Day21::Task1() {

@ -1,14 +1,10 @@
#ifndef ADVENTOFCODE2022_DAY21_H
#define ADVENTOFCODE2022_DAY21_H
#pragma once
#include "../../Day.h"
class Day21 : public Day {
protected:
Result Task1() override;
Result Task2() override;
};
#endif

@ -1,4 +1,3 @@
#include "Day22.h"
Result Day22::Task1() {

@ -1,14 +1,10 @@
#ifndef ADVENTOFCODE2022_DAY22_H
#define ADVENTOFCODE2022_DAY22_H
#pragma once
#include "../../Day.h"
class Day22 : public Day {
protected:
Result Task1() override;
Result Task2() override;
};
#endif

@ -1,4 +1,3 @@
#include "Day23.h"
Result Day23::Task1() {

@ -1,14 +1,10 @@
#ifndef ADVENTOFCODE2022_DAY23_H
#define ADVENTOFCODE2022_DAY23_H
#pragma once
#include "../../Day.h"
class Day23 : public Day {
protected:
Result Task1() override;
Result Task2() override;
};
#endif

@ -1,4 +1,3 @@
#include "Day24.h"
Result Day24::Task1() {

@ -1,14 +1,10 @@
#ifndef ADVENTOFCODE2022_DAY24_H
#define ADVENTOFCODE2022_DAY24_H
#pragma once
#include "../../Day.h"
class Day24 : public Day {
protected:
Result Task1() override;
Result Task2() override;
};
#endif

@ -1,4 +1,3 @@
#include "Day25.h"
Result Day25::Task1() {

@ -1,14 +1,10 @@
#ifndef ADVENTOFCODE2022_DAY25_H
#define ADVENTOFCODE2022_DAY25_H
#pragma once
#include "../../Day.h"
class Day25 : public Day {
protected:
Result Task1() override;
Result Task2() override;
};
#endif

@ -1,6 +1,4 @@
#ifndef ADVENTOFCODE2022_DAYS_H
#define ADVENTOFCODE2022_DAYS_H
#pragma once
#include "01/Day01.h"
#include "02/Day02.h"
@ -28,7 +26,7 @@
#include "24/Day24.h"
#include "25/Day25.h"
std::vector<Day*> getAllDays(){
std::vector<Day *> getAllDays() {
return {
new Day01(),
new Day02(),
@ -57,5 +55,3 @@ std::vector<Day*> getAllDays(){
new Day25()
};
}
#endif

@ -3,7 +3,7 @@
#include "days/days.h"
std::vector<std::string> getInput(int day, std::string key, bool useTestInput){
std::vector<std::string> getInput(int day, std::string key, bool useTestInput) {
std::vector<std::string> result;
char dayStrPadded[3];
@ -11,14 +11,14 @@ std::vector<std::string> getInput(int day, std::string key, bool useTestInput){
std::string postfix = useTestInput ? "_testInput.txt" : "_input.txt";
std::string localFilePath = "input/" + std::string(dayStrPadded) + postfix;
if (!std::filesystem::exists({localFilePath})){
if (!std::filesystem::exists({localFilePath})) {
if (key.empty())
return result;
std::string dayStr = std::to_string(day);
std::string url = "https://adventofcode.com/2021/day/" + dayStr + "/input";
std::cout << "Input does not exist. Fetching from " + url << std::endl;
std::ofstream file(localFilePath);
file << cpr::Get(cpr::Url {url}, cpr::Cookies{{"session", key}}).text;
file << cpr::Get(cpr::Url{url}, cpr::Cookies{{"session", key}}).text;
file.close();
}
@ -33,7 +33,7 @@ std::vector<std::string> getInput(int day, std::string key, bool useTestInput){
return result;
}
std::string getSessionKey(){
std::string getSessionKey() {
std::string key;
std::ifstream file("session");
if (!file.good())
@ -50,11 +50,11 @@ int main(int argc, char *argv[]) {
auto days = getAllDays();
std::filesystem::create_directory("input");
for (int i = 1; i < argc; i++){
for (int i = 1; i < argc; i++) {
int dayNum = std::stoi(argv[i]);
std::cout << "Running day " << dayNum << std::endl;
Input input = getInput(dayNum, key, useTestInput);
Day* day = days[dayNum - 1];
Day *day = days[dayNum - 1];
int code = day->run(input);
if (code != 0)
return code;
@ -64,5 +64,3 @@ int main(int argc, char *argv[]) {
return 0;
}

@ -1,11 +1,8 @@
#ifndef ADVENTOFCODE2022_UTIL_H
#define ADVENTOFCODE2022_UTIL_H
#pragma once
#include <vector>
#include <numeric>
#include <string>
#include <tuple>
#include <iostream>
#endif

Loading…
Cancel
Save