Troco

Troco

Médio

Introdução

Na vila mística de Coinholt, você está atrás do balcão da sua padaria, arrumando uma fornada fresca de doces. A porta abre com um rangido, e entra Denara, uma mercadora habilidosa, com bom olho para mercadorias de qualidade. Depois de uma refeição rápida, ela desliza uma moeda reluzente pelo balcão, que vale 100 unidades.

Você sorri, pega a moeda e dá uma olhada no custo total da refeição: 88 unidades. Ou seja, você precisa devolver 12 unidades de troco.

Denara estende a mão, na expectativa. "Me dê só o menor número de moedas", ela diz com um sorriso. "Minha bolsa já está cheia, e não quero correr o risco de perdê-las pelo caminho."

Você sabe que tem algumas opções. "Temos Lumis (vale 10 unidades), Viras (vale 5 unidades) e Zenth (vale 2 unidades) disponíveis para troco."

Você calcula rapidamente as possibilidades de cabeça:

  • uma Lumis (1 × 10 unidades) + uma Zenth (1 × 2 unidades) = 2 moedas no total
  • duas Viras (2 × 5 unidades) + uma Zenth (1 × 2 unidades) = 3 moedas no total
  • seis Zenth (6 × 2 unidades) = 6 moedas no total

"A melhor escolha são duas moedas: uma Lumis e uma Zenth", você diz, entregando o troco a ela.

Denara sorri, claramente impressionada. "Como sempre, você acertou."

Instruções

Determine o menor número de moedas a serem dadas a um cliente, de modo que a soma dos valores delas seja igual ao valor correto do troco.

Exemplos

  • Uma quantia de 15 com os valores de moedas disponíveis [1, 5, 10, 25, 100] deve retornar uma moeda de valor 5 e uma moeda de valor 10, ou [5, 10].
  • Uma quantia de 40 com os valores de moedas disponíveis [1, 5, 10, 25, 100] deve retornar uma moeda de valor 5, uma moeda de valor 10 e uma moeda de valor 25, ou [5, 10, 25].
Editar via GitHub O link abre em uma nova janela ou aba
TypeScript Exercism

Tudo pronto para começar Troco?

Crie sua conta no Exercism para aprender e dominar TypeScript com 108 exercícios e mentoria humana de verdade, tudo de graça.