def inter_means(sequences)
Enumerator.new do |y|
last_inserted = nil
sequences.lazy.each do |seq|
first = true
seq.lazy.each do |element|
if first && last_inserted
y << (element + last_inserted) / 2.0
last_inserted = nil
end
first = false
y << element
last_inserted = element
end
end
end
end
stdin_stream = Enumerator.new do |y|
number = ""
STDIN.each_char.lazy.each do |c|
print c # Показать порядок ввода и вычисления
if c =~ /\d/
number += c
else
y << number.to_i if number != ""
number = ""
end
end
y << number.to_i if number != ""
end
inputs = [
[[], stdin_stream.lazy, [1]],
# [[*1..5], [*3..6].reverse, [], [-3, -3, -3]],
# [],
# [[], [1, 2, 3], [], [-3, -2, -1], [], []]
]
inputs.each do |input|
puts " #{input.inspect}"
puts "#{inter_means(input).each { |n| puts "<#{n}>" }}"
end
# [[1, 2, 3, 4, 5], [6, 5, 4, 3], [], [-3, -3, -3]]
# => [1, 2, 3, 4, 5, 5.5, 6, 5, 4, 3, 0.0, -3, -3, -3]
# []
# => []
# [[], [], []]
# => []
# [[], [1, 2, 3], [], [-3, -2, -1], [], []]
# => [1, 2, 3, 0.0, -3, -2, -1]
ZGVmIGludGVyX21lYW5zKHNlcXVlbmNlcykKICBFbnVtZXJhdG9yLm5ldyBkbyB8eXwKICAgIGxhc3RfaW5zZXJ0ZWQgPSBuaWwKICAgIHNlcXVlbmNlcy5sYXp5LmVhY2ggZG8gfHNlcXwKICAgICAgZmlyc3QgPSB0cnVlCiAgICAgIHNlcS5sYXp5LmVhY2ggZG8gfGVsZW1lbnR8CiAgICAgICAgaWYgZmlyc3QgJiYgbGFzdF9pbnNlcnRlZAogICAgICAgICAgeSA8PCAoZWxlbWVudCArIGxhc3RfaW5zZXJ0ZWQpIC8gMi4wCiAgICAgICAgICBsYXN0X2luc2VydGVkID0gbmlsCiAgICAgICAgZW5kCiAgICAgICAgZmlyc3QgPSBmYWxzZQogICAgICAgIHkgPDwgZWxlbWVudAogICAgICAgIGxhc3RfaW5zZXJ0ZWQgPSBlbGVtZW50CiAgICAgIGVuZAogICAgZW5kCiAgZW5kCmVuZAoKc3RkaW5fc3RyZWFtID0gRW51bWVyYXRvci5uZXcgZG8gfHl8CiAgbnVtYmVyID0gIiIKICBTVERJTi5lYWNoX2NoYXIubGF6eS5lYWNoIGRvIHxjfAogIAlwcmludCBjICMg0J/QvtC60LDQt9Cw0YLRjCDQv9C+0YDRj9C00L7QuiDQstCy0L7QtNCwINC4INCy0YvRh9C40YHQu9C10L3QuNGPCiAgICBpZiBjID1+IC9cZC8KICAgICAgbnVtYmVyICs9IGMKICAgIGVsc2UKICAgICAgeSA8PCBudW1iZXIudG9faSBpZiBudW1iZXIgIT0gIiIKICAgICAgbnVtYmVyID0gIiIKICAgIGVuZAogIGVuZAogIHkgPDwgbnVtYmVyLnRvX2kgaWYgbnVtYmVyICE9ICIiCmVuZAoKaW5wdXRzID0gWwogIFtbXSwgc3RkaW5fc3RyZWFtLmxhenksIFsxXV0sCiAgIyBbWyoxLi41XSwgWyozLi42XS5yZXZlcnNlLCBbXSwgWy0zLCAtMywgLTNdXSwKICAjIFtdLAogICMgW1tdLCBbMSwgMiwgM10sIFtdLCBbLTMsIC0yLCAtMV0sIFtdLCBbXV0KXQoKaW5wdXRzLmVhY2ggZG8gfGlucHV0fAogIHB1dHMgIiAgI3tpbnB1dC5pbnNwZWN0fSIKICBwdXRzICIje2ludGVyX21lYW5zKGlucHV0KS5lYWNoIHsgfG58IHB1dHMgIjwje259PiIgfX0iCmVuZAoKIyAgIFtbMSwgMiwgMywgNCwgNV0sIFs2LCA1LCA0LCAzXSwgW10sIFstMywgLTMsIC0zXV0KIyA9PiBbMSwgMiwgMywgNCwgNSwgNS41LCA2LCA1LCA0LCAzLCAwLjAsIC0zLCAtMywgLTNdCiMgICBbXQojID0+IFtdCiMgICBbW10sIFtdLCBbXV0KIyA9PiBbXQojICAgW1tdLCBbMSwgMiwgM10sIFtdLCBbLTMsIC0yLCAtMV0sIFtdLCBbXV0KIyA9PiBbMSwgMiwgMywgMC4wLCAtMywgLTIsIC0xXQ==