11-1 fertig
This commit is contained in:
2
.idea/misc.xml
generated
2
.idea/misc.xml
generated
@@ -3,7 +3,7 @@
|
||||
<component name="Black">
|
||||
<option name="sdkName" value="Python 3.11 (AdventOfCode2023)" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" project-jdk-name="Python 3.11 (AdventOfCode2023)" project-jdk-type="Python SDK">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" project-jdk-name="Python 3.10 (AdventOfCode2023)" project-jdk-type="Python SDK">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
</project>
|
||||
117
05/05-2-multiprocess-with-gpu-cc.py
Normal file
117
05/05-2-multiprocess-with-gpu-cc.py
Normal file
@@ -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)}")
|
||||
@@ -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)
|
||||
|
||||
|
||||
9
10/input-ex31
Normal file
9
10/input-ex31
Normal file
@@ -0,0 +1,9 @@
|
||||
...........
|
||||
.S-------7.
|
||||
.|F-----7|.
|
||||
.||.....||.
|
||||
.||.....||.
|
||||
.|L-7.F-J|.
|
||||
.|..|.|..|.
|
||||
.L--J.L--J.
|
||||
...........
|
||||
10
10/input-ex41
Normal file
10
10/input-ex41
Normal file
@@ -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...
|
||||
57
11/11-1.py
Normal file
57
11/11-1.py
Normal file
@@ -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)
|
||||
140
11/input
Normal file
140
11/input
Normal file
@@ -0,0 +1,140 @@
|
||||
......................................#.....................................#......#.......#.....................#.................#........
|
||||
............................................................................................................................................
|
||||
.............................................#............................................................................................#.
|
||||
..........................#..................................#........#............................#........................................
|
||||
...#...........................#.................#............................................#...............................#.............
|
||||
....................#.................................#..................................................#.........#........................
|
||||
......................................#...............................................................................................#.....
|
||||
...................................................................................#.............#..........................................
|
||||
.......................#.........................................#......................#..................................#.....#..........
|
||||
...............#................#...................#.........................#.................................#...........................
|
||||
.......#..............................................................#.....................................................................
|
||||
........................................#...................#.............................................#.................................
|
||||
...........................#.....................#..................................................#..................#....................
|
||||
.................#........................................................................#.......................#.........................
|
||||
............#..................................................#...............................#........................................#...
|
||||
.#................................#.........................................................................#...............................
|
||||
.....................................................#...............#....................................................#.................
|
||||
..........................#...................#....................................#.................#.........................#............
|
||||
........#..............................#............................................................................#.......................
|
||||
........................................................#................#..................................................................
|
||||
...................#.............#...............................#.........................................#................................
|
||||
........................#...........................#.........................#......#.....................................................#
|
||||
..#........#.................#....................................................................................................#.........
|
||||
.............................................#.............#.........................................#............#.........................
|
||||
...............#......................................................#......................#..........................................#...
|
||||
............................................................................................................................................
|
||||
..................................................................................#........................................#................
|
||||
..........................#........#......#..............#.....#................................................................#...........
|
||||
.........................................................................................#.....#..............#.............................
|
||||
....................#..........#.....................#................................................................................#.....
|
||||
.#....................................................................#........#...........................................................#
|
||||
..........#..............................................................................................................#..................
|
||||
............................................................#......................................#........................................
|
||||
...............#..........#................................................................................#................................
|
||||
........................................................#..................................#.....................................#..........
|
||||
......................#................#...............................................................................................#....
|
||||
........#.......................................#.........................................................................#.................
|
||||
.........................................................................#........#..................................#......................
|
||||
#..................................#......#............................................................#...........................#........
|
||||
............................................................................................................................................
|
||||
......#.................................................#..............................#....................................................
|
||||
.........................#....................................................#..............................................#..........#...
|
||||
.................................#.............................................................................#............................
|
||||
.................#..................................#................#...........................#..........................................
|
||||
..............................................................#......................#......#...............................................
|
||||
.............#..........................#.................................................................................................#.
|
||||
...............................#........................#...................................................................................
|
||||
....................................#.................................................................#..............#......................
|
||||
.......#....................................................................#.................#................................#............
|
||||
..........................#.................#.....#.................#....................................................#.............#....
|
||||
............................................................................................................................................
|
||||
............#.............................................................................................#......#................#.........
|
||||
...#..........................#..........................#......................................#...........................................
|
||||
............................................................................................................................................
|
||||
........#.............#...................................................#.................................................................
|
||||
...........................................#....................#.................#...........................#......#.........#............
|
||||
............................................................................................................................................
|
||||
............#....................#.............................................................#......#.....................................
|
||||
.....................................................................#..................#...................................................
|
||||
.....................#..............................#........#...............#........................................................#.....
|
||||
....................................#...................................................................................#...................
|
||||
..................................................................................................................#.........................
|
||||
.....#.......#...............#..................................................................#..............................#............
|
||||
.............................................#.........#....................................................................................
|
||||
..................................................................#.......#................................#................................
|
||||
.........................#.................................................................#.......#.................#......................
|
||||
#...............................................#.........................................................................#.......#.........
|
||||
...........................................#.................#................#...........................................................#.
|
||||
......................#...............#............................................#........................................................
|
||||
...............#..............#....................#....................................#.........................#.........................
|
||||
..#..........................................................................................................#..............................
|
||||
..........#...................................................................................#........#....................................
|
||||
...........................#.......#.........#.........#..................#.................................................................
|
||||
................................................................#......................................................#....................
|
||||
............................................................................................................................................
|
||||
...............................................................................................................................#............
|
||||
........#...............................#............#...................................................#........#....................#....
|
||||
....................#.......................................................................................................................
|
||||
............#...................................#....................................#................................#.....#...............
|
||||
.............................#....................................#...............................#.........................................
|
||||
...#....................................................#..................#...........................#....................................
|
||||
.......................#..............#..................................................#...............................#........#.........
|
||||
..............#.................#............................................................................#..............................
|
||||
........#..........................................#......................................................................................#.
|
||||
..........................#............................................#.....#.......................................#......................
|
||||
...................................#.....................#........#...............#.........#...............................................
|
||||
...........................................................................................................................#................
|
||||
.........................................#.............................................................#...........................#........
|
||||
......#.........................#...........................#............#.....#............................................................
|
||||
...............#.....#.................................#.......................................................................#............
|
||||
..................................................................................................#..............#........................#.
|
||||
...................................#.......#................................................................................................
|
||||
..............................................................#......................#..................#.........................#.........
|
||||
..............................#.................#.........................................#.................................................
|
||||
..#.........................................................................................................................................
|
||||
..................#..................................................#......#......................#........................#...............
|
||||
...........#...........................................................................................................#..............#.....
|
||||
.....................................#......................................................................................................
|
||||
........................................................#.........................................................#.........................
|
||||
..........................#....................................#............................................................................
|
||||
............................................................................................#...............#............................#..
|
||||
#..............................................#...................................#..................#.....................................
|
||||
.........#.............#..................#.....................................................................#...........................
|
||||
.............................................................................................................................#..............
|
||||
.....................................#...........................#............#..................#.....................................#....
|
||||
.................#..........#............................#..............................................................#........#..........
|
||||
.........................................................................#...................#..............................................
|
||||
.................................#...........................................................................#.....#........................
|
||||
........................................#..........................#........................................................................
|
||||
...#.....#.................................................#......................................#......#..........................#.....#.
|
||||
....................................#.............................................#.........................................................
|
||||
....................#.......#................#..............................#...............................................................
|
||||
.....................................................................#....................#....................#............................
|
||||
.................................................#................................................................................#.........
|
||||
...........#...........#...................................................................................................................#
|
||||
................#.......................#.........................#...................................................#.....................
|
||||
...#.......................#...............................#.........................................#.........................#............
|
||||
....................................................................................#.......................................................
|
||||
.............................................................................................#...........................................#..
|
||||
..............#...............................#................................................................#..........#.................
|
||||
.......................................................#.............#.....#................................................................
|
||||
............................#...................................................................#...........................................
|
||||
.....#..............................#...........................................................................................#..........#
|
||||
..................................................#...............#................#........................................................
|
||||
..........#..........#.......................................................................................#.........#.............#......
|
||||
........................................................#....................................................................#..............
|
||||
.............................#...................................................................................#.......................#..
|
||||
.#.........................................#...................#...........#..........................#.....................................
|
||||
....................................................................#......................#................................................
|
||||
...........#......................................................................#.................................#.......................
|
||||
.....#.................................................................................#.......................................#............
|
||||
...............................#.....#..................................................................#...................................
|
||||
....................#.........................#......................................................................................#......
|
||||
..................................................................................................#...........#........#....................
|
||||
...............#.........................................#............#.....................................................................
|
||||
..................................#......#....................................#.............................................................
|
||||
...........................#........................#.....................................#..............#...............................#..
|
||||
....#..............#..............................................................................................#.........................
|
||||
.............#...................................................................................#..........................................
|
||||
...................................................................................#..................#..................#............#.....
|
||||
10
11/input-ex
Normal file
10
11/input-ex
Normal file
@@ -0,0 +1,10 @@
|
||||
...#......
|
||||
.......#..
|
||||
#.........
|
||||
..........
|
||||
......#...
|
||||
.#........
|
||||
.........#
|
||||
..........
|
||||
.......#..
|
||||
#...#.....
|
||||
Reference in New Issue
Block a user