challenges

my solutions to various "programming challenge" problems
git clone https://wehaveforgeathome.hates.computer/challenges.git
Log | Files | Refs | LICENSE

018.rb (865B)


      1 #!/usr/bin/ruby
      2 
      3 vals = [
      4   75,
      5   95, 64,
      6   17, 47, 82,
      7   18, 35, 87, 10,
      8   20, 4, 82, 47, 65,
      9   19, 1, 23, 75, 3, 34,
     10   88, 2, 77, 73, 7, 63, 67,
     11   99, 65, 4, 28, 6, 16, 70, 92,
     12   41, 41, 26, 56, 83, 40, 80, 70, 33,
     13   41, 48, 72, 33, 47, 32, 37, 16, 94, 29,
     14   53, 71, 44, 65, 25, 43, 91, 52, 97, 51, 14,
     15   70, 11, 33, 28, 77, 73, 17, 78, 39, 68, 17, 57,
     16   91, 71, 52, 38, 17, 14, 91, 43, 58, 50, 27, 29, 48,
     17   63, 66, 4, 68, 89, 53, 67, 30, 73, 16, 69, 87, 40, 31,
     18   4, 62, 98, 27, 23, 9, 70, 98, 73, 93, 38, 53, 60, 4, 23,
     19 ]
     20 
     21 r = 1
     22 row_i = 1
     23 size = 2
     24 
     25 for i in (1...vals.size) do
     26   if row_i + size == i
     27     size += 1
     28     row_i = i
     29   end
     30   right_i = i - size + 1
     31   right = (right_i < row_i) ? vals[right_i] : 0
     32   left_i = i - size
     33   left = (left_i > row_i - size) ? vals[left_i] : 0
     34   vals[i] += (right > left) ? right : left
     35 end
     36 
     37 puts vals[row_i, size].sort.last