Added Haskell Implementations and changed directory structure
This commit is contained in:
parent
9f40c27eb9
commit
cb9dee889b
14 changed files with 392 additions and 0 deletions
13
Python/2021/06/day6.py
Normal file
13
Python/2021/06/day6.py
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
|
||||
with open("input.txt", 'r') as f:
|
||||
data = f.readlines()
|
||||
data = list(map(int, data[0].strip().split(",")))
|
||||
|
||||
fish = [data.count(i) for i in range(9)]
|
||||
|
||||
for i in range(256):
|
||||
num = fish.pop(0)
|
||||
fish[6] += num
|
||||
fish.append(num)
|
||||
|
||||
print(sum(fish))
|
||||
23
Python/2021/07/day7.py
Normal file
23
Python/2021/07/day7.py
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
import statistics
|
||||
with open("input.txt", 'r') as f:
|
||||
data = f.readlines()
|
||||
data = list(map(int, data[0].strip().split(",")))
|
||||
|
||||
# Part 1
|
||||
median = statistics.median(data)
|
||||
fuelCost = 0
|
||||
for crab in data:
|
||||
fuelCost += abs(median - crab)
|
||||
|
||||
print(fuelCost)
|
||||
|
||||
# Part 2
|
||||
flist = []
|
||||
# Definitely a better way than checking all of these
|
||||
for pos in range(0, max(data)+1):
|
||||
fuel = 0
|
||||
for crab in data:
|
||||
fuel += (abs(pos - crab)*(abs(pos - crab)+1))/2
|
||||
flist.append(fuel)
|
||||
|
||||
print(min(flist))
|
||||
20
Python/2021/07/day7_initial.py
Normal file
20
Python/2021/07/day7_initial.py
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
with open("input.txt", 'r') as f:
|
||||
data = f.readlines()
|
||||
data = list(map(int, data[0].strip().split(",")))
|
||||
|
||||
def crabMove(crab, pos):
|
||||
difference = abs(pos - crab)
|
||||
# return difference
|
||||
return (difference*(difference+1))/2
|
||||
|
||||
bestPos = 0
|
||||
bestFuel = 1000000000
|
||||
for i in range(min(data), max(data)):
|
||||
fuelCost = 0
|
||||
for crab in data:
|
||||
fuelCost += crabMove(crab, i)
|
||||
if fuelCost < bestFuel:
|
||||
bestFuel = fuelCost
|
||||
bestPos = i
|
||||
|
||||
print(bestFuel)
|
||||
74
Python/2021/08/day8.py
Normal file
74
Python/2021/08/day8.py
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
input = open("input.txt", 'r')
|
||||
|
||||
data = []
|
||||
|
||||
for line in input:
|
||||
data.append(list(line.strip().split(" ")))
|
||||
|
||||
letters = [set() for i in range(0, 10)]
|
||||
dataset = ['a','b','c','d','e','f','g']
|
||||
total = 0
|
||||
|
||||
for line in data:
|
||||
letters = [set() for i in range(0, 10)]
|
||||
for i in range(0, 10):
|
||||
entry = line[i]
|
||||
if len(entry) == 2:
|
||||
letters[1] = set([frozenset(entry)])
|
||||
elif len(entry) == 3:
|
||||
letters[7] = set([frozenset(entry)])
|
||||
elif len(entry) == 4:
|
||||
letters[4] = set([frozenset(entry)])
|
||||
elif len(entry) == 5:
|
||||
letters[2].update(set([frozenset(entry)]))
|
||||
letters[3].update(set([frozenset(entry)]))
|
||||
letters[5].update(set([frozenset(entry)]))
|
||||
elif len(entry) == 6:
|
||||
letters[0].update(set([frozenset(entry)]))
|
||||
letters[6].update(set([frozenset(entry)]))
|
||||
letters[9].update(set([frozenset(entry)]))
|
||||
elif len(entry) == 7:
|
||||
letters[8] = set([frozenset(entry)])
|
||||
cf = letters[1].pop()
|
||||
letters[1].add(cf)
|
||||
for st in letters[3]:
|
||||
if st.intersection(cf) == cf:
|
||||
letters[3] = set([st])
|
||||
letters[2].remove(st)
|
||||
letters[5].remove(st)
|
||||
|
||||
acf = letters[7].pop()
|
||||
letters[7].add(acf)
|
||||
for st in letters[6]:
|
||||
if st.intersection(acf) != acf:
|
||||
letters[6] = set([st])
|
||||
letters[0].remove(st)
|
||||
letters[9].remove(st)
|
||||
|
||||
abdefg = letters[6].pop()
|
||||
letters[6].add(abdefg)
|
||||
c = frozenset(dataset).difference(abdefg)
|
||||
for st in letters[2]:
|
||||
if st.intersection(c) == c:
|
||||
letters[2] = set([st])
|
||||
letters[5].remove(st)
|
||||
|
||||
bcdf = letters[4].pop()
|
||||
letters[4].add(bcdf)
|
||||
for st in letters[9]:
|
||||
if st.intersection(bcdf) == bcdf:
|
||||
letters[9] = set([st])
|
||||
letters[0].remove(st)
|
||||
num = ''
|
||||
for i in range(11, 15):
|
||||
entry = frozenset(line[i])
|
||||
j = 0
|
||||
for decoder in letters:
|
||||
popStorage = decoder.pop()
|
||||
decoder.add(popStorage)
|
||||
if popStorage == entry:
|
||||
num += chr(j+48)
|
||||
j += 1
|
||||
total += int(num)
|
||||
|
||||
print(total)
|
||||
Loading…
Add table
Add a link
Reference in a new issue