code: def execute
        allocation = {}
        File.open(infile).each_with_index do |line, index|
          row = row_filter.process(line, row: index)
          next if row.nil? or row.empty?
          key = key_filter.process(row)
          allocation[key] = [] if allocation[key].nil?
          allocation[key] << col_filter.process(row).split(';') 
        end
  
        File.open(outfile, 'w') do |out|
          allocation.each do |key, values|
            out.puts "#{key};#{values.flatten.uniq.sort.join(';')}"
          end
        end
      end
docs: Creates a new allocator. Options are infile, outfile, key, rows and columns to allocate to key
   Executes the allocator and assigns column values to the key