「🎉」 init(2025): day 1
This commit is contained in:
53
2024/day04/part1.py
Normal file
53
2024/day04/part1.py
Normal file
@@ -0,0 +1,53 @@
|
||||
# sorry i gave up.
|
||||
|
||||
import os
|
||||
import os.path
|
||||
|
||||
target = "XMAS"
|
||||
|
||||
def count_horizontal(grid):
|
||||
res = 0
|
||||
for line in grid:
|
||||
res += line.count(target)
|
||||
res += line[::-1].count(target)
|
||||
return (res)
|
||||
|
||||
def count_vertical(grid):
|
||||
res = 0
|
||||
for i in range(len(grid[0])):
|
||||
res += (''.join([s[i] for s in grid if len(s) > i])).count(target)
|
||||
res += (''.join([s[i] for s in grid if len(s) > i]))[::-1].count(target)
|
||||
return (res)
|
||||
|
||||
def count_diagonal_left(grid):
|
||||
res = 0
|
||||
for i in range(len(grid)):
|
||||
res += (''.join([grid[x + i][x] for x in range(min(len(grid) - i, len(grid[0])))])).count(target)
|
||||
res += (''.join([grid[x + i][x] for x in range(min(len(grid) - i, len(grid[0])))]))[::-1].count(target)
|
||||
for i in range(1,len(grid[0])):
|
||||
res += (''.join([grid[x][x + i] for x in range(min(len(grid), len(grid[0]) - i))])).count(target)
|
||||
res += (''.join([grid[x][x + i] for x in range(min(len(grid), len(grid[0]) - i))]))[::-1].count(target)
|
||||
return (res)
|
||||
|
||||
def count_diagonal_right(grid):
|
||||
res = 0
|
||||
for i in range(len(grid)):
|
||||
res += (''.join([(grid[x + i][::-1])[x] for x in range(min(len(grid) - i, len(grid[0])))])).count(target)
|
||||
res += (''.join([(grid[x + i][::-1])[x] for x in range(min(len(grid) - i, len(grid[0])))]))[::-1].count(target)
|
||||
for i in range(1,len(grid[0])):
|
||||
res += (''.join([(grid[x][::-1])[x + i] for x in range(min(len(grid), len(grid[0]) - i))])).count(target)
|
||||
res += (''.join([(grid[x][::-1])[x + i] for x in range(min(len(grid), len(grid[0]) - i))]))[::-1].count(target)
|
||||
return (res)
|
||||
|
||||
|
||||
def main():
|
||||
file_path = "./input.txt"
|
||||
if (os.path.isfile(file_path)):
|
||||
content = open(file_path, "r").read()
|
||||
else:
|
||||
content = "MMMSXXMASM\nMSAMXMSMSA\nAMXSXMAAMM\nMSAMASMSMX\nXMASAMXAMM\nXXAMMXXAMA\nSMSMSASXSS\nSAXAMASAAA\nMAMMMXMMMM\nMXMXAXMASX"
|
||||
grid = content.split('\n')
|
||||
print(count_horizontal(grid) + count_vertical(grid) + count_diagonal_left(grid) + count_diagonal_right(grid))
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user