diff options
author | Orangerot <purple@orangerot.dev> | 2022-12-17 01:58:22 +0100 |
---|---|---|
committer | Orangerot <purple@orangerot.dev> | 2022-12-17 01:58:22 +0100 |
commit | 4a894a7b95382a92303bf12191f0e1d1d6d72063 (patch) | |
tree | cab9d4136bb3bd8b2af67d430c34ddd5ca16db30 /2022/day08 | |
parent | 6596b48113ced669b206d2e1f1e8ba6edcba88a2 (diff) |
finished day 8
Diffstat (limited to '2022/day08')
-rw-r--r-- | 2022/day08/main2.py | 34 | ||||
-rw-r--r-- | 2022/day08/main3.py | 40 |
2 files changed, 60 insertions, 14 deletions
diff --git a/2022/day08/main2.py b/2022/day08/main2.py index a2a7df2..9db3879 100644 --- a/2022/day08/main2.py +++ b/2022/day08/main2.py @@ -2,35 +2,41 @@ import sys def isVisible(lines, row, col): scenic = 1 + + # up score1 = 0 - for x in lines[:row:-1]: - if ( x[col] >= lines[row][col]): - break + for x in lines[:row][::-1]: score1 += 1 - scenic *= score1 - - score2 = 0 - for x in lines[row+1:]: if ( x[col] >= lines[row][col]): break - score2 += 1 - scenic *= score2 + scenic *= score1 + # left score3 = 0 - for x in lines[row][:col:-1]: + for x in lines[row][:col-1][::-1]: + score3 += 1 if ( x >= lines[row][col]): break - score3 += 1 scenic *= score3 + # right score4 = 0 - for x in lines[row][col:]: + for x in lines[row][col+1:]: + score4 += 1 if ( x >= lines[row][col]): break - score4 += 1 scenic *= score4 - print(row, col, score1, score2, score3, score4, scenic) + # down + score2 = 0 + for x in lines[row:]: + score2 += 1 + if ( x[col] >= lines[row][col]): + break + scenic *= score2 + + + print(row, col, "|", score1, score2, score3, score4, "|", scenic) return scenic with open(sys.argv[1], "r") as file: diff --git a/2022/day08/main3.py b/2022/day08/main3.py new file mode 100644 index 0000000..e183bf2 --- /dev/null +++ b/2022/day08/main3.py @@ -0,0 +1,40 @@ +import sys + +def isVisible(lines, row, col): + scenic = 1 + score = [1,2,3,4] + score[0] = [x[col] < lines[row][col] for x in lines[:row][::-1]] + score[1] = [x[col] < lines[row][col] for x in lines[row+1:]] + score[2] = [x < lines[row][col] for x in lines[row][:col][::-1]] + score[3] = [x < lines[row][col] for x in lines[row][col+1:]] + + + for a in score: + # print(a) + dist = 0 + if (len(a) == 0): + dist = 0 + elif (all(a)): + dist = len(a) + else: + dist = a.index(False) + 1 + # print(dist) + scenic *= dist + + print(row, col, "|", scenic) + return scenic + +with open(sys.argv[1], "r") as file: + lines = file.readlines() + for a in range(len(lines)): + lines[a] = lines[a].rstrip() + # a = a.rstrip() + + best=0 + for row in range(len(lines)): + for col in range(len(lines[0])): + # print(lines[row][col], end="") + yes = isVisible(lines, row, col) + best = max(best, yes) + + print(best) |