From a1de6e22366061049c0c876348f4e2cfdc2f5c07 Mon Sep 17 00:00:00 2001 From: Nat Lasseter Date: Mon, 19 Nov 2018 22:56:50 +0000 Subject: [day16] Had an inspiration about part 2 --- day16/part2 | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100755 day16/part2 (limited to 'day16/part2') diff --git a/day16/part2 b/day16/part2 new file mode 100755 index 0000000..e494f16 --- /dev/null +++ b/day16/part2 @@ -0,0 +1,41 @@ +#!/usr/bin/env ruby + +input = gets.chomp.split(',') + +startline = %w( a b c d e f g h i j k l m n o p ) +line = startline.dup +i = 0 + +def dodance(line, dance) + dance.each do |istr| + case istr[0] + when 's' + n = istr[1..-1].to_i + line = line[-n..-1] + line[0..-n-1] + when 'x' + ns = istr[1..-1].split('/').map(&:to_i) + t = line[ns[0]] + line[ns[0]] = line[ns[1]] + line[ns[1]] = t + when 'p' + ps = istr[1..-1].split('/') + i0 = line.index(ps[0]) + i1 = line.index(ps[1]) + line[i0] = ps[1] + line[i1] = ps[0] + end + end + line +end + +loop do + line = dodance(line, input) + i += 1 + break if line == startline +end + +(1_000_000_000 % i).times do + line = dodance(line, input) +end + +puts line.join -- cgit v1.2.3