diff options
| author | Mariano Spadaccini <spadacciniweb@gmail.com> | 2025-09-19 09:13:04 +0200 |
|---|---|---|
| committer | Mariano Spadaccini <spadacciniweb@gmail.com> | 2025-09-19 09:13:04 +0200 |
| commit | 1bbbc56e6a0dc51d8d37d8e7d9c2b24b3dfb3294 (patch) | |
| tree | a66a2922a8b970ce4ae71ec6fc6cef00712d29ab | |
| parent | fb4be7a8e543a1b451974a4746d00d227ead1bc2 (diff) | |
| download | perlweeklychallenge-club-1bbbc56e6a0dc51d8d37d8e7d9c2b24b3dfb3294.tar.gz perlweeklychallenge-club-1bbbc56e6a0dc51d8d37d8e7d9c2b24b3dfb3294.tar.bz2 perlweeklychallenge-club-1bbbc56e6a0dc51d8d37d8e7d9c2b24b3dfb3294.zip | |
PWC 339: add ch-2 in Ruby
| -rw-r--r-- | challenge-339/spadacciniweb/ruby/ch-2.rb | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/challenge-339/spadacciniweb/ruby/ch-2.rb b/challenge-339/spadacciniweb/ruby/ch-2.rb new file mode 100644 index 0000000000..ace295529a --- /dev/null +++ b/challenge-339/spadacciniweb/ruby/ch-2.rb @@ -0,0 +1,91 @@ +# Task 2: Peak Point +# Submitted by: Mohammad Sajid Anwar +# You are given an array of altitude gain. +# Write a script to find the peak point gained. +# +# Example 1 +# Input: @gain = (-5, 1, 5, -9, 2) +# Output: 1 +# +# start: 0 +# 1st change: 0 + (-5) = -5 +# 2nd change: -5 + 1 = -4 +# 3rd change: -4 + 5 = 1 +# 4th change: 1 + (-9) = -8 +# 5th change: -8 + 2 = -6 +# +# max(0, -5, -4, 1, -8, -6) = 1 +# +# Example 2 +# Input: @gain = (10, 10, 10, -25) +# Output: 30 +# +# start: 0 +# 1st change: 0 + 10 = 10 +# 2nd change: 10 + 10 = 20 +# 3rd change: 20 + 10 = 30 +# 4th change: 30 + (-25) = 5 +# +# max(0, 10, 20, 30, 5) = 30 +# +# Example 3 +# Input: @gain = (3, -4, 2, 5, -6, 1) +# Output: 6 +# +# start: 0 +# 1st change: 0 + 3 = 3 +# 2nd change: 3 + (-4) = -1 +# 3rd change: -1 + 2 = 1 +# 4th change: 1 + 5 = 6 +# 5th change: 6 + (-6) = 0 +# 6th change: 0 + 1 = 1 +# +# max(0, 3, -1, 1, 6, 0, 1) = 6 +# +# Example 4 +# Input: @gain = (-1, -2, -3, -4) +# Output: 0 +# +# start: 0 +# 1st change: 0 + (-1) = -1 +# 2nd change: -1 + (-2) = -3 +# 3rd change: -3 + (-3) = -6 +# 4th change: -6 + (-4) = -10 +# +# max(0, -1, -3, -6, -10) = 0 +# +# Example 5 +# Input: @gain = (-10, 15, 5) +# Output: 10 +# +# start: 0 +# 1st change: 0 + (-10) = -10 +# 2nd change: -10 + 15 = 5 +# 3rd change: 5 + 5 = 10 +# +# max(0, -10, 5, 10) = 10 + +def get_max_peak(gains) + peaks = [0] + gains.each { |x| + peaks.push peaks[-1] + x + } +# } + printf "(%s) -> %d\n", gains.join(","), + peaks.max +end + +gains = [-5, 1, 5, -9, 2] +get_max_peak(gains) + +gains = [10, 10, 10, -25] +get_max_peak(gains) + +gains = [3, -4, 2, 5, -6, 1] +get_max_peak(gains) + +gains = [-1, -2, -3, -4] +get_max_peak(gains) + +gains = [-10, 15, 5] +get_max_peak(gains) |
