You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
732 B
34 lines
732 B
7 years ago
|
list = (0..255).to_a
|
||
|
current = 0
|
||
|
# lengths = ARGF.read.strip.split(?,).map(&:to_i)
|
||
|
input = ARGF.read.strip
|
||
|
p input
|
||
|
lengths = input.split(//).map(&:ord)
|
||
|
p lengths
|
||
|
lengths.concat([17, 31, 73, 47, 23])
|
||
|
skip = 0
|
||
|
|
||
|
# list = (0..4).to_a
|
||
|
# lengths = [3,4,1,5]
|
||
|
|
||
|
64.times do
|
||
|
lengths.each do |length|
|
||
|
list[0, length] = list[0, length].reverse
|
||
|
list = list.rotate(length + skip)
|
||
|
current += length + skip
|
||
|
current %= list.size
|
||
|
skip += 1
|
||
|
|
||
|
# p list.rotate(list.size - current)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
list = list.rotate(list.size - current)
|
||
|
p list
|
||
|
dense = list.each_slice(16).map {|slice| slice.inject(&:^) }
|
||
|
p dense
|
||
|
p hex = dense.map {|n| n.to_s(16).rjust(2, ?0) }.join
|
||
|
|
||
|
# list = list.rotate(list.size - current)
|
||
|
# p list[0] * list[1]
|