summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOrangerot <purple@orangerot.dev>2022-12-17 01:58:22 +0100
committerOrangerot <purple@orangerot.dev>2022-12-17 01:58:22 +0100
commit4a894a7b95382a92303bf12191f0e1d1d6d72063 (patch)
treecab9d4136bb3bd8b2af67d430c34ddd5ca16db30
parent6596b48113ced669b206d2e1f1e8ba6edcba88a2 (diff)
finished day 8
-rw-r--r--2022/day08/main2.py34
-rw-r--r--2022/day08/main3.py40
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)