Solution for d2020 day 18
[?]
Jul 1, 2021, 2:02 AM
RECQJD4VUEPFFGLZOTO6IUPMBS4FDYUJCZWI7T7U4BAISS3O2XMACDependencies
- [2]
B527MN66Solve day 1 for 2020
Change contents
- file addition: day18.rb[2.17]
input = (ARGV[1] && ARGV[1] != '-') ? File.open(ARGV[1], "r") : STDINstatements = []input.each_line.each_with_index do |line,line_num|vars = [{ var: 'b', var2: 'c' }]ce = ''line.each_char do |c|if /[0-9]/ === cce += celsif ce.length > 0var = vars.lastcase ARGV[0]when '1'statements << "#{var[:var]} #{var[:op]}= #{ce}"when '2'statements << "#{var[:var2]} #{var[:o2]}= #{ce}"var[:o2] = '+'endce = ''endif /[\*\+]/ === ccase ARGV[0]when '1'vars.last[:op] = cwhen '2'var = vars.lastif '*' === cstatements << "#{var[:var]} #{var[:o1]}= #{var[:var2]}"var[:o2] = nilvar[:o1] = '*'elseendendelsif '(' === cvar = vars.lastvars << case ARGV[0]when '1'{ var: var[:var].succ }when '2's = var[:var2].succ{ var: s, var2: s.succ }endelsif ')' === cvar = vars.popnext_var = vars.lastcase ARGV[0]when '1'statements << "#{next_var[:var]} #{next_var[:op]}= #{var[:var]}"when '2'statements << "#{var[:var]} #{var[:o1]}= #{var[:var2]}"statements << "#{next_var[:var2]} #{next_var[:o2]}= #{var[:var]}"next_var[:o2] = '+'endendendif '2' === ARGV[0]if ce.length > 0statements << "#{vars[0][:var2]} #{vars[0][:o2]}= #{ce}"endstatements << "#{vars[0][:var]} #{vars[0][:o1]}= #{vars[0][:var2]}"endstatements << "a #{line_num > 0 ? '+' : ''}= b"endfunc = "-> do\n#{statements.map{|s| " #{s}" }.join("\n")}\n a\nend"func = binding.eval funcputs func.call