class AtCoderFriends::Problem::InputFormat

holds information about input format

Constants

ITEM_RANK

Attributes

cols[RW]
container[R]
delim[R]
names[R]
size[R]

Public Class Methods

new( container: nil, item: nil, names: [], size: [], delim: '', cols: [] ) click to toggle source
# File lib/at_coder_friends/problem.rb, line 28
def initialize(
  container: nil,
  item: nil,
  names: [],
  size: [],
  delim: '',
  cols: []
)
  @container = container
  @item = item
  @names = names
  @size = size
  @delim = delim
  @cols = cols
end

Public Instance Methods

components() click to toggle source
# File lib/at_coder_friends/problem.rb, line 61
def components
  @components ||=
    case container
    when :varray_matrix
      varray_matrix_components
    when :matrix_varray
      matrix_varray_components
    end
end
item() click to toggle source
# File lib/at_coder_friends/problem.rb, line 52
def item
  @item || cols.max_by { |k| ITEM_RANK[k] } || :number
end
matrix_varray_components() click to toggle source
# File lib/at_coder_friends/problem.rb, line 86
def matrix_varray_components
  [
    self.class.new(
      container: :matrix, item: @item,
      names: names[0..0], size: size,
      delim: delim, cols: cols[0..0]
    ),
    self.class.new(
      container: :varray,
      names: names[1..-1], size: size[0..0],
      delim: delim, cols: cols[1..-1] || []
    )
  ]
end
to_s() click to toggle source
# File lib/at_coder_friends/problem.rb, line 44
def to_s
  if container == :unknown
    "#{container} #{item}"
  else
    "#{container} #{item}(#{cols}) #{names} #{size} #{delim}"
  end
end
varray_matrix_components() click to toggle source
# File lib/at_coder_friends/problem.rb, line 71
def varray_matrix_components
  [
    self.class.new(
      container: :varray,
      names: names[0..-2], size: size[0..0],
      delim: delim, cols: cols[0..-2]
    ),
    self.class.new(
      container: :matrix, item: @item,
      names: names[-1..-1], size: size,
      delim: delim, cols: cols[-1..-1] || []
    )
  ]
end
vars() click to toggle source
# File lib/at_coder_friends/problem.rb, line 56
def vars
  tmp = @item && [@item] || cols
  names.zip(tmp).map { |(name, col)| [name, col || :number] }
end