Kaynağa Gözat

Solve day two

Jonatan Gezelius 4 yıl önce
ebeveyn
işleme
45f1c6aa7b
4 değiştirilmiş dosya ile 1092 ekleme ve 0 silme
  1. 42 0
      02/a.py
  2. 44 0
      02/b.py
  3. 6 0
      02/example.txt
  4. 1000 0
      02/infile.txt

+ 42 - 0
02/a.py

@@ -0,0 +1,42 @@
+import os, argparse, re
+
+
+def solve_task(filename):
+    horizontal_position = 0
+    depth = 0
+    
+    match_string = r"(?P<command>[a-z]*) (?P<distance>\d*)"
+    matcher = re.compile(match_string)
+    
+    with open(filename) as infile:
+        for raw_line in infile:
+            line = raw_line.rstrip()
+            m = matcher.match(line)
+            command = m.group('command')
+            distance = int(m.group('distance'))
+            
+            match command:
+                case 'forward':
+                    horizontal_position += distance
+                case 'up':
+                    depth -= distance
+                case 'down':
+                    depth += distance
+    
+    print("Current depth: " + str(depth))
+    print("Current horizontal_position: " + str(horizontal_position))
+    print("Product: " + str(depth * horizontal_position))
+    os.system("pause")
+
+def parse_arguments():
+    parser = argparse.ArgumentParser(description="Solves a part of advent of code.",epilog="Have a nice day!")
+    parser.add_argument('filename', nargs='?', default="infile.txt", help='Input file')
+    args = parser.parse_args()
+    return args
+
+def main():
+    args = parse_arguments()
+    solve_task(args.filename)
+
+if __name__ == "__main__":
+    main()

+ 44 - 0
02/b.py

@@ -0,0 +1,44 @@
+import os, argparse, re
+
+
+def solve_task(filename):
+    horizontal_position = 0
+    depth = 0
+    aim = 0
+    
+    match_string = r"(?P<command>[a-z]*) (?P<distance>\d*)"
+    matcher = re.compile(match_string)
+    
+    with open(filename) as infile:
+        for raw_line in infile:
+            line = raw_line.rstrip()
+            m = matcher.match(line)
+            command = m.group('command')
+            distance = int(m.group('distance'))
+            
+            match command:
+                case 'forward':
+                    horizontal_position += distance
+                    depth += aim * distance
+                case 'up':
+                    aim -= distance
+                case 'down':
+                    aim += distance
+    
+    print("Current depth: " + str(depth))
+    print("Current horizontal_position: " + str(horizontal_position))
+    print("Product: " + str(depth * horizontal_position))
+    os.system("pause")
+
+def parse_arguments():
+    parser = argparse.ArgumentParser(description="Solves a part of advent of code.",epilog="Have a nice day!")
+    parser.add_argument('filename', nargs='?', default="infile.txt", help='Input file')
+    args = parser.parse_args()
+    return args
+
+def main():
+    args = parse_arguments()
+    solve_task(args.filename)
+
+if __name__ == "__main__":
+    main()

+ 6 - 0
02/example.txt

@@ -0,0 +1,6 @@
+forward 5
+down 5
+forward 8
+up 3
+down 8
+forward 2

+ 1000 - 0
02/infile.txt

@@ -0,0 +1,1000 @@
+forward 3
+down 7
+forward 7
+down 4
+down 9
+down 7
+forward 5
+forward 9
+forward 3
+forward 8
+down 4
+down 6
+down 3
+forward 7
+forward 1
+forward 4
+down 1
+forward 7
+forward 9
+down 3
+down 1
+down 5
+forward 8
+down 2
+down 9
+forward 3
+down 9
+down 7
+down 6
+down 1
+forward 4
+forward 9
+forward 8
+down 3
+down 9
+down 5
+forward 5
+down 7
+down 7
+up 1
+down 2
+up 1
+down 7
+up 1
+up 1
+down 8
+down 8
+forward 2
+down 5
+forward 9
+forward 8
+forward 4
+up 2
+down 9
+down 7
+forward 4
+up 7
+up 4
+down 4
+down 3
+forward 8
+down 8
+up 2
+up 1
+forward 3
+up 6
+up 8
+down 5
+down 4
+down 4
+forward 1
+down 8
+forward 3
+forward 5
+forward 4
+forward 2
+forward 7
+up 5
+up 2
+forward 2
+forward 5
+down 4
+up 6
+forward 3
+forward 1
+forward 1
+forward 6
+forward 7
+forward 1
+forward 8
+forward 4
+forward 4
+forward 8
+down 6
+down 8
+forward 4
+forward 1
+down 8
+forward 3
+forward 3
+forward 9
+forward 9
+forward 3
+up 1
+down 2
+down 5
+forward 4
+forward 5
+forward 7
+forward 4
+forward 4
+up 5
+forward 1
+down 9
+down 9
+down 1
+up 7
+down 8
+up 6
+down 4
+forward 7
+down 8
+down 1
+forward 4
+forward 5
+forward 9
+down 2
+forward 7
+forward 7
+up 2
+up 1
+forward 9
+forward 1
+forward 7
+up 3
+forward 8
+forward 1
+down 6
+down 6
+down 4
+forward 2
+forward 1
+down 3
+down 4
+down 2
+forward 9
+up 8
+down 4
+down 3
+down 1
+down 1
+forward 6
+forward 6
+down 7
+forward 1
+forward 5
+forward 9
+forward 5
+forward 1
+up 8
+forward 7
+up 3
+forward 6
+down 5
+up 8
+down 4
+down 8
+forward 2
+up 7
+forward 9
+down 9
+forward 1
+down 5
+forward 8
+down 7
+forward 8
+forward 1
+forward 5
+down 4
+down 1
+forward 4
+up 6
+down 3
+down 1
+forward 1
+forward 1
+up 8
+down 9
+forward 8
+forward 5
+down 5
+forward 1
+up 9
+down 6
+down 4
+up 2
+forward 5
+down 7
+up 1
+forward 3
+up 5
+forward 9
+up 6
+down 4
+forward 6
+down 8
+down 2
+forward 3
+forward 4
+down 5
+down 7
+down 4
+up 3
+up 8
+down 8
+up 8
+down 8
+forward 8
+down 3
+up 3
+forward 8
+down 6
+forward 2
+down 8
+down 5
+up 2
+forward 1
+forward 4
+down 1
+forward 5
+forward 5
+forward 2
+forward 2
+forward 4
+down 7
+forward 6
+up 6
+down 8
+forward 4
+forward 6
+forward 2
+down 8
+down 2
+up 1
+down 8
+forward 9
+up 5
+forward 8
+up 9
+down 1
+down 2
+forward 6
+down 9
+forward 3
+up 8
+up 4
+down 8
+forward 2
+down 1
+forward 6
+forward 4
+down 4
+forward 4
+up 8
+down 6
+forward 3
+up 2
+up 6
+down 1
+down 3
+down 1
+up 6
+down 9
+up 6
+forward 9
+down 4
+forward 3
+forward 1
+up 7
+down 1
+forward 5
+up 1
+up 8
+forward 5
+down 5
+forward 2
+up 8
+up 7
+forward 4
+up 7
+up 4
+forward 5
+forward 3
+down 9
+forward 1
+down 8
+forward 3
+up 3
+down 7
+forward 4
+down 7
+down 5
+down 8
+down 8
+forward 6
+forward 5
+up 4
+down 6
+forward 4
+up 2
+up 4
+down 4
+down 9
+forward 7
+down 8
+forward 6
+forward 5
+up 8
+down 6
+forward 1
+up 2
+forward 5
+forward 7
+down 4
+down 6
+forward 9
+forward 2
+up 6
+up 6
+forward 1
+up 6
+forward 8
+down 7
+forward 1
+down 1
+up 9
+up 1
+forward 1
+forward 7
+forward 5
+down 4
+forward 6
+forward 4
+down 8
+up 6
+up 8
+forward 6
+forward 3
+up 6
+forward 6
+down 8
+down 5
+down 5
+down 2
+down 6
+forward 1
+forward 4
+forward 5
+down 5
+forward 6
+forward 2
+forward 2
+up 7
+up 6
+up 7
+forward 7
+forward 6
+down 7
+down 7
+up 4
+forward 5
+forward 2
+down 6
+up 4
+forward 8
+down 1
+down 5
+up 6
+down 4
+down 3
+down 8
+forward 8
+down 9
+forward 8
+forward 6
+down 4
+down 3
+forward 6
+up 4
+up 9
+forward 3
+down 3
+down 9
+forward 1
+down 7
+forward 2
+up 7
+down 6
+forward 5
+down 8
+down 1
+forward 8
+down 4
+up 3
+down 5
+forward 6
+down 7
+forward 3
+forward 6
+forward 8
+forward 6
+down 4
+down 6
+forward 9
+up 8
+forward 2
+forward 8
+forward 1
+forward 1
+forward 3
+forward 8
+forward 6
+forward 8
+down 5
+down 2
+down 6
+up 4
+forward 5
+forward 9
+forward 1
+down 3
+down 6
+down 7
+forward 5
+forward 8
+up 1
+forward 4
+up 3
+forward 6
+down 3
+down 7
+down 1
+down 1
+forward 8
+forward 3
+forward 2
+forward 1
+forward 3
+forward 7
+up 6
+down 8
+forward 3
+forward 8
+forward 1
+forward 4
+up 3
+down 7
+up 9
+up 6
+forward 1
+forward 6
+forward 5
+down 5
+down 2
+forward 8
+up 8
+down 4
+forward 6
+down 2
+forward 1
+down 8
+forward 2
+forward 9
+forward 1
+down 9
+down 1
+down 9
+down 1
+up 9
+forward 3
+forward 7
+forward 3
+down 5
+up 3
+forward 4
+up 1
+forward 2
+down 8
+forward 8
+down 1
+up 9
+down 7
+forward 9
+up 6
+down 3
+forward 9
+down 2
+down 3
+up 5
+up 5
+forward 8
+down 2
+forward 2
+up 3
+down 8
+down 1
+down 9
+forward 5
+down 5
+down 5
+down 4
+down 8
+forward 7
+up 3
+up 4
+up 4
+up 7
+down 2
+down 6
+up 3
+down 9
+up 2
+forward 6
+forward 1
+down 7
+down 5
+forward 6
+down 6
+up 4
+down 4
+down 8
+up 5
+forward 9
+down 8
+forward 1
+forward 2
+forward 8
+forward 2
+forward 3
+up 9
+up 8
+up 9
+up 6
+down 5
+forward 7
+up 8
+forward 1
+down 3
+down 8
+forward 3
+up 6
+down 2
+forward 2
+up 4
+up 4
+forward 6
+forward 1
+forward 4
+down 3
+down 1
+up 7
+down 9
+up 1
+down 9
+down 4
+up 2
+forward 8
+down 3
+forward 7
+up 6
+forward 7
+up 2
+forward 5
+down 3
+up 2
+down 3
+down 8
+forward 5
+down 8
+forward 7
+up 6
+down 4
+forward 4
+down 1
+up 3
+forward 6
+down 1
+down 2
+down 2
+forward 7
+down 6
+down 2
+forward 9
+down 2
+forward 2
+down 2
+forward 6
+down 9
+up 4
+up 7
+up 6
+down 3
+forward 3
+down 7
+down 6
+forward 8
+down 4
+up 3
+down 1
+forward 8
+down 4
+forward 5
+forward 1
+down 7
+forward 5
+up 3
+down 7
+forward 3
+down 4
+up 1
+down 5
+forward 8
+down 2
+forward 9
+forward 3
+up 2
+down 9
+forward 5
+up 7
+down 7
+down 1
+down 7
+down 8
+forward 1
+down 9
+down 7
+forward 4
+down 5
+forward 9
+down 6
+down 1
+forward 2
+up 4
+up 3
+down 1
+forward 4
+up 3
+forward 4
+up 2
+forward 6
+down 6
+up 8
+down 3
+forward 5
+down 2
+forward 9
+down 3
+down 7
+forward 4
+down 5
+up 9
+up 9
+down 4
+up 5
+forward 1
+down 8
+up 8
+up 4
+up 2
+up 8
+forward 5
+down 5
+up 1
+down 6
+down 3
+up 4
+forward 3
+forward 1
+forward 1
+up 4
+forward 1
+down 6
+forward 7
+forward 4
+forward 4
+forward 9
+forward 6
+down 6
+forward 4
+up 7
+down 5
+down 2
+forward 3
+down 7
+forward 8
+down 7
+forward 4
+up 9
+down 1
+forward 3
+forward 1
+forward 4
+down 2
+up 2
+down 1
+down 4
+down 7
+forward 5
+forward 3
+up 5
+forward 1
+down 4
+down 8
+up 4
+up 1
+down 1
+down 4
+down 2
+down 4
+up 8
+down 3
+forward 8
+up 5
+down 4
+forward 9
+forward 7
+down 4
+forward 7
+forward 9
+forward 6
+forward 9
+up 9
+down 3
+up 4
+down 8
+forward 9
+up 2
+up 3
+forward 8
+forward 3
+forward 1
+forward 7
+forward 8
+forward 9
+down 7
+forward 3
+forward 3
+forward 4
+up 8
+forward 1
+forward 5
+up 9
+down 2
+down 7
+forward 5
+up 4
+forward 9
+down 9
+up 2
+forward 7
+down 9
+up 8
+up 1
+up 1
+up 5
+forward 4
+down 2
+forward 7
+down 1
+down 8
+down 8
+forward 3
+forward 8
+up 9
+forward 7
+forward 6
+forward 3
+forward 7
+up 3
+up 6
+forward 5
+forward 5
+down 2
+down 7
+down 7
+up 7
+forward 6
+forward 1
+forward 7
+up 6
+down 9
+forward 7
+forward 1
+up 7
+forward 4
+forward 9
+up 2
+down 5
+down 6
+down 4
+forward 1
+forward 7
+forward 4
+forward 5
+down 2
+forward 5
+down 9
+forward 7
+forward 4
+up 5
+down 6
+forward 2
+forward 4
+forward 8
+up 1
+down 2
+up 9
+forward 6
+down 1
+forward 6
+forward 4
+down 6
+forward 6
+up 4
+down 5
+forward 8
+down 3
+up 4
+forward 3
+down 6
+up 7
+down 8
+down 5
+down 7
+forward 4
+down 1
+forward 5
+up 9
+up 3
+down 4
+forward 9
+forward 6
+forward 1
+up 5
+down 5
+forward 1
+forward 6
+down 4
+up 7
+forward 5
+down 5
+forward 1
+forward 5
+down 4
+forward 6
+down 6
+down 5
+down 5
+forward 4
+down 5
+forward 2
+down 9
+down 6
+down 5
+forward 5
+down 9
+down 7
+up 8
+down 3
+forward 6
+down 4
+forward 8
+forward 9
+down 1
+up 3
+forward 4
+up 3
+forward 7
+down 5
+up 8
+forward 1
+up 1
+down 2
+forward 1
+up 9
+down 4
+forward 1
+up 3
+down 9
+up 8
+down 2
+up 4
+forward 2
+forward 8
+up 8
+forward 9
+forward 2
+down 4
+forward 8
+down 4
+forward 9
+down 1
+up 8
+forward 6
+down 4
+down 8
+forward 1
+forward 1
+forward 5
+forward 9
+up 4
+down 7
+forward 4
+down 5
+forward 1
+down 4
+up 8
+up 4
+forward 2
+forward 9
+down 8
+down 3
+down 2
+up 3
+down 1
+down 8
+forward 5
+down 6
+down 5
+forward 8
+down 8
+down 1
+forward 1
+forward 3
+forward 7
+forward 1
+up 2
+up 3
+forward 9
+down 2
+forward 5
+down 8
+forward 7
+forward 3
+up 5
+forward 1
+forward 1
+up 8
+down 1
+down 2
+down 7
+down 1
+down 9
+forward 7
+down 8
+down 4
+up 8
+forward 1
+down 6
+forward 9
+forward 7
+up 2
+forward 3
+forward 2
+up 3
+up 6
+up 1
+down 1
+up 9
+forward 8
+forward 6
+down 6
+up 8
+down 8
+forward 5
+forward 7
+down 7
+forward 3
+forward 9
+down 8
+down 8
+forward 2
+up 7
+down 4
+down 7
+up 6
+down 3
+forward 1
+forward 8
+down 5
+down 6
+up 5
+forward 8
+forward 6
+up 8
+forward 8
+up 3
+up 6
+up 3
+forward 1