#!/usr/bin/rubyclass 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 endendclass 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] endendinput = nilbegin input = ARGF.read.gsub(/\s+/, "").bytes.to_a input = input.fill(1, input.length, 800 - input.length)rescue => e puts "no valid input given" 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") putsend
IyEvdXNyL2Jpbi9ydWJ5Y2xhc3MgSW50ZWdlciAgTUFQUElORyA9IFsiIHxcbiB8XG4iLCAiIHwvXG4gfFxuIiwgIiB8X1xuIHxcbiIsICIgfFxuIHxcXFxuIiwgICAgICAgICAgICAgIiB8XG4vfFxuIiwgIl98XG4gfFxuIiwgIlxcfFxuIHxcbiIsICJcXHwvXG4gfFxuIiwgICAgICAgICAgICAgIlxcfF9cbiB8XG4iLCAiXFx8XG4gfFxcXG4iXSAgZGVmIHRvX3BzcyAgICAoc2VsZiAlIDEwMDApLnRvX3Mucmp1c3QoMywgIjAiKS5jaGFycy5tYXAoJjp0b19pKS5yZXZlcnNlLm1hcCB7IHxufCBNQVBQSU5HW25dIH0uam9pbiAgZW5kZW5kY2xhc3MgU3ltYm9sICBNQVBQSU5HID0geyA6ZSA9PiAiIHwvXG4gfFxuXFx8XG4gfFxuXFx8XG4gfFxuIiwgICAgICAgICAgICAgIDpuID0+ICJffC9cbiB8XG5cXHxcbiB8XG4gfFxuL3xcbiIsICAgICAgICAgICAgICA6ZG90ID0+ICIgfFxuL3xcbiB8L1xuIHxcbiB8L1xuIHxcbiIgfSAgZGVmIHRvX3BzcyAgICBNQVBQSU5HW3NlbGZdICBlbmRlbmRpbnB1dCA9IG5pbGJlZ2luICBpbnB1dCA9IEFSR0YucmVhZC5nc3ViKC9ccysvLCAiIikuYnl0ZXMudG9fYSAgaW5wdXQgPSBpbnB1dC5maWxsKDEsIGlucHV0Lmxlbmd0aCwgODAwIC0gaW5wdXQubGVuZ3RoKXJlc2N1ZSA9PiBlICBwdXRzICJubyB2YWxpZCBpbnB1dCBnaXZlbiIgIHB1dHMgInVzYWdlOiAje19fRklMRV9ffSBpbnB1dF9maWxlImVuZFtbOm4sIGlucHV0WzE3MF0gLSBpbnB1dFsyNjFdLCBpbnB1dFszOF0gLSBpbnB1dFszOTldLCA6ZG90LCAoKGlucHV0WzE4NV0gKiBpbnB1dFsyMjNdKSAlIDEwMDApICsgKGlucHV0WzQ0Nl0gLyAxMCkgKyAyXS5tYXAoJjp0b19wc3MpLCBbOmUsIGlucHV0WzIxMl0gLSBpbnB1dFsyNjZdLCBpbnB1dFs2NjFdIC0gaW5wdXRbNzgxXSwgOmRvdCwgKCgoaW5wdXRbNjBdICsgaW5wdXRbNjZdKSAqIGlucHV0WzE5NV0pICUgMTAwMCkgKyBpbnB1dFsxNTldXS5tYXAoJjp0b19wc3MpXS5lYWNoIGRvIHxjb29yZHwgIHB1dHMgY29vcmQuam9pbigiXG4iKSAgcHV0c2VuZA==