eh bored again
This commit is contained in:
parent
4960ab9dfe
commit
8566841ccc

@ 1,12 +1,13 @@


list = File.read!("input.txt")


> String.split("\n")


> String.split(~r/\R/)


> Enum.map(&String.to_integer/1)




ans1 = list


> Enum.sum()


IO.puts(ans1)




reducer = fn i, {current, seen} > frequency = current + i


reducer = fn i, {current, seen} >


frequency = current + i


if MapSet.member?(seen, frequency) do


{:halt, frequency}


else




45
2018/01/01.py
Normal file
45
2018/01/01.py
Normal file

@ 0,0 +1,45 @@


with open("input.txt") as f:


lines = f.read().splitlines()




freqs = [int(line) for line in lines]


print("Part 1:", sum(freqs))




## what follows is a O(n log n) solution using modulos to avoid cycling manually.


## personally i just did it in elixir with Stream.cycle()...




from itertools import accumulate


sums = [0] + list(accumulate(freqs))


seen = set()




# check first cycle


for s in sums:


if s in seen:


ans2 = s


seen.add(s)




# check if last element is 0 (can't do mod 0)


tail = sums[1]


if tail == 0:


ans2 = 0




# calculate mapping of all mods and indexes


sums = sums[:1] # the last sum is part of the next iteration  we start at 0


from collections import defaultdict


mods = defaultdict(list)


for i, s in enumerate(sums):


mods[s % tail].append((i,s))




mini, mind, minf = None, None, None


for m in mods.values():


ss = list(sorted(m, key = lambda t: t[1])) # sort by second element of tuple


for i in range(1,len(ss)):


diff = ss[i][1]  ss[i1][1]


index = ss[i1][0] if tail > 0 else ss[i][0]


freq = ss[i][1] if tail > 0 else ss[i1][1]


if mind is None or diff < mind or (diff == mind and index < mini):


mini = index


mind = diff


minf = freq




ans2 = minf


print("Part 2:", ans2)

26
2018/03/03.py
Normal file
26
2018/03/03.py
Normal file

@ 0,0 +1,26 @@


with open("input.txt") as f:


lines = f.read().splitlines()




import re


claims = [[*map(int, re.findall(r'\d+', line))] for line in lines]




from collections import Counter


fabric = Counter(


(i,j)


for id, x, y, width, height in claims


for i in range(x,x+width)


for j in range(y,y+height)


)




ans1 = sum(1 for c in fabric.values() if c > 1) # more than 1 claim


print("Part 1:",ans1)




ans2 = next(


id


for id, x, y, width, height in claims


if all(fabric[(i,j)] == 1


for i in range(x,x+width)


for j in range(y,y+height)


)


)


print("Part 2:",ans2)

1323
2018/03/input.txt
Normal file
1323
2018/03/input.txt
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue