From 02b83c40054363ee69a72e47e4404fb06324b57b Mon Sep 17 00:00:00 2001 From: Marguerite Miallier Date: Wed, 4 Dec 2024 22:44:23 +0100 Subject: [PATCH] jour 4 --- day4.py | 183 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 day4.py diff --git a/day4.py b/day4.py new file mode 100644 index 0000000..25de4ea --- /dev/null +++ b/day4.py @@ -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) \ No newline at end of file