diff --git a/.idea/misc.xml b/.idea/misc.xml
index 9313b0a..c4ce182 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -3,7 +3,7 @@
-
+
\ No newline at end of file
diff --git a/05/05-2-multiprocess-with-gpu-cc.py b/05/05-2-multiprocess-with-gpu-cc.py
new file mode 100644
index 0000000..9a0ff07
--- /dev/null
+++ b/05/05-2-multiprocess-with-gpu-cc.py
@@ -0,0 +1,117 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+from multiprocessing import Pool
+from time import time
+import numpy as np
+from numba import njit
+
+start = time()
+
+seeds = np.ndarray([]) # 0
+seed_to_soil = [] # 1
+soil_to_fertilizer = [] # 2
+fertilizer_to_water = [] # 3
+water_to_light = [] # 4
+light_to_temperature = [] # 5
+temperature_to_humidity = [] # 6
+humidity_to_location = [] # 7
+
+list_number = 0
+# parse input
+input_file = open("input", "r")
+for line in input_file:
+ line = line.strip()
+ if line == "":
+ continue
+ if line.startswith('seeds: '):
+ seeds = [int(x) for x in line.replace('seeds: ', '').split()]
+ if line == "seed-to-soil map:":
+ list_number = 1
+ continue
+ if line == "soil-to-fertilizer map:":
+ list_number = 2
+ continue
+ if line == "fertilizer-to-water map:":
+ list_number = 3
+ continue
+ if line == "water-to-light map:":
+ list_number = 4
+ continue
+ if line == "light-to-temperature map:":
+ list_number = 5
+ continue
+ if line == "temperature-to-humidity map:":
+ list_number = 6
+ continue
+ if line == "humidity-to-location map:":
+ list_number = 7
+ continue
+ if list_number == 1:
+ seed_to_soil.append([int(x) for x in line.split()])
+ elif list_number == 2:
+ soil_to_fertilizer.append([int(x) for x in line.split()])
+ elif list_number == 3:
+ fertilizer_to_water.append([int(x) for x in line.split()])
+ elif list_number == 4:
+ water_to_light.append([int(x) for x in line.split()])
+ elif list_number == 5:
+ light_to_temperature.append([int(x) for x in line.split()])
+ elif list_number == 6:
+ temperature_to_humidity.append([int(x) for x in line.split()])
+ elif list_number == 7:
+ humidity_to_location.append([int(x) for x in line.split()])
+input_file.close()
+
+seed_to_soil = np.asarray(seed_to_soil)
+soil_to_fertilizer = np.asarray(soil_to_fertilizer)
+fertilizer_to_water = np.asarray(fertilizer_to_water)
+water_to_light = np.asarray(water_to_light)
+light_to_temperature = np.asarray(light_to_temperature)
+temperature_to_humidity = np.asarray(temperature_to_humidity)
+humidity_to_location = np.asarray(humidity_to_location)
+
+
+@njit
+def find_dest(num, map_list):
+ for m in map_list:
+ if m[1] <= num < m[1] + m[2]:
+ return num - m[1] + m[0]
+ return num
+
+
+@njit
+def find_min(seed, ra):
+ min_location = - 1
+ print(f"gestartet: Seed: {seed} Range: {ra}")
+ for s in range(seed, seed + ra):
+ soil = find_dest(s, seed_to_soil)
+ fertilizer = find_dest(soil, soil_to_fertilizer)
+ water = find_dest(fertilizer, fertilizer_to_water)
+ light = find_dest(water, water_to_light)
+ temperature = find_dest(light, light_to_temperature)
+ humidity = find_dest(temperature, temperature_to_humidity)
+ location = find_dest(humidity, humidity_to_location)
+ if min_location == -1:
+ min_location = location
+ elif location < min_location:
+ min_location = location
+ print(f"beendet.. Seed: {seed} Range: {ra} MinLocation: {min_location}")
+ return min_location
+
+
+if __name__ == '__main__':
+ num_processes = 10
+
+ input_data = []
+ for i in range(0, len(seeds), 2):
+ input_data.append((seeds[i], seeds[i+1]))
+ # input_data manuell erstellt:
+ # input_data = [(seeds[0], seeds[1]), (seeds[2], seeds[3]), (seeds[4], seeds[5]), (seeds[6], seeds[7]),
+ # (seeds[8], seeds[9]), (seeds[10], seeds[11]), (seeds[12], seeds[13]), (seeds[14], seeds[15]),
+ # (seeds[16], seeds[17]), (seeds[18], seeds[19])]
+
+ with Pool(processes=num_processes) as pool:
+ results = pool.starmap(find_min, input_data)
+ print(results)
+ print(f"kleinste Location: {min(results)}")
+ print(f"Script beendet! Benötigte Zeit in Sekunden: {int(time()-start)}")
diff --git a/10/10-2.py b/10/10-2.py
index 2eb7924..81c82fc 100644
--- a/10/10-2.py
+++ b/10/10-2.py
@@ -5,7 +5,7 @@ part_sum = 0
matrix = []
# read matrix like day 3
-input_file = open("input", "r")
+input_file = open("input-ex41", "r")
for line in input_file:
matrix.append(line.strip())
input_file.close()
@@ -71,12 +71,13 @@ def where_to_go(z, s, pre):
previous = (start[0], start[1])
-aktuell = [start[0]-1, start[1]]
+aktuell = [start[0], start[1]+1]
count = 1
while True:
new = where_to_go(aktuell[0], aktuell[1], previous)
print(aktuell, previous, new)
+ matrix[aktuell[0]] = matrix[aktuell[0]][:aktuell[1]] + "X" + matrix[aktuell[0]][aktuell[1]+1:]
if new == "Ende":
break
else:
@@ -87,3 +88,6 @@ while True:
print("Counter:", count)
print("HalfCounter:", count/2)
+for i in matrix:
+ print(i)
+
diff --git a/10/input-ex31 b/10/input-ex31
new file mode 100644
index 0000000..bd9cdf5
--- /dev/null
+++ b/10/input-ex31
@@ -0,0 +1,9 @@
+...........
+.S-------7.
+.|F-----7|.
+.||.....||.
+.||.....||.
+.|L-7.F-J|.
+.|..|.|..|.
+.L--J.L--J.
+...........
diff --git a/10/input-ex41 b/10/input-ex41
new file mode 100644
index 0000000..adaae96
--- /dev/null
+++ b/10/input-ex41
@@ -0,0 +1,10 @@
+.F----7F7F7F7F-7....
+.|F--7||||||||FJ....
+.||.FJ||||||||L7....
+FJL7L7LJLJ||LJ.L-7..
+L--J.L7...LJS7F-7L7.
+....F-J..F7FJ|L7L7L7
+....L7.F7||L7|.L7L7|
+.....|FJLJ|FJ|F7|.LJ
+....FJL-7.||.||||...
+....L---J.LJ.LJLJ...
diff --git a/11/11-1.py b/11/11-1.py
new file mode 100644
index 0000000..8b5a18b
--- /dev/null
+++ b/11/11-1.py
@@ -0,0 +1,57 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+data = []
+
+# read matrix like day 3
+input_file = open("input", "r")
+for line in input_file:
+ line = line.strip()
+ data.append(line)
+ if line.count(".") == len(line): # Zeilen ohne # gleich verdoppeln
+ data.append(line)
+input_file.close()
+
+zeilen = len(data)
+spalten = len(data[0])
+
+# zum test mal ausgeben
+for da in data:
+ print(da)
+print(zeilen, spalten)
+
+# leere Spalten ermitteln
+freie_spalten = [1 for i in range(spalten)]
+for da in data:
+ for i in range(spalten):
+ if da[i] == "#":
+ freie_spalten[i] = 0
+
+print(freie_spalten)
+# Spalten verbreitern
+new_data = []
+for da in data:
+ for i in range(len(freie_spalten)-1, -1, -1):
+ if freie_spalten[i] == 1:
+ da = da[:i] + ".." + da[i+1:]
+ new_data.append(da)
+
+# Testausgabe neue Matrix
+for da in new_data:
+ print(da)
+zeilen = len(new_data)
+spalten = len(new_data[0])
+print(zeilen, spalten)
+
+koor_list = []
+for z in range(len(new_data)):
+ for s in range(len(new_data[0])):
+ if new_data[z][s] == "#":
+ koor_list.append([z, s])
+print(koor_list)
+
+summe = 0
+for k in range(len(koor_list)):
+ for m in range(k+1, len(koor_list)):
+ summe += abs(koor_list[m][0] - koor_list[k][0])
+ summe += abs(koor_list[m][1] - koor_list[k][1])
+print(summe)
diff --git a/11/input b/11/input
new file mode 100644
index 0000000..79bead4
--- /dev/null
+++ b/11/input
@@ -0,0 +1,140 @@
+......................................#.....................................#......#.......#.....................#.................#........
+............................................................................................................................................
+.............................................#............................................................................................#.
+..........................#..................................#........#............................#........................................
+...#...........................#.................#............................................#...............................#.............
+....................#.................................#..................................................#.........#........................
+......................................#...............................................................................................#.....
+...................................................................................#.............#..........................................
+.......................#.........................................#......................#..................................#.....#..........
+...............#................#...................#.........................#.................................#...........................
+.......#..............................................................#.....................................................................
+........................................#...................#.............................................#.................................
+...........................#.....................#..................................................#..................#....................
+.................#........................................................................#.......................#.........................
+............#..................................................#...............................#........................................#...
+.#................................#.........................................................................#...............................
+.....................................................#...............#....................................................#.................
+..........................#...................#....................................#.................#.........................#............
+........#..............................#............................................................................#.......................
+........................................................#................#..................................................................
+...................#.............#...............................#.........................................#................................
+........................#...........................#.........................#......#.....................................................#
+..#........#.................#....................................................................................................#.........
+.............................................#.............#.........................................#............#.........................
+...............#......................................................#......................#..........................................#...
+............................................................................................................................................
+..................................................................................#........................................#................
+..........................#........#......#..............#.....#................................................................#...........
+.........................................................................................#.....#..............#.............................
+....................#..........#.....................#................................................................................#.....
+.#....................................................................#........#...........................................................#
+..........#..............................................................................................................#..................
+............................................................#......................................#........................................
+...............#..........#................................................................................#................................
+........................................................#..................................#.....................................#..........
+......................#................#...............................................................................................#....
+........#.......................................#.........................................................................#.................
+.........................................................................#........#..................................#......................
+#..................................#......#............................................................#...........................#........
+............................................................................................................................................
+......#.................................................#..............................#....................................................
+.........................#....................................................#..............................................#..........#...
+.................................#.............................................................................#............................
+.................#..................................#................#...........................#..........................................
+..............................................................#......................#......#...............................................
+.............#..........................#.................................................................................................#.
+...............................#........................#...................................................................................
+....................................#.................................................................#..............#......................
+.......#....................................................................#.................#................................#............
+..........................#.................#.....#.................#....................................................#.............#....
+............................................................................................................................................
+............#.............................................................................................#......#................#.........
+...#..........................#..........................#......................................#...........................................
+............................................................................................................................................
+........#.............#...................................................#.................................................................
+...........................................#....................#.................#...........................#......#.........#............
+............................................................................................................................................
+............#....................#.............................................................#......#.....................................
+.....................................................................#..................#...................................................
+.....................#..............................#........#...............#........................................................#.....
+....................................#...................................................................................#...................
+..................................................................................................................#.........................
+.....#.......#...............#..................................................................#..............................#............
+.............................................#.........#....................................................................................
+..................................................................#.......#................................#................................
+.........................#.................................................................#.......#.................#......................
+#...............................................#.........................................................................#.......#.........
+...........................................#.................#................#...........................................................#.
+......................#...............#............................................#........................................................
+...............#..............#....................#....................................#.........................#.........................
+..#..........................................................................................................#..............................
+..........#...................................................................................#........#....................................
+...........................#.......#.........#.........#..................#.................................................................
+................................................................#......................................................#....................
+............................................................................................................................................
+...............................................................................................................................#............
+........#...............................#............#...................................................#........#....................#....
+....................#.......................................................................................................................
+............#...................................#....................................#................................#.....#...............
+.............................#....................................#...............................#.........................................
+...#....................................................#..................#...........................#....................................
+.......................#..............#..................................................#...............................#........#.........
+..............#.................#............................................................................#..............................
+........#..........................................#......................................................................................#.
+..........................#............................................#.....#.......................................#......................
+...................................#.....................#........#...............#.........#...............................................
+...........................................................................................................................#................
+.........................................#.............................................................#...........................#........
+......#.........................#...........................#............#.....#............................................................
+...............#.....#.................................#.......................................................................#............
+..................................................................................................#..............#........................#.
+...................................#.......#................................................................................................
+..............................................................#......................#..................#.........................#.........
+..............................#.................#.........................................#.................................................
+..#.........................................................................................................................................
+..................#..................................................#......#......................#........................#...............
+...........#...........................................................................................................#..............#.....
+.....................................#......................................................................................................
+........................................................#.........................................................#.........................
+..........................#....................................#............................................................................
+............................................................................................#...............#............................#..
+#..............................................#...................................#..................#.....................................
+.........#.............#..................#.....................................................................#...........................
+.............................................................................................................................#..............
+.....................................#...........................#............#..................#.....................................#....
+.................#..........#............................#..............................................................#........#..........
+.........................................................................#...................#..............................................
+.................................#...........................................................................#.....#........................
+........................................#..........................#........................................................................
+...#.....#.................................................#......................................#......#..........................#.....#.
+....................................#.............................................#.........................................................
+....................#.......#................#..............................#...............................................................
+.....................................................................#....................#....................#............................
+.................................................#................................................................................#.........
+...........#...........#...................................................................................................................#
+................#.......................#.........................#...................................................#.....................
+...#.......................#...............................#.........................................#.........................#............
+....................................................................................#.......................................................
+.............................................................................................#...........................................#..
+..............#...............................#................................................................#..........#.................
+.......................................................#.............#.....#................................................................
+............................#...................................................................#...........................................
+.....#..............................#...........................................................................................#..........#
+..................................................#...............#................#........................................................
+..........#..........#.......................................................................................#.........#.............#......
+........................................................#....................................................................#..............
+.............................#...................................................................................#.......................#..
+.#.........................................#...................#...........#..........................#.....................................
+....................................................................#......................#................................................
+...........#......................................................................#.................................#.......................
+.....#.................................................................................#.......................................#............
+...............................#.....#..................................................................#...................................
+....................#.........................#......................................................................................#......
+..................................................................................................#...........#........#....................
+...............#.........................................#............#.....................................................................
+..................................#......#....................................#.............................................................
+...........................#........................#.....................................#..............#...............................#..
+....#..............#..............................................................................................#.........................
+.............#...................................................................................#..........................................
+...................................................................................#..................#..................#............#.....
diff --git a/11/input-ex b/11/input-ex
new file mode 100644
index 0000000..986aad4
--- /dev/null
+++ b/11/input-ex
@@ -0,0 +1,10 @@
+...#......
+.......#..
+#.........
+..........
+......#...
+.#........
+.........#
+..........
+.......#..
+#...#.....