#!/usr/bin/ruby
class Integer
MAPPING = [" |\n |\n", " |/\n |\n", " |_\n |\n", " |\n |\\\n",
" |\n/|\n", "_|\n |\n", "\\|\n |\n", "\\|/\n |\n",
"\\|_\n |\n", "\\|\n |\\\n"]
def to_pss
(self % 1000).to_s.rjust(3, "0").chars.map(&:to_i).reverse.map { |n| MAPPING[n] }.join
end
end
class Symbol
MAPPING = { :e => " |/\n |\n\\|\n |\n\\|\n |\n",
:n => "_|/\n |\n\\|\n |\n |\n/|\n",
:dot => " |\n/|\n |/\n |\n |/\n |\n" }
def to_pss
MAPPING[self]
end
end
input = nil
begin
input = ARGF.read.gsub(/\s+/, "").bytes.to_a
input = input.fill(1, input.length, 800 - input.length)
rescue => e
puts "H"
puts "usage: #{__FILE__} input_file"
end
[[:n, input[170] - input[261], input[38] - input[399], :dot, ((input[185] * input[223]) % 1000) + (input[446] / 10) + 2].map(&:to_pss),
[:e, input[212] - input[266], input[661] - input[781], :dot, (((input[60] + input[66]) * input[195]) % 1000) + input[159]].map(&:to_pss)].each do |coord|
puts coord.join("\n")
puts
end
IyEvdXNyL2Jpbi9ydWJ5CgpjbGFzcyBJbnRlZ2VyCgogIE1BUFBJTkcgPSBbIiB8XG4gfFxuIiwgIiB8L1xuIHxcbiIsICIgfF9cbiB8XG4iLCAiIHxcbiB8XFxcbiIsCiAgICAgICAgICAgICAiIHxcbi98XG4iLCAiX3xcbiB8XG4iLCAiXFx8XG4gfFxuIiwgIlxcfC9cbiB8XG4iLAogICAgICAgICAgICAgIlxcfF9cbiB8XG4iLCAiXFx8XG4gfFxcXG4iXQoKICBkZWYgdG9fcHNzCiAgICAoc2VsZiAlIDEwMDApLnRvX3Mucmp1c3QoMywgIjAiKS5jaGFycy5tYXAoJjp0b19pKS5yZXZlcnNlLm1hcCB7IHxufCBNQVBQSU5HW25dIH0uam9pbgogIGVuZAoKZW5kCgpjbGFzcyBTeW1ib2wKCiAgTUFQUElORyA9IHsgOmUgPT4gIiB8L1xuIHxcblxcfFxuIHxcblxcfFxuIHxcbiIsCiAgICAgICAgICAgICAgOm4gPT4gIl98L1xuIHxcblxcfFxuIHxcbiB8XG4vfFxuIiwKICAgICAgICAgICAgICA6ZG90ID0+ICIgfFxuL3xcbiB8L1xuIHxcbiB8L1xuIHxcbiIgfQoKICBkZWYgdG9fcHNzCiAgICBNQVBQSU5HW3NlbGZdCiAgZW5kCgplbmQKCmlucHV0ID0gbmlsCgpiZWdpbgogIGlucHV0ID0gQVJHRi5yZWFkLmdzdWIoL1xzKy8sICIiKS5ieXRlcy50b19hCiAgaW5wdXQgPSBpbnB1dC5maWxsKDEsIGlucHV0Lmxlbmd0aCwgODAwIC0gaW5wdXQubGVuZ3RoKQpyZXNjdWUgPT4gZQogIHB1dHMgIkgiCiAgcHV0cyAidXNhZ2U6ICN7X19GSUxFX199IGlucHV0X2ZpbGUiCmVuZAoKW1s6biwgaW5wdXRbMTcwXSAtIGlucHV0WzI2MV0sIGlucHV0WzM4XSAtIGlucHV0WzM5OV0sIDpkb3QsICgoaW5wdXRbMTg1XSAqIGlucHV0WzIyM10pICUgMTAwMCkgKyAoaW5wdXRbNDQ2XSAvIDEwKSArIDJdLm1hcCgmOnRvX3BzcyksCiBbOmUsIGlucHV0WzIxMl0gLSBpbnB1dFsyNjZdLCBpbnB1dFs2NjFdIC0gaW5wdXRbNzgxXSwgOmRvdCwgKCgoaW5wdXRbNjBdICsgaW5wdXRbNjZdKSAqIGlucHV0WzE5NV0pICUgMTAwMCkgKyBpbnB1dFsxNTldXS5tYXAoJjp0b19wc3MpXS5lYWNoIGRvIHxjb29yZHwKICBwdXRzIGNvb3JkLmpvaW4oIlxuIikKICBwdXRzCmVuZAo=