Module: AtCoderFriends::Parser::Binary
- Defined in:
- lib/at_coder_friends/parser/binary.rb
Overview
detect binary problem
Class Method Summary collapse
Class Method Details
.exp_values(pbm) ⇒ Object
26 27 28 29 30 31 32 |
# 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) ⇒ Object
34 35 36 |
# File 'lib/at_coder_friends/parser/binary.rb', line 34 def output_format(pbm) pbm.sections[Problem::SECTION_OUT_FMT]&.content || '' end |
.process(pbm) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# 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..binary_values = if out_fmt =~ /#{re1}.+#{re2}/m vs elsif out_fmt =~ /#{re2}.+#{re1}/m vs.reverse end end |