From 25175daff9c023829567e24028649fe9735e0b7b Mon Sep 17 00:00:00 2001 From: MKAY183 Date: Mon, 11 Dec 2023 16:03:39 +0100 Subject: [PATCH] 11-1 fertig --- .idea/misc.xml | 2 +- 05/05-2-multiprocess-with-gpu-cc.py | 117 +++++++++++++++++++++++ 10/10-2.py | 8 +- 10/input-ex31 | 9 ++ 10/input-ex41 | 10 ++ 11/11-1.py | 57 +++++++++++ 11/input | 140 ++++++++++++++++++++++++++++ 11/input-ex | 10 ++ 8 files changed, 350 insertions(+), 3 deletions(-) create mode 100644 05/05-2-multiprocess-with-gpu-cc.py create mode 100644 10/input-ex31 create mode 100644 10/input-ex41 create mode 100644 11/11-1.py create mode 100644 11/input create mode 100644 11/input-ex 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 @@ +...#...... +.......#.. +#......... +.......... +......#... +.#........ +.........# +.......... +.......#.. +#...#.....