Absolutely horrible solution
This commit is contained in:
parent
63021fa173
commit
fd278fdfa8
|
@ -3,22 +3,86 @@
|
||||||
###
|
###
|
||||||
|
|
||||||
|
|
||||||
a = 325489
|
input = 325489
|
||||||
b = a
|
|
||||||
while Math.sqrt(b) % 2 != 1 do
|
|
||||||
b += 1
|
|
||||||
end
|
|
||||||
puts "Total: " + b.to_s
|
|
||||||
side_length = Math.sqrt(b).ceil
|
|
||||||
puts "Side length: " + side_length.to_s
|
|
||||||
diff = b - a
|
|
||||||
puts "Diff: " + diff.to_s
|
|
||||||
|
|
||||||
steps_req = diff % (side_length - 1)
|
side_length = Math.sqrt(input).ceil ## 571
|
||||||
to_center = (side_length-1) / 2
|
num_at_level = side_length**2 ## 326041
|
||||||
to_mid_of_row = ((side_length / 2) - steps_req).abs
|
diff = num_at_level - input ## 552
|
||||||
solution = to_center + to_mid_of_row
|
|
||||||
|
steps_req = diff % (side_length - 1) ## 552
|
||||||
|
to_center = (side_length-1) / 2 ## 285
|
||||||
|
to_mid_of_row = ((side_length / 2) - steps_req).abs ## 267
|
||||||
|
solution = to_center + to_mid_of_row ## 552
|
||||||
puts "Pls correct yes: " + solution.to_s
|
puts "Pls correct yes: " + solution.to_s
|
||||||
|
|
||||||
|
|
||||||
|
###
|
||||||
|
# Part 2
|
||||||
|
###
|
||||||
|
# Fuck it, bruteforcing
|
||||||
|
|
||||||
|
input = 325489
|
||||||
|
|
||||||
|
def look_around(x,y,spiral)
|
||||||
|
result = 0
|
||||||
|
(y-1...y+2).each do |y_val|
|
||||||
|
(x-1...x+2).each do |x_val|
|
||||||
|
result += spiral[[x_val,y_val]]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
result
|
||||||
|
end
|
||||||
|
|
||||||
|
def increment_spiral(x,y,spiral)
|
||||||
|
spiral[[x,y]] = look_around(x,y,spiral)
|
||||||
|
end
|
||||||
|
|
||||||
|
def pls(input)
|
||||||
|
result = 0
|
||||||
|
spiral = Hash.new 0
|
||||||
|
spiral[[0,0]],i,j = 1,0,0
|
||||||
|
inf = Float::INFINITY
|
||||||
|
(1..inf).step(2) do |s|
|
||||||
|
(0...s).each do
|
||||||
|
i+=1
|
||||||
|
spiral[[i,j]] = look_around(i,j,spiral)
|
||||||
|
if spiral[[i,j]] > input then
|
||||||
|
result = spiral[[i,j]]
|
||||||
|
puts result
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if result != 0 then break end
|
||||||
|
(0...s).each do
|
||||||
|
j-=1
|
||||||
|
spiral[[i,j]] = look_around(i,j,spiral)
|
||||||
|
if spiral[[i,j]] > input then
|
||||||
|
result = spiral[[i,j]]
|
||||||
|
puts result
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if result != 0 then break end
|
||||||
|
(0...(s+1)).each do
|
||||||
|
i-=1
|
||||||
|
spiral[[i,j]] = look_around(i,j,spiral)
|
||||||
|
if spiral[[i,j]] > input then
|
||||||
|
result = spiral[[i,j]]
|
||||||
|
puts result
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if result != 0 then break end
|
||||||
|
(0...(s+1)).each do
|
||||||
|
j+=1
|
||||||
|
spiral[[i,j]] = look_around(i,j,spiral)
|
||||||
|
if spiral[[i,j]] > input then
|
||||||
|
result = spiral[[i,j]]
|
||||||
|
puts result
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if result != 0 then break end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
pls(325489)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user