initial_string = [*0..255] # initial_string = [*0..4] shifts = File.open('puzzle_10.txt').read.split(',').map(&:to_i) # shifts = [3, 4, 1, 5] skip_size = 0 offset = 0 for shift in shifts do initial_string.rotate! offset if shift > 0 then rotated_bit = initial_string[0..shift - 1] kept_bit = initial_string[shift..initial_string.length-1] initial_string = rotated_bit.reverse + kept_bit end initial_string.rotate! -offset offset += shift + skip_size skip_size += 1 end print initial_string[0] * initial_string[1]