Skip to content

Commit

Permalink
Merge pull request #55 from cassiosantana/feature/6-minimum-sum
Browse files Browse the repository at this point in the history
Feature/6 minimum sum
  • Loading branch information
cassiosantana authored Jul 17, 2024
2 parents a4743ca + 306eaf0 commit 61ebdd7
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 0 deletions.
1 change: 1 addition & 0 deletions lib/algorithms_ruby.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
require "ffaker"

require_relative "algorithms_ruby/base"
require_relative "algorithms_ruby/minimum_sum"
require_relative "algorithms_ruby/binary_search"
require_relative "algorithms_ruby/bubble_sort"
require_relative "algorithms_ruby/count"
Expand Down
27 changes: 27 additions & 0 deletions lib/algorithms_ruby/minimum_sum.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# frozen_string_literal: true

# Implementation of the algorithm found in:
# https://www.geeksforgeeks.org/minimum-sum-choosing-minimum-pairs-array/

module AlgorithmsRuby
class MinimumSum < Base
def initialize(arr)
@arr = arr
super
end

def call
minimum_value * repetitions
end

private

def minimum_value
@arr.min
end

def repetitions
@arr.size - 1
end
end
end
25 changes: 25 additions & 0 deletions spec/algorithms_ruby/minimum_sum_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# frozen_string_literal: true

RSpec.describe AlgorithmsRuby::MinimumSum do
let(:array) { [2, 4, 1, 3] }
subject { described_class.new(array) }

describe ".call" do
it "returns the correct minimum sum" do
expect(subject.call).to eq(3)
end
end

describe "#minimum_value" do
it "returns the minimum value" do
expect(subject.send(:minimum_value)).to eq(1)
end
end

describe "#repetitions" do
it "returns the correct number of repetitions" do
expect(subject.send(:repetitions)).to eq(3)
end
end
end

0 comments on commit 61ebdd7

Please sign in to comment.