Eu sei, o título racha você
Dada uma quantidade de dinheiro gerada, o menor número de moedas compõe essa quantidade
Exemplos
0.1
1 dime
0.01
1 penny
0.28
1 quarter 3 penny
0.56
2 quarter 1 nickel 1 penny
1.43
5 quarter 1 dime 1 nickel 3 penny
Spec
- 100 centavos em um dólar.
- Os valores de cada tipo de moeda são:
penny
1 cêntimonickel
5 centavosdime
10 centavosquarter
25 centavos
Built-ins que trivializam essa tarefa não são permitidos.
I / O
Entrada é um decimal que representa o valor em dólar do total
- Não há necessidade de pluralizar
- Ordem:
quarter
->penny
- A saída deve ser
<#_of_coins> <coin type>
- Operadores:
,
ou,
ou
O único espaço em branco à direita permitido é uma nova linha / espaço à direita.
Se houver zero de um tipo de moeda, esse tipo de moeda não deve ser mostrado . Por exemplo 0.25
-> 1 quarter
não 1 quarter 0 dime 0 nickel 0 penny
1.43
, que é maior que1
(less than 1)
parte não deveria estar lá. Esqueceu-se de remover o na caixa de areia eu acho2 quarter(2 spaces)1 nickel 1 penny
?13.00
pode ser uma entrada possível, mas a entrada nunca será13
. Eu sempre terei um decimalRespostas:
CJam, 60
Esse script parece ter muito espaço para melhorias, mas é mais curto do que qualquer outro até agora. Isso faz uso do comando "md" incorporado, que retorna o resultado inteiro de uma divisão e o restante. Faz o seguinte:
Experimente aqui
versões anteriores:
fonte
JavaScript ES6, 107 bytes
Matemática simples.
fonte
|0
depois don%5
?Python 2, 120 bytes
Apenas por segurança, mudou para algo que definitivamente funciona para corrigir o comentário de @ Ogaday, por enquanto, pelo menos por enquanto. Não tenho certeza se preciso ou não do
int()
mesmo, mas estou tendo problemas para me convencer de que não preciso .é um byte extra desativado, mas imprime um extra
L
para entradas grandes (embora esse código não funcione para entradas extremamente grandes de qualquer maneira, devido à precisão de flutuação).fonte
a=40/a+5^12
[x^k for x in [10, 5, 1]]
e[k/y for y in [25, 10, 5]]
para diferentesk
, depois vi que duas listas foram deslocadas por 5. Provavelmente abaixo do ideal, mas não tive tempo para força bruta.10.03
e10.04
. Tem a ver com a representação dos carros alegóricos do Python e como os arredonda para ints. Tente"print %d"%(10.03*100)
.n=int(''.join(raw_input().split(".")))
pode funcionar, mas é bem detalhado.dc, 104
Novas linhas adicionadas para "legibilidade" :
fonte
Retina , 97
Obrigado (como sempre) a @randomra - salvou 1 byte.
Assume que a entrada está no formato
xxx.yy
ouxxx.y
.Experimente online.
fonte
$&
é o mesmo que$0
para que você possa salvar um byte em$0.0
pelo$&0
.Vitsy,
11010097 bytesSim, espere, ainda estou metodizando isso.
Explicação no modo detalhado em breve:
Experimente online!
fonte
retrauq
quase parece uma palavra ...Java 8 lambda, 165 bytes
Espera entrada
y
como dupla ou flutuante.Muito ternário. ; -;
fonte
;-;
O que é isso? Isso é um wampa?JavaScript ES6,
202200 bytesEspero que isso possa ser jogado golfe ...
Código não destruído:
fonte
LabVIEW, 62 Primitivas do LabVIEW
Criei 2 matrizes para os nomes e valores e passe por eles de cima (matriz de índice com i) usando um operador de módulo (a coisa R IQ). As moedas restantes são passadas para o registro de turno.
Se o valor for maior que 0, converto o número em string e concatenar a string transmitida, o número e o nome da moeda e colocá-lo novamente no registrador de deslocamento.
Eu percebi que meu gif não mostra o caso falso, mas não há nada para ver, apenas passa pela string que entrou.
fonte
Japonês, 77 bytes
Felizmente, todos os quatro nomes de moedas são compactáveis. O
¿
deve ser o byte literal 0x81. Teste online!fonte
73 quarter 1 nickel 2 penny
. 73 * .25 + 1 * .05 + 2 * .01 = 18,32 em vez de 18,33.C,
147144142140 bytesSem jogar com testes:
fonte
char*[]
porchar**
,int a[]
porint*a
e colocarm%=a[i++]
a última parte do loop for. Deve salvar 4 bytes. Ainda não testei, então tente cada um deles.m%=a[i++]
pouco, porém, obrigado.if(m/a[i])
porm/a[i]&&
para salvar mais 2 bytes."quarter\0dime\0nickel\0penny"
no printf. Cada \ 0 termina a string, economizando 1 caractere cada\0
causa falha no programa. Eu não tenho certeza de como a iteração deve funcionar sobre essa string de qualquer maneira.MATL , 82
106107Experimente no MATL Online!
fonte
JavaScript,
156145144 bytesNão corresponde à resposta da fórmula da ETHproduction, mas de qualquer maneira ...
Esta é uma das minhas primeiras partidas de golfe, então qualquer melhoria é muito apreciada! Eu já roubei o "xor trunc" da ETH - desculpe cara, foi muito inteligente :-)
Mais legível:
Nota: Durante o teste, percebi que o JavaScript (pelo menos na minha máquina?) Se divide
1.13 / 0.01
em1.12999...
, fazendo com que meus (e provavelmente todos os outros envios de JS) não funcionem 100% corretamente ...fonte
Perl 5 -
128124 bytesEu acho que isso pode ser reescrito para ser muito mais curto, mas eu realmente não consigo vê-lo.
Edição: Apenas um truque de matemática para salvar 4 caracteres.
fonte
Perl 6 , 96 bytes
Uso:
fonte
Python 2,
167161 bytesAtualização 1: Roubei a ideia do Sp3000 de usar input () e tornar meu código um script em vez de uma função.
fonte
C, 162 bytes
Infelizmente, não funciona sem o
#include
.Ungolfed
fonte
Lua 5.3,
141139132131 131 bytesMais ou menos com base na resposta Python do Sp3000, mas com minha própria fórmula mágica.
Editar - melhorou a
a
fórmula. Anteriormente eraa=a*3%13~#s%4
.Editar 2 - anteriormente eu estava usando
math.ceil
para arredondar e converter para número inteiro. Agora estou reutilizando//
para arredondar e adicionando~~
para converter em número inteiro.Editar 3 - raspou um personagem alterando o padrão de
"%w+ "
para".- "
.fonte
K (oK) ,
9578 bytesSolução:
Experimente online!
Exemplo:
Explicação:
Module a entrada por cada moeda e divida as moedas pelo resultado.
Alimente cada resultado, juntamente com o nome da moeda, em uma função, retornando o valor da sequência de ambos se o número de moedas for diferente de zero.
Achate tudo e junte-se ao espaço em branco.
fonte
Kotlin , 147 bytes
Embelezado
Teste
TIO
TryItOnline
fonte