jour 4
This commit is contained in:
183
day4.py
Normal file
183
day4.py
Normal file
@ -0,0 +1,183 @@
|
|||||||
|
with open('day4.txt') as f:
|
||||||
|
l = [line.rstrip().split() for line in f]
|
||||||
|
|
||||||
|
# l = [["MMMSXXMASM"],
|
||||||
|
# ["MSAMXMSMSA"],
|
||||||
|
# ["AMXSXMAAMM"],
|
||||||
|
# ["MSAMASMSMX"],
|
||||||
|
# ["XMASAMXAMM"],
|
||||||
|
# ["XXAMMXXAMA"],
|
||||||
|
# ["SMSMSASXSS"],
|
||||||
|
# ["SAXAMASAAA"],
|
||||||
|
# ["MAMMMXMMMM"],
|
||||||
|
# ["MXMXAXMASX"]]
|
||||||
|
|
||||||
|
print(l[1][0][1] + l[1][0][2])
|
||||||
|
|
||||||
|
def search_left(l,i,j): #horizontal backwards
|
||||||
|
word = ""
|
||||||
|
|
||||||
|
print(l[i][0][j])
|
||||||
|
for k in range(4):
|
||||||
|
|
||||||
|
word += l[i][0][j-k]
|
||||||
|
print("word", word)
|
||||||
|
if word == "XMAS" :
|
||||||
|
return True
|
||||||
|
else :
|
||||||
|
return False
|
||||||
|
|
||||||
|
def search_right(l,i,j): #horizontal forward
|
||||||
|
word = ""
|
||||||
|
|
||||||
|
for k in range(4):
|
||||||
|
word += l[i][0][j+k]
|
||||||
|
print("word", word)
|
||||||
|
if word == "XMAS" :
|
||||||
|
return True
|
||||||
|
else :
|
||||||
|
return False
|
||||||
|
|
||||||
|
def search_up(l,i,j): #horizontal forward
|
||||||
|
word = ""
|
||||||
|
|
||||||
|
for k in range(4):
|
||||||
|
word += l[i-k][0][j]
|
||||||
|
print("word", word)
|
||||||
|
if word == "XMAS" :
|
||||||
|
return True
|
||||||
|
else :
|
||||||
|
return False
|
||||||
|
|
||||||
|
def search_down(l,i,j): #horizontal forward
|
||||||
|
word = ""
|
||||||
|
|
||||||
|
for k in range(4):
|
||||||
|
word += l[i+k][0][j]
|
||||||
|
print("word", word)
|
||||||
|
if word == "XMAS" :
|
||||||
|
return True
|
||||||
|
else :
|
||||||
|
return False
|
||||||
|
|
||||||
|
def search_up_left(l,i,j): #horizontal forward
|
||||||
|
word = ""
|
||||||
|
|
||||||
|
for k in range(4):
|
||||||
|
word += l[i-k][0][j-k]
|
||||||
|
print("word", word)
|
||||||
|
if word == "XMAS" :
|
||||||
|
return True
|
||||||
|
else :
|
||||||
|
return False
|
||||||
|
|
||||||
|
def search_up_right(l,i,j): #horizontal forward
|
||||||
|
word = ""
|
||||||
|
|
||||||
|
for k in range(4):
|
||||||
|
word += l[i-k][0][j+k]
|
||||||
|
print("word", word)
|
||||||
|
if word == "XMAS" :
|
||||||
|
return True
|
||||||
|
else :
|
||||||
|
return False
|
||||||
|
|
||||||
|
def search_down_left(l,i,j): #horizontal forward
|
||||||
|
word = ""
|
||||||
|
|
||||||
|
for k in range(4):
|
||||||
|
word += l[i+k][0][j-k]
|
||||||
|
print("word", word)
|
||||||
|
if word == "XMAS" :
|
||||||
|
return True
|
||||||
|
else :
|
||||||
|
return False
|
||||||
|
|
||||||
|
def search_down_right(l,i,j): #horizontal forward
|
||||||
|
word = ""
|
||||||
|
|
||||||
|
for k in range(4):
|
||||||
|
word += l[i+k][0][j+k]
|
||||||
|
print("word", word)
|
||||||
|
if word == "XMAS" :
|
||||||
|
return True
|
||||||
|
else :
|
||||||
|
return False
|
||||||
|
|
||||||
|
def search_mas(l,i,k):
|
||||||
|
diag1 = l[i-1][0][j-1] + l[i][0][j] + l[i+1][0][j+1]
|
||||||
|
diag2 = l[i+1][0][j-1] + l[i][0][j] + l[i-1][0][j+1]
|
||||||
|
if diag1 == "MAS" or diag1 == "SAM":
|
||||||
|
if diag2 == "MAS" or diag2 == "SAM":
|
||||||
|
return True
|
||||||
|
else :
|
||||||
|
return False
|
||||||
|
|
||||||
|
if __name__=="__main__":
|
||||||
|
PART1 = False
|
||||||
|
cnt = 0
|
||||||
|
if PART1 :
|
||||||
|
for i in range(len(l)):
|
||||||
|
for j in range(len(l[i][0])):
|
||||||
|
|
||||||
|
if j - 3 >= 0:
|
||||||
|
xmas = search_left(l,i,j)
|
||||||
|
print("XMAS left",xmas)
|
||||||
|
if xmas:
|
||||||
|
cnt+=1
|
||||||
|
"not working left"
|
||||||
|
if j + 3 <= len(l[i][0])-1:
|
||||||
|
xmas = search_right(l,i,j)
|
||||||
|
print("XMAS right",xmas)
|
||||||
|
if xmas:
|
||||||
|
cnt+=1
|
||||||
|
"not working right"
|
||||||
|
if i - 3 >= 0 :
|
||||||
|
xmas = search_up(l,i,j)
|
||||||
|
print("XMAS up",xmas)
|
||||||
|
if xmas:
|
||||||
|
cnt+=1
|
||||||
|
"not working up"
|
||||||
|
if i + 3 <= len(l) - 1:
|
||||||
|
xmas = search_down(l,i,j)
|
||||||
|
print("XMAS down",xmas)
|
||||||
|
if xmas:
|
||||||
|
cnt+=1
|
||||||
|
"not working down"
|
||||||
|
|
||||||
|
if j - 3 >= 0 and i - 3 >= 0 :
|
||||||
|
xmas = search_up_left(l,i,j)
|
||||||
|
print("XMAS up left",xmas)
|
||||||
|
if xmas:
|
||||||
|
cnt+=1
|
||||||
|
"not working up left"
|
||||||
|
if j + 3 <= len(l[i][0])-1 and i - 3 >= 0:
|
||||||
|
xmas = search_up_right(l,i,j)
|
||||||
|
print("XMAS upright",xmas)
|
||||||
|
if xmas:
|
||||||
|
cnt+=1
|
||||||
|
"not working upright"
|
||||||
|
if j - 3 >= 0 and i + 3 <= len(l)-1:
|
||||||
|
xmas = search_down_left(l,i,j)
|
||||||
|
print("XMAS down left",xmas)
|
||||||
|
if xmas:
|
||||||
|
cnt+=1
|
||||||
|
"not working down left"
|
||||||
|
if j + 3 <= len(l[i][0])-1 and i + 3 <= len(l)-1:
|
||||||
|
xmas = search_down_right(l,i,j)
|
||||||
|
print("XMAS down right",xmas)
|
||||||
|
if xmas:
|
||||||
|
cnt+=1
|
||||||
|
"not working down right"
|
||||||
|
else:
|
||||||
|
cnt = 0
|
||||||
|
for i in range(len(l)):
|
||||||
|
for j in range(len(l[i][0])):
|
||||||
|
if l[i][0][j] == "A":
|
||||||
|
if j - 1 >= 0 and i + 1 <= len(l)-1 and j + 1 <= len(l[i][0])-1 and i - 1 >= 0:
|
||||||
|
xmas = search_mas(l,i,j)
|
||||||
|
print("x-mas", xmas)
|
||||||
|
if xmas :
|
||||||
|
cnt += 1
|
||||||
|
|
||||||
|
print(cnt)
|
||||||
Reference in New Issue
Block a user