Something went wrong. Try again.
Code for the Advent of Code event
aoc advent-of-code
Something went wrong. Try again.
830 B · 53 lines
Ruby
at rust
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354#!/usr/bin/env ruby# frozen_string_literal: true
class Elf attr_reader :id
attr_accessor :previous, :next
def initialize(id) @id = id end
def delete! @next.previous = @previous @previous.next = @next endend
def make_elves(count) elves = count.times.map { |i| Elf.new(i + 1) } elves.each.with_index do |elf, i| elf.previous = elves[(i - 1) % count] elf.next = elves[(i + 1) % count] end elvesend
elves = make_elves $stdin.readline.strip.to_i
SIZE = elves.size
start = elves.first
while start.next != start start.next.delete! start = start.nextend
puts "(1) #{start.id}"
elves = make_elves SIZE
start = elves.firstmid = elves[SIZE / 2]
SIZE.times do |i| mid.delete! mid = mid.next mid = mid.next if (SIZE - i).odd? start = start.nextend
puts "(2) #{start.id}"