Code for the Advent of Code event
aoc advent-of-code
at rust 28 lines 607 B view raw
1#!/usr/bin/env ruby 2# frozen_string_literal: true 3 4NUMS = ARGF.readlines.map(&:to_i).freeze 5LEN = NUMS.size 6MOD = LEN - 1 7 8def mix(nums, indices) 9 LEN.times do |original_i| 10 current_i = indices.index original_i 11 indices.delete_at current_i 12 indices.insert (current_i + nums[original_i]) % MOD, original_i 13 end 14end 15 16def solve(nums, n) 17 indices = LEN.times.to_a 18 n.times { mix(nums, indices) } 19 zero_i = indices.index nums.index 0 20 [1000, 2000, 3000].sum { |n| nums[indices[(zero_i + n) % LEN]] } 21end 22 23puts solve(NUMS, 1) 24 25KEY = 811_589_153 26NUMS2 = NUMS.map { _1 * KEY } 27 28puts solve(NUMS2, 10)