From fa33f71139e131e530e265f3aa8f5f4f1c7d6a25 Mon Sep 17 00:00:00 2001 From: Philippe Zwietering Date: Fri, 16 Dec 2022 16:20:09 +0100 Subject: [PATCH] Finished day 9 part 1 aoc --- advent_of_code/2022/9/main.cpp | 63 +++++++++++++++------------------- 1 file changed, 27 insertions(+), 36 deletions(-) diff --git a/advent_of_code/2022/9/main.cpp b/advent_of_code/2022/9/main.cpp index cf119bb..64fd2a7 100644 --- a/advent_of_code/2022/9/main.cpp +++ b/advent_of_code/2022/9/main.cpp @@ -5,50 +5,39 @@ using namespace std; using Coords = pair; void moveTail(const Coords& head, Coords& tail){ - if(head.first - tail.first > 1){ - tail.first++; - } else if(head.first - tail.first < -1){ - tail.first--; + if(abs(head.first - tail.first) <= 1 && abs(head.second - tail.second) <= 1){ + return; } - if(head.second - tail.second > 1){ + if(head.first == tail.first){ + if(head.second > tail.second){ + tail.second++; + } else{ + tail.second--; + } + } else if(head.second == tail.second){ + if(head.first > tail.first){ + tail.first++; + } else{ + tail.first--; + } + } else if(head.first > tail.first && head.second > tail.second){ + tail.first++; tail.second++; - } else if(head.second - tail.second < -1){ + } else if(head.first < tail.first && head.second > tail.second){ + tail.first--; + tail.second++; + } else if(head.first > tail.first && head.second < tail.second){ + tail.first++; + tail.second--; + } else if(head.first < tail.first && head.second < tail.second){ + tail.first--; tail.second--; } - // if(abs(head.first - tail.first) > 1 || abs(head.second - tail.second) > 1){ - // if(abs(head.first - tail.first) >= 1 && abs(head.second - tail.second) >= 1){ - // if(head.first > tail.first && head.second > tail.second){ - // tail.first++; - // tail.second++; - // } else if(head.first > tail.first && head.second < tail.second){ - // tail.first++; - // tail.second--; - // } else if(head.first < tail.first && head.second > tail.second){ - // tail.first--; - // tail.second++; - // } else{ - // tail.first--; - // tail.second--; - // } - // } else if(abs(head.first - tail.first > 1)){ - // if(head.first > tail.first){ - // tail.first++; - // } else{ - // tail.first--; - // } - // } else{ - // if(head.second > tail.second){ - // tail.second++; - // } else{ - // tail.second--; - // } - // } - // } } int main(){ - ifstream input_file("test.txt"); + ifstream input_file("input.txt"); string line; Coords head(0, 0), tail(0, 0); @@ -75,6 +64,8 @@ int main(){ moveTail(head, tail); visited_by_tail.insert(tail); steps--; + + // cout << head.first << " " << head.second << " " << tail.first << " " << tail.second << '\n'; } }