Você está escrevendo um programa para uma caixa registradora automática. O usuário precisa mudar com o menor número de moedas usadas. Escreva um programa que receba uma quantia (digamos US $ 1,53) e altere as denominações americanas - neste caso: 1 x uma nota de dólar, 1 x cinquenta centavos e 3 x um centavo. O programa mais curto será o vencedor. Pontos de bônus por apoiar outras moedas (ou seja, denominações do Reino Unido) e moedas incomuns (1, 2, 3 centavos?)
Você tem essas denominações americanas: 1 centavo, 5 centavos, 10 centavos, 25 centavos, 50 centavos, 1 dólar (nota ou moeda), 2 dólares, 5 dólares, 10 dólares.
Você tem estas denominações do Reino Unido: 1 centavo, 2 centavos, 5 centavos, 10 centavos, 20 centavos, 50 centavos, £ 1, £ 2, £ 5 (nota ou moeda), £ 10.
Respostas:
Windows PowerShell, 108
111117Primeira tentativa, até agora não destruída:
Notas de implementação:
Se 3 e 4 não precisam ser satisfeitos (ou seja, eu controlo o formato de entrada ;-)), o seguinte programa é suficiente (71):
fonte
Mathematica: 110 caracteres
Uso
Ou
(6 caracteres a mais) dá
Para outras denominações, basta alterar a tabela racional {10, ...., 5 / 100,1 / 100}
fonte
D: 225 caracteres
Mais legivelmente:
Lida apenas com moeda dos EUA. Toma o valor como um valor de ponto flutuante na linha de comando (deve ter o 0 inicial para valores abaixo de 1 dólar). Não aceita $ como parte do valor. Emite o número de cada tipo de nota / moeda em uma linha separada. Por exemplo, uma entrada de 1,53 resulta em:
0 20
0 10
0 5
1 1
2 25/100
0 10/100
0 5/100
3 1/100
fonte
Mathematica, 51 bytes
entrada
resultado
Mathematica, 82 bytes - COM BÔNUS--
Entrada
resultado
fonte
Javascript,
8483 bytesUsa um algoritmo ganancioso.
fonte
APL (Dyalog) , 19 bytes
Solicita a quantidade desejada e, em seguida, as denominações expressas na menor unidade (centavos / centavos).
Experimente online!
⎕CY'dfns'
C o p y odfns
espaço de trabalho⎕ stamps⎕
peça entradas e use como argumentos para astamps
funçãofonte