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