module AtCoderFriends::Parser::Binary
detect binary problem
Public Instance Methods
exp_values(pbm)
click to toggle source
# File lib/at_coder_friends/parser/binary.rb, line 26 def exp_values(pbm) pbm .samples .select { |smp| smp.ext == :exp } .map { |smp| smp.txt.chomp } .uniq end
output_format(pbm)
click to toggle source
# File lib/at_coder_friends/parser/binary.rb, line 34 def output_format(pbm) pbm.sections[Problem::SECTION_OUT_FMT]&.content || '' end
process(pbm)
click to toggle source
# File lib/at_coder_friends/parser/binary.rb, line 9 def process(pbm) vs = exp_values(pbm) return unless vs.size == 2 return if vs.any? { |v| v.include?("\n") } return if vs.any? { |v| v =~ /\A[0-9\s]*\z/ } out_fmt = output_format(pbm) re1, re2 = vs.map { |v| Regexp.escape(v) } pbm.options.binary_values = if out_fmt =~ /#{re1}.+#{re2}/m vs elsif out_fmt =~ /#{re2}.+#{re1}/m vs.reverse end end