Skip to content

Instantly share code, notes, and snippets.

@fernandobrito
Created May 7, 2011 01:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fernandobrito/960113 to your computer and use it in GitHub Desktop.
Save fernandobrito/960113 to your computer and use it in GitHub Desktop.
Caixa Eletrônico
# * 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