Completed days 1 and 2
This commit is contained in:
commit
cf706d01c4
100
01/input
Normal file
100
01/input
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
110756
|
||||||
|
132543
|
||||||
|
57911
|
||||||
|
58262
|
||||||
|
119938
|
||||||
|
58581
|
||||||
|
52446
|
||||||
|
127591
|
||||||
|
132449
|
||||||
|
82732
|
||||||
|
51388
|
||||||
|
115723
|
||||||
|
67376
|
||||||
|
61402
|
||||||
|
71379
|
||||||
|
99264
|
||||||
|
54697
|
||||||
|
120877
|
||||||
|
130457
|
||||||
|
89519
|
||||||
|
92846
|
||||||
|
121983
|
||||||
|
145752
|
||||||
|
57606
|
||||||
|
136613
|
||||||
|
74147
|
||||||
|
142443
|
||||||
|
91993
|
||||||
|
66409
|
||||||
|
71590
|
||||||
|
74057
|
||||||
|
126005
|
||||||
|
103231
|
||||||
|
104401
|
||||||
|
105004
|
||||||
|
100771
|
||||||
|
60204
|
||||||
|
125178
|
||||||
|
132927
|
||||||
|
97615
|
||||||
|
116662
|
||||||
|
91806
|
||||||
|
74435
|
||||||
|
69993
|
||||||
|
77268
|
||||||
|
124654
|
||||||
|
116862
|
||||||
|
79505
|
||||||
|
132479
|
||||||
|
104118
|
||||||
|
59975
|
||||||
|
133267
|
||||||
|
71379
|
||||||
|
136031
|
||||||
|
64325
|
||||||
|
85017
|
||||||
|
149922
|
||||||
|
148287
|
||||||
|
62061
|
||||||
|
92790
|
||||||
|
81205
|
||||||
|
74146
|
||||||
|
116381
|
||||||
|
78975
|
||||||
|
66557
|
||||||
|
74568
|
||||||
|
77797
|
||||||
|
60262
|
||||||
|
111913
|
||||||
|
53703
|
||||||
|
139663
|
||||||
|
65642
|
||||||
|
90693
|
||||||
|
105015
|
||||||
|
147887
|
||||||
|
139533
|
||||||
|
97861
|
||||||
|
68607
|
||||||
|
146757
|
||||||
|
97707
|
||||||
|
148185
|
||||||
|
87966
|
||||||
|
115839
|
||||||
|
118377
|
||||||
|
71123
|
||||||
|
82938
|
||||||
|
63957
|
||||||
|
76062
|
||||||
|
144141
|
||||||
|
138096
|
||||||
|
132460
|
||||||
|
67338
|
||||||
|
142338
|
||||||
|
76347
|
||||||
|
128877
|
||||||
|
104797
|
||||||
|
104637
|
||||||
|
107605
|
||||||
|
66506
|
||||||
|
127296
|
||||||
14
01/solution1.rb
Executable file
14
01/solution1.rb
Executable file
@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
|
def calculate_fuel(mass)
|
||||||
|
return (mass / 3).floor - 2
|
||||||
|
end
|
||||||
|
|
||||||
|
fuel_requirements = 0
|
||||||
|
|
||||||
|
ARGF.each do |line|
|
||||||
|
mass = line.to_i
|
||||||
|
fuel_requirements += calculate_fuel(mass)
|
||||||
|
end
|
||||||
|
|
||||||
|
puts "Fuel Requirements: #{fuel_requirements}"
|
||||||
22
01/solution2.rb
Executable file
22
01/solution2.rb
Executable file
@ -0,0 +1,22 @@
|
|||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
|
def calculate_fuel(mass)
|
||||||
|
return (mass / 3).floor - 2
|
||||||
|
end
|
||||||
|
|
||||||
|
def calculate_fuel_with_fuels_fuel(mass)
|
||||||
|
fuel_required = calculate_fuel(mass)
|
||||||
|
if calculate_fuel(fuel_required) > 0
|
||||||
|
fuel_required += calculate_fuel_with_fuels_fuel(fuel_required)
|
||||||
|
end
|
||||||
|
return fuel_required
|
||||||
|
end
|
||||||
|
|
||||||
|
fuel_requirements = 0
|
||||||
|
|
||||||
|
ARGF.each do |line|
|
||||||
|
mass = line.to_i
|
||||||
|
fuel_requirements += calculate_fuel_with_fuels_fuel(mass)
|
||||||
|
end
|
||||||
|
|
||||||
|
puts "Fuel Requirements: #{fuel_requirements}"
|
||||||
1
02/input
Normal file
1
02/input
Normal file
@ -0,0 +1 @@
|
|||||||
|
1,0,0,3,1,1,2,3,1,3,4,3,1,5,0,3,2,1,10,19,1,19,5,23,1,6,23,27,1,27,5,31,2,31,10,35,2,35,6,39,1,39,5,43,2,43,9,47,1,47,6,51,1,13,51,55,2,9,55,59,1,59,13,63,1,6,63,67,2,67,10,71,1,9,71,75,2,75,6,79,1,79,5,83,1,83,5,87,2,9,87,91,2,9,91,95,1,95,10,99,1,9,99,103,2,103,6,107,2,9,107,111,1,111,5,115,2,6,115,119,1,5,119,123,1,123,2,127,1,127,9,0,99,2,0,14,0
|
||||||
35
02/solution1.rb
Executable file
35
02/solution1.rb
Executable file
@ -0,0 +1,35 @@
|
|||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
|
def process_opcodes(list)
|
||||||
|
index = 0
|
||||||
|
|
||||||
|
while index < (list.length - 1)
|
||||||
|
opcode = list[index]
|
||||||
|
case opcode
|
||||||
|
when 1
|
||||||
|
input1 = list[list[index+1]]
|
||||||
|
input2 = list[list[index+2]]
|
||||||
|
list[list[index+3]] = input1 + input2
|
||||||
|
when 2
|
||||||
|
input1 = list[list[index+1]]
|
||||||
|
input2 = list[list[index+2]]
|
||||||
|
list[list[index+3]] = input1 * input2
|
||||||
|
when 99
|
||||||
|
break
|
||||||
|
end
|
||||||
|
index += 4
|
||||||
|
end
|
||||||
|
return list
|
||||||
|
end
|
||||||
|
|
||||||
|
ARGF.each do |line|
|
||||||
|
# Eat the opcode list
|
||||||
|
list = line.split(",").map(&:to_i)
|
||||||
|
|
||||||
|
# Fix the program as per the exercise
|
||||||
|
list[1] = 12
|
||||||
|
list[2] = 2
|
||||||
|
|
||||||
|
# Print the post processed list for inspection to get the 0th element
|
||||||
|
puts process_opcodes(list).inspect
|
||||||
|
end
|
||||||
51
02/solution2.rb
Executable file
51
02/solution2.rb
Executable file
@ -0,0 +1,51 @@
|
|||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
|
def process_opcodes(list)
|
||||||
|
index = 0
|
||||||
|
|
||||||
|
while index < (list.length - 1)
|
||||||
|
opcode = list[index]
|
||||||
|
case opcode
|
||||||
|
when 1
|
||||||
|
input1 = list[list[index+1]]
|
||||||
|
input2 = list[list[index+2]]
|
||||||
|
list[list[index+3]] = input1 + input2
|
||||||
|
when 2
|
||||||
|
input1 = list[list[index+1]]
|
||||||
|
input2 = list[list[index+2]]
|
||||||
|
list[list[index+3]] = input1 * input2
|
||||||
|
when 99
|
||||||
|
break
|
||||||
|
end
|
||||||
|
index += 4
|
||||||
|
end
|
||||||
|
return list
|
||||||
|
end
|
||||||
|
|
||||||
|
ARGF.each do |line|
|
||||||
|
# Eat the opcode list
|
||||||
|
list = line.split(",").map(&:to_i)
|
||||||
|
|
||||||
|
noun = 0
|
||||||
|
verb = 0
|
||||||
|
target_number = 19690720
|
||||||
|
program_output = [0]
|
||||||
|
|
||||||
|
while program_output[0] != target_number
|
||||||
|
temp_list = list.dup
|
||||||
|
temp_list[1] = noun
|
||||||
|
temp_list[2] = verb
|
||||||
|
|
||||||
|
# Enumarate through all possible nouns and verbs O(n^2)
|
||||||
|
if noun < 99
|
||||||
|
noun += 1
|
||||||
|
else
|
||||||
|
noun = 0
|
||||||
|
verb += 1
|
||||||
|
end
|
||||||
|
|
||||||
|
program_output = process_opcodes(temp_list)
|
||||||
|
end
|
||||||
|
# Print the post processed list for inspection to get the 0th element
|
||||||
|
puts program_output.inspect
|
||||||
|
end
|
||||||
Loading…
x
Reference in New Issue
Block a user