Skip to content

Instantly share code, notes, and snippets.

@Cspeisman
Created May 6, 2014 18:59
Show Gist options
  • Save Cspeisman/fe4fdd5b77426322bd50 to your computer and use it in GitHub Desktop.
Save Cspeisman/fe4fdd5b77426322bd50 to your computer and use it in GitHub Desktop.
def make_change(num, change = {pennies: 0, nickels: 0, dimes: 0, quarters: 0})
return change if num == 0
if num < 5
num.times do |penny|
change[:pennies] += 1
num -= 1
end
make_change(num, change)
elsif num < 10
[5..num].each do |nickel|
change[:nickels] += 1
num -= 5
end
make_change(num, change)
elsif num < 25
[10..num].each do |nickel|
change[:dimes] += 1
num -= 10
end
make_change(num, change)
elsif num < 100
[25..num].each do |quarter|
change[:quarters] += 1
num -= 25
end
make_change(num, change)
end
end
p make_change(1) == {:pennies=>1, :nickels=>0, :dimes=>0, :quarters=>0}
p make_change(4) == {:pennies=>4, :nickels=>0, :dimes=>0, :quarters=>0}
p make_change(6) == {:pennies=>1, :nickels=>1, :dimes=>0, :quarters=>0}
p make_change(9) == {:pennies=>4, :nickels=>1, :dimes=>0, :quarters=>0}
p make_change(10) == {:pennies=>0, :nickels=>0, :dimes=>1, :quarters=>0}
p make_change(11) == {:pennies=>1, :nickels=>0, :dimes=>1, :quarters=>0}
p make_change(24) == {:pennies=>4, :nickels=>0, :dimes=>2, :quarters=>0}
p make_change(25) == {:pennies=>0, :nickels=>0, :dimes=>0, :quarters=>1}
p make_change(99) == {:pennies=>4, :nickels=>0, :dimes=>2, :quarters=>3}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment