diff --git a/day04.py b/day04.py new file mode 100644 index 0000000..e1a6bcf --- /dev/null +++ b/day04.py @@ -0,0 +1,80 @@ +#!/usr/bin/env python3 + +# N +# NW NO +# W X O +# SW SO +# S + +# 1 +x = list("XMAS") + +h = list() +with open('day04') as f: + for l in f: + h.append([*l.strip()]) + +def idx(i,j,k): + global h,x + if i<0 or j<0 or i>=len(h) or j>=len(h[0]): + return False + if h[i][j] != x[k]: + return False + return True + +def fmas(i,j): + n=o=s=w=1 + no=so=sw=nw=1 + + for k in range(4): + if not idx(i,j+k, k): o = 0 + if not idx(i,j-k, k): w = 0 + if not idx(i+k,j,k): s = 0 + if not idx(i-k,j,k): n = 0 + + if not idx(i-k,j+k,k): no = 0 + if not idx(i+k,j-k,k): sw = 0 + if not idx(i-k,j-k,k): nw = 0 + if not idx(i+k,j+k,k): so = 0 + + return n+o+s+w+no+so+sw+nw + +res = 0 +for i in range(len(h)): + for j in range(len(h[0])): + if h[i][j] == 'X': + res += fmas(i,j) + +# 2 +def idx2(i,j): + global h,x + if i<0 or j<0 or i>=len(h) or j>=len(h[0]): + return False + if h[i][j] == 'S': + return 'S' + if h[i][j] == 'M': + return 'M' + return False + +def fmas2(i,j): + no = idx2(i-1,j+1) + sw = idx2(i+1,j-1) + nw = idx2(i-1,j-1) + so = idx2(i+1,j+1) + + if not no: return 0 + if not sw: return 0 + if not nw: return 0 + if not so: return 0 + + if sw == no: return 0 + if nw == so: return 0 + + return 1 + + +res2 = 0 +for i in range(len(h)): + for j in range(len(h[0])): + if h[i][j] == 'A': + res2 += fmas2(i,j)