1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
regex = /(\w+): capacity (-?\d+), durability (\d+), flavor (-?\d+), texture (-?\d+), calories (\d+)/
ingredients = Hash[DATA.read.scan(regex).map {|name, *attrs| [name, attrs.map(&:to_i)] }]
max = 0
(0..100).each do |i|
  (0..100-i).each do |j|
    (0..100-i-j).each do |k|
      l = 100-i-j-k
      a = [i,j,k,l]
      s = (0..4).map {|s|
        ingredients.values.map {|x| x[s] }.zip(a).map {|x,y| x*y }.inject(:+)
      }.map {|s|
        [s,0].max
      }
      cals = s.pop
      s = s.inject(:*)
      if s > max && cals == 500
        max = s
        p a, s
      end
    end
  end
end
__END__