def pandigital?(n)
  n.to_s.split('').map(&:to_i).sort == [1,2,3,4,5,6,7,8,9]
end

def largest_pandigital_composition_up_to(n)
  largest_pandigital = 1

  (2..n).each do |i|
    digit_list = []
    multiplier = 1
    until digit_list.length >= 9
      digit_list += (i * multiplier).to_s.split('').map(&:to_i)
      multiplier += 1
    end
    number = digit_list.join('').to_i
    if pandigital?(number)
      largest_pandigital = number if number > largest_pandigital
    end
  end

  largest_pandigital
end