Day 12 2022
This commit is contained in:
parent
5ecbe594f7
commit
5705ddcce5
3 changed files with 176 additions and 0 deletions
41
Python/2022/12/input
Normal file
41
Python/2022/12/input
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
abaaaaaaaaccccccccccccccccccaaaaaccccaaaaaaccccccccccccccccccccccaaaaaaaaaacccccccccccccccccccccccccccccccaaaaaccccccccccccccccccccccccccccccccccccccccccaaaaaa
|
||||||
|
abaaaaaaaacccccccccccccccccccaaaaaccccaaaacccccaaaacccccccccccccccaaaaaaaaaacccccccccccccccccccccccccccccaaaaaaccccccccccccccccccccccccccccccccccccccccccccaaaa
|
||||||
|
abccaaaaaaccccccccccccccccccaaaaaaccccaaaaccccaaaaaccccccccccaaaaaaaaaaaaaaacccccccccccccccccccccccccccccaaaacccccccccccccccccccccccccccccaaaccccccccccccccaaaa
|
||||||
|
abcaaaaaaaccccccccccccccccccaaaaccccccaccaccccaaaaaacccccccccaaaaaaaaaaaaaaacccccccccccccccccccccacccccccccaacccccccccccccccccccccccccccccaaaccccccccccccccaaaa
|
||||||
|
abccaacccaccccccccccccccccccccaaacccccccccccccaaaaaaccccccccccaaaaaaaaacaaacccccccccccccccccccaaaacccccccccccccccccccccccccaacccccccaaccccaaacccccccccccccaaaaa
|
||||||
|
abcaaaaaacccccccccccccccccccccccccccccccccccccaaaaaccccccccccaaaaaaaaaaccccaacaaccccccccccccccaaaaaacccccccccccccccccccccccaacccccccaaaacaaaaccccccccccccccaccc
|
||||||
|
abccaaaaacccccccccccccccccccccccccccccccccccaaccaaacccccccccaaaaaaaaaaaacccaaaaccccccccccccccccaaaaacccccccccccccccaacaaaaaaacccccccaaaaaaaaacccccccccccccccccc
|
||||||
|
abccaaaaaacccccccccccccccccccccccccccccaaacaaaccccccccccccccaaaaaaaaaaacccaaaaacccccccccccccccaaaaacccccccccccccaaaaaccaaaaaaaaccccccaaaaaalllllllcccaacccccccc
|
||||||
|
abccaaaaaaccccccaaaaacccccccccaaaccccccaaaaaaaccccccccccccccaaacaaacaaacccaaaaaaccccccccccccccaccaaccccccccccccccaaaaacaaaaaaaaajkkkkkkkkkklllllllccccaaaaacccc
|
||||||
|
abccaaaaacccccccaaaaacccccccccaaaaccccccaaaaaaccccccccaacaacccccaaacccccccacaaaaccccccccaaaccccccccccccccccccccccaaaaaccaaaaaaajjkkkkkkkkkkllssllllcccaaaaacccc
|
||||||
|
abcccaaaaccccccaaaaaacccccccccaaaaccccccaaaaaaaaccccccaaaaacccccaaccccccccccaacccccccccaaaacccccccccccccccaaccccaaaaaccaaaaaacjjjjkkkkkkkkssssssslllccaaaaccccc
|
||||||
|
abcccccccccccccaaaaaacccccccccaaaccccccaaaaaaaaacaaccccaaaaacccccccccccccccaaccccccccccaaaaccccccccccccccaaacccccccaaccaaaaaajjjjrrrrrrsssssssssslllcccaaaccccc
|
||||||
|
abcccccccccccccaaaaaacccccccccccccccccaaaaaaaaaaaaaaacaaaaaacccccccccccaaacaacccccccccccaaaccccaaacccccaaaaaaaaccccccccaacaaajjjrrrrrrrsssssuusssslmcccaaaacccc
|
||||||
|
abcccccccccccccccaacccccccccccccccaacaaaacaaaccaaaaaacaaaaccccccccccccccaaaaaccccccccccccccccccaaaaacccaaaaaaaaccccccccccccaajjjrrrruuurssuuuuvsqqmmcddaaaacccc
|
||||||
|
abccccccccccccccccccccccccccccccccaaaaacccaaacccaaaaccccaaccccccccccccccaaaaaaacccccccccccccccaaaaaaccccaaaaaacccccccccccccccjjrrruuuuuuuuuuuuvvqqmmmdddccccccc
|
||||||
|
abcccccccccccccccccccccccacccccccccaaaaaccaaacccaaaaccccccccccccccccccccaaaaaaacccccccccccccccaaaaaaccccaaaaaacccccccccaaccccjjjrrtuuuuuuuuyyvvvqqmmmddddcccccc
|
||||||
|
abccccccccccccccccccccaaaaccccccccaaaaaacccccaacaccacccccccccccccccccccaaaaaaccccccccccccccccccaaaaaccccaaaaaaccccccccaaaccccjjjrrttuxxxuuxyyyvvqqmmmmdddcccccc
|
||||||
|
abcccccccccaacccccccccaaaaaaccccccaaaaccccccaaaccccccccccccccccccccccccaacaaaccccccccccccccccccaacaaccccaaccaaccccaaaaaaaccccjjjrrtttxxxxxyyyyvvqqqmmmddddccccc
|
||||||
|
abccccccccaaaacccccccccaaaacccccccccaaccccccaaacaaaccccccccccccccccccaaccccaacccccccccccccccccccccccccccccccccccccaaaaaaaaaacijjqrtttxxxxxyyyvvvqqqqmmmdddccccc
|
||||||
|
abcccccacaaaaaccccccccaaaaaccccccccccccccaaaaaaaaaacccccccccccccccccaaaccccccccccccccccccccccccccccccccccccccccccccaaaaaaaaaciiiqqqttxxxxxyyyvvvvqqqqmmmdddcccc
|
||||||
|
SbcccccaaaaaaaaaacccccaacaaccccccccccccccaaaaaaaaaccccccccccccccaaacaaacccccccccccccccccccccccccccccccccccccccccccccaaaaaaaciiiqqqtttxxxEzzyyyyvvvqqqmmmdddcccc
|
||||||
|
abcccccaaaaaaaaaaccccccccccccaaccccccccccccaaaaaccccccccccccccccaaaaaaaaaacccccccaacccccccccccccaacccccccccccccccccaaaaaaccciiiqqqttxxxxyyyyyyyyvvvqqqmmmeddccc
|
||||||
|
abcccccccaaaaaacccccccccccaaaaccccccccccaaaaaaaaacccccccaaaacccccaaaaaaaaacccccaaaaccccccccccaacaaaccccccccccccccccaaaaaaaciiiqqqtttxxyyyyyyyyyvvvvqqqnnneeeccc
|
||||||
|
abcccccccaaaaaacccccccccccaaaaaaccccccccaaaaaaaaaaccccccaaaaccccccaaaaaaaccccccaaaaaaccccccccaaaaacccccccccccccccccaaccaaaciiiqqtttxxxxwwyyywwvvvvrrrnnnneeeccc
|
||||||
|
abcccccccaaaaaaccccccccccccaaaaacccccccaaaaaaacaaaccccccaaaacccccaaaaaacccccccccaaaaccccccccccaaaaaaccccaaccccccccccccccaaciiqqqtttxxxwwwyywwwwvvrrrrnnneeecccc
|
||||||
|
abccccccaaaaaaaaccccccccccaaaaaccccccccaaaaaaccccccccccccaaacccccaaaaaaacccccccaaaaaccccccccaaaaaaaaacccaaccccccccccccccccciiqqqtttttwwswwyywwrrrrrrnnnneeecccc
|
||||||
|
abccccccccccccacccccccccccaccaaccccaaccaaaaaacccccccccccaccccccccaaacaaacccccccaacaaccccccccaaaaacaaaaaaaacccccccccaacccccciiqqqqttssssswwwwwrrrrnnnnnneeeecccc
|
||||||
|
abcccccccccccccccccccccccccccccaaaaaaccccaacccccccaaacaaacccccccccccccaacaaacccccccccccccccccccaaaccaaaaaaaaccccaacaacccccciiiqqpppsssssswwwwrrrnnnnneeeeeccccc
|
||||||
|
abcccccccccccccccccccccccccccccaaaaaaaccccccccccccaaaaaaaccccccccccccccccaaacccccccccccccccccccaaaccaaaaaaaaacccaaaaacccccchhhhppppppppssswwwrroonnfeeeeacccccc
|
||||||
|
abccccccccccccccccccccaaaaaccccaaaaaaaaccccccccccccaaaaaaccccccccccccccaaaaaaaacccccccccccccccccccccaaaaaaaaaccccaaaaaaccccchhhhhpppppppsssssrroonfffeeaaaacccc
|
||||||
|
abccccccccccccccccccccaaaaacccccaaaaaaaccccccccccccaaaaaaaaccccccccccccaaaaaaaacccccccccccccccccccccaaaaaacccccaaaaaaaacccccchhhhhhhppppsssssrooofffffaaaaacccc
|
||||||
|
abcccccaacaaacccccccccaaaaaacccaaaaaacccccccccccccaaaaaaaaacccccccccccccaaaaacccccccccccccccccccccccaaaaaaaccccaaaaaccaccccccchhhhhhhhpppssssrooofffcaaaaaccccc
|
||||||
|
abcccccaaaaaacccccccccaaaaaacccaaaaaaccccccccccccaaaaaaaaaacccccccccccccaaaaaaccccccccccccccccccccccaccaaaccccccacaaaccaacccccccchhhhhgppooooooofffcaaaaacccccc
|
||||||
|
abcccccaaaaaacccccccccaaaaaaccccccaaacaacccccccccaaacaaaccccccccccaaacccaaaaaaccccccccccccccccccccccccccaaacccccccaaacaaaccccccccccchgggoooooooffffcaaaaaaccccc
|
||||||
|
abaccccaaaaaaaccccccccccaaccccccccaaaaaacccccccccccccaaaccccccccccaaaaccaaaccacaacaacccccccccccccccccccccccccccccccaaaaaaaaccccccccccggggoooooffffccaccaaaccccc
|
||||||
|
abacccaaaaaaaaccccccccccccccccccccaaaaaccccccccccccccaacccccccaaacaaaacccaaccccaaaaacccccccccccccccccccaacaacccccccaaaaaaaacccccccccccggggggggfffcccccccccccccc
|
||||||
|
abacccaaaaaaaaccccccccaaacccccccccaaaaaaccccccccccccccccccccccaaacaaaacaaaaccccaaaaaaccccccccaaccccccccaaaaaccccccccaaaaaaacccccccccccaaggggggffcccccccccccccca
|
||||||
|
abcccccccaaacccccccccaaaaaaccccccaaaaaaaacccccccccccccccccccaaaaaaaaaaaaaaaccccaaaaaaccccccacaaaacccccccaaaaacccccccaaaaaccccccccccccaaacgggggaccccccccccccccaa
|
||||||
|
abcccccccaaccccccccccaaaaaaccccccaaaaaaaacccccccaaacccccccccaaaaaaaaaaaaaaaacccaaaaaaccccccaaaaaaccccccaaaaaaccccccaaaaaaacccccccccccaaaccccaaaccccccccccaaacaa
|
||||||
|
abcccccccccccccccccccaaaaaccccccccccaaccccccccaaaaaccccccccccaaaaaaaaaaaaaaaaccccaaaccccccccaaaacccccccaaaaccccccccccccaaccccccccccccccccccccccccccccccccaaaaaa
|
||||||
|
abccccccccccccccccccccaaaaacccccccccaaccccccccaaaaaacccccccccaaaaaaaaaaaaaaaacccccccccccccccaaaacccccccccaacccccccccccccccccccccccccccccccccccccccccccccccaaaaa
|
||||||
130
Python/2022/12/main.py
Normal file
130
Python/2022/12/main.py
Normal file
|
|
@ -0,0 +1,130 @@
|
||||||
|
import sys
|
||||||
|
input = open("input", 'r')
|
||||||
|
# input = open("sample", 'r')
|
||||||
|
|
||||||
|
data = []
|
||||||
|
total = 0
|
||||||
|
mypos = (0, 0)
|
||||||
|
epos = (0, 0)
|
||||||
|
|
||||||
|
x = 0
|
||||||
|
y = 0
|
||||||
|
for line in input:
|
||||||
|
data.append([])
|
||||||
|
x = 0
|
||||||
|
for c in line.strip():
|
||||||
|
if c == "S":
|
||||||
|
mypos = (x, y)
|
||||||
|
data[y].append(ord("a") - ord("a"))
|
||||||
|
elif c == "E":
|
||||||
|
epos = (x, y)
|
||||||
|
data[y].append(ord("z") - ord("a"))
|
||||||
|
else:
|
||||||
|
data[y].append(ord(c) - ord("a"))
|
||||||
|
x += 1
|
||||||
|
y += 1
|
||||||
|
|
||||||
|
move = [(0, -1), (0, 1), (1, 0), (-1, 0)]
|
||||||
|
def dijkstras(m, start):
|
||||||
|
unvisited = []
|
||||||
|
for y in range(len(m)):
|
||||||
|
for x in range(len(m[0])):
|
||||||
|
unvisited.append((x,y))
|
||||||
|
|
||||||
|
sp = {}
|
||||||
|
pn = {}
|
||||||
|
|
||||||
|
max_value = sys.maxsize
|
||||||
|
for node in unvisited:
|
||||||
|
sp[node] = max_value
|
||||||
|
sp[start] = 0
|
||||||
|
|
||||||
|
while unvisited:
|
||||||
|
cmn = None
|
||||||
|
for pos in unvisited:
|
||||||
|
if cmn == None:
|
||||||
|
cmn = pos
|
||||||
|
elif sp[pos] < sp[cmn]:
|
||||||
|
cmn = pos
|
||||||
|
|
||||||
|
neighbors = []
|
||||||
|
for side in move:
|
||||||
|
newPos = (cmn[0] + side[0], cmn[1] + side[1])
|
||||||
|
if newPos[0] < 0 or newPos[0] >= len(m[0]):
|
||||||
|
continue
|
||||||
|
elif newPos[1] < 0 or newPos[1] >= len(m):
|
||||||
|
continue
|
||||||
|
posV = m[cmn[1]][cmn[0]]
|
||||||
|
nposV = m[newPos[1]][newPos[0]]
|
||||||
|
if posV + 1 >= nposV:
|
||||||
|
neighbors.append(newPos)
|
||||||
|
|
||||||
|
for neighbor in neighbors:
|
||||||
|
tv = sp[cmn] + 1
|
||||||
|
if tv < sp[neighbor]:
|
||||||
|
sp[neighbor] = tv
|
||||||
|
pn[neighbor] = cmn
|
||||||
|
|
||||||
|
unvisited.remove(cmn)
|
||||||
|
|
||||||
|
return pn, sp
|
||||||
|
|
||||||
|
pn, sp = dijkstras(data, mypos)
|
||||||
|
|
||||||
|
print(sp[epos])
|
||||||
|
aStarts = []
|
||||||
|
|
||||||
|
move = [(0, -1), (0, 1), (1, 0), (-1, 0)]
|
||||||
|
def dijkstras_rev(m, start):
|
||||||
|
unvisited = []
|
||||||
|
for y in range(len(m)):
|
||||||
|
for x in range(len(m[0])):
|
||||||
|
unvisited.append((x,y))
|
||||||
|
|
||||||
|
sp = {}
|
||||||
|
pn = {}
|
||||||
|
|
||||||
|
max_value = sys.maxsize
|
||||||
|
for node in unvisited:
|
||||||
|
sp[node] = max_value
|
||||||
|
sp[start] = 0
|
||||||
|
|
||||||
|
while unvisited:
|
||||||
|
cmn = None
|
||||||
|
for pos in unvisited:
|
||||||
|
if cmn == None:
|
||||||
|
cmn = pos
|
||||||
|
elif sp[pos] < sp[cmn]:
|
||||||
|
cmn = pos
|
||||||
|
|
||||||
|
neighbors = []
|
||||||
|
for side in move:
|
||||||
|
newPos = (cmn[0] + side[0], cmn[1] + side[1])
|
||||||
|
if newPos[0] < 0 or newPos[0] >= len(m[0]):
|
||||||
|
continue
|
||||||
|
elif newPos[1] < 0 or newPos[1] >= len(m):
|
||||||
|
continue
|
||||||
|
posV = m[cmn[1]][cmn[0]]
|
||||||
|
nposV = m[newPos[1]][newPos[0]]
|
||||||
|
if posV - 1 <= nposV:
|
||||||
|
neighbors.append(newPos)
|
||||||
|
|
||||||
|
for neighbor in neighbors:
|
||||||
|
tv = sp[cmn] + 1
|
||||||
|
if tv < sp[neighbor]:
|
||||||
|
sp[neighbor] = tv
|
||||||
|
pn[neighbor] = cmn
|
||||||
|
|
||||||
|
unvisited.remove(cmn)
|
||||||
|
|
||||||
|
return pn, sp
|
||||||
|
|
||||||
|
pn, sp = dijkstras_rev(data, epos)
|
||||||
|
|
||||||
|
|
||||||
|
aMin = []
|
||||||
|
for key in sp:
|
||||||
|
if data[key[1]][key[0]] == 0:
|
||||||
|
aMin.append(sp[key])
|
||||||
|
|
||||||
|
print(min(aMin))
|
||||||
5
Python/2022/12/sample
Normal file
5
Python/2022/12/sample
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
Sabqponm
|
||||||
|
abcryxxl
|
||||||
|
accszExk
|
||||||
|
acctuvwj
|
||||||
|
abdefghi
|
||||||
Loading…
Add table
Add a link
Reference in a new issue