Created
May 7, 2011 01:37
-
-
Save fernandobrito/960113 to your computer and use it in GitHub Desktop.
Caixa Eletrônico
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# * Problema do Coding Dojo @ UFPB - 06/05/2011 | |
# Escreva uma função que simula um caixa eletrônico, recebendo um valor a ser sacado e retornando | |
# uma string com as cédulas que o caixa deve retornar. | |
# | |
# Exemplo: saque: 167 | |
# retorno: "100:1 50:1 10:1 5:1 2:1" | |
require "test/unit" | |
def conta_cedulas(saque) | |
cedulas = [100, 50, 20, 10, 2, 1] | |
output = "" | |
saque = saque.to_i # transforma o saque em int | |
return output if saque < 0 # retorna logo a função se saque for negativo | |
for cedula in cedulas # itera sobre as cedulas | |
quantidade = saque/cedula | |
saque -= quantidade * cedula | |
output += "#{cedula}:#{quantidade} " if quantidade > 0 | |
end | |
return output.strip # strip tira espaços do começo/final | |
end | |
class TestDojo < Test::Unit::TestCase | |
def test_100 | |
assert_equal(conta_cedulas(100), "100:1") | |
end | |
def test_150 | |
assert_equal(conta_cedulas(150), "100:1 50:1") | |
end | |
def test_272 | |
assert_equal(conta_cedulas(272), "100:2 50:1 20:1 2:1") | |
end | |
def test_0 | |
assert_equal(conta_cedulas(0), "") | |
end | |
def test_negativo | |
assert_equal(conta_cedulas(-5), "") | |
end | |
def test_string | |
assert_equal(conta_cedulas("fernando"), "") | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment