Skip to content

Instantly share code, notes, and snippets.

@pryanik991
Created February 13, 2019 09:53
Show Gist options
  • Save pryanik991/e32ab64d260c2152eab1098b1794d55a to your computer and use it in GitHub Desktop.
Save pryanik991/e32ab64d260c2152eab1098b1794d55a to your computer and use it in GitHub Desktop.
#! /usr/bin/env ruby
def banknotes_calculator(banknotes, requested_sum)
sorted_values = banknotes.keys.sort.reverse
total_sum = banknotes.inject(0) {|total_sum, banknote| total_sum += banknote[0] * banknote[1]}
result = Hash[banknotes.keys.map {|value| [value, 0]}]
return if requested_sum > total_sum
while requested_sum > 0
current_value = sorted_values.first
break unless current_value
if banknotes[current_value] > 0 && current_value <= requested_sum
value_diff = current_value - requested_sum
if value_diff <= 0
requested_sum -= current_value
banknotes[current_value] -= 1
result[current_value] += 1
else
sorted_values.shift
end
else
sorted_values.shift
end
end
result
end
p change_calculator({100 => 3, 500 => 5}, 230)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment