aoc_omni/ruby/2016/5/problem.rb
2025-08-07 06:20:08 -04:00

40 lines
737 B
Ruby

require "digest"
input = STDIN.read.chomp
salt = 0
password = []
loop do
digest = Digest::MD5.hexdigest("#{input}#{salt}")
if digest[0...5] == "00000"
password << digest[5]
puts password.join("")
break if password.length >= 8
end
salt += 1
end
part_1 = password.join("")
puts "Part 1: #{part_1}"
salt = 0
to_solve = 8
password = "--------"
loop do
digest = Digest::MD5.hexdigest("#{input}#{salt}")
if digest[0...5] == "00000"
if digest[5].to_i.to_s == digest[5] && digest[5].to_i < 8 && password[digest[5].to_i] == "-"
password[digest[5].to_i] = digest[6]
to_solve -= 1
puts password
end
break if to_solve <= 0
end
salt += 1
end
part_2 = password
puts "Part 2: #{part_2}"