Dado um número inteiro positivo n, produza o n -ésimo número da sequência euro-iginal.
Cálculo da sequência
Esta sequência é igual a OEIS A242491 .
Um número faz parte da referida sequência se o número puder ser formado usando tantas moedas ou notas de euro diferentes, mas apenas uma de cada . Observe que você não precisa considerar centavos.
Exemplo:
6
estaria na sequência, pois pode consistir em uma moeda de 1 euro e uma nota de 5 euros.
4
NÃO estaria na sequência, pois não pode ser formado com os requisitos fornecidos.
Para dar a todos uma visão geral, aqui está uma lista com valores em euro que você deve considerar:
1 €, 2 €, 5 €, 10 €, 20 €, 50 €, 100 €, 200 €, 500 €
Observe que essa sequência varia apenas de 0 (sim, 0 está incluído!) A 888.
Aqui estão os 15 primeiros elementos dessa sequência:
0, 1, 2, 3, 5, 6, 7, 8, 10, 11, 12, 13, 15, 16, 17, ...
Casos de teste
Entrada -> Saída
2 -> 1
6 -> 6
21 -> 25
33 -> 50
a(1)=1
como a tabela oeis ?N<=512
?0
paran=0
tudo bem.0->0; 1->1; 5->6; 20->25; 32->50; 511->888
invés de1->0; 2->1; 6->6; 21->25; 33->50; 512->888
.Respostas:
Geléia , 7 bytes
Experimente online!
Como funciona
fonte
Python 2 , 32 bytes
Experimente online!
Python 2 , 34 bytes
Experimente online!
fonte
Casca ,
8 75 bytesExperimente online! Edit: -3 bytes graças ao Zgarb!
Ouvi dizer que está planejado mudar
İ€
para a sequência finita[0.01,0.02,0.05,0.1,0.2,0.5,1,2,5,10,...,500]
no futuro. Uma vez implementado, o código a seguir deve funcionar com uma contagem de bytes 7:onde
↓6
descarta os seis primeiros elementos da sequência. Experimente online!fonte
0
s à saída?Σ!Ṗ↑9İ€
deve salvar um byte.İ€
ter sido alterada. Que está actualmente a retornar2500
em vez de25
é meramente uma coincidência.↑9
, uma vez que o texto do desafio não menciona o que deve acontecer para entradas para além 512.Perl 5 , 29 bytes
Código de 28 bytes + 1 para
-p
.Usa indexação baseada em 0.
Experimente online!
fonte
sprintf"%o",$_-1
, por causa da sequência indexada de 1, por exemplo2 -> 1
, embora a sequência do OEIS comece com 1-1
OP até esclarecido!Gelatina , 11 bytes
Experimente online!
Muito obrigado a @Erik the Outgolfer por muita ajuda no chat!
Explicação
fonte
Mathematica, 47 bytes
Mathematica, 48 bytes
-6 bytes de Martin Ender
fonte
Join[x={1,2,5},10x,100x]
eSubsets@
.Java 8,
2826 bytesIndexado em 0:
Porta da resposta Python 2 do @xnor (que costumava ser excluída, daí a resposta 1 indexada original abaixo).
Experimente aqui.
Resposta antiga indexada em 1 ( 28 bytes ):
Porto da resposta Python 2 de @Tfeld antes de ele fazer sua última edição . Em vez de usar
~-
várias vezes, ele--n
diminuin
em 1 logo após entrar na função lambda.Experimente aqui.
fonte
05AB1E , 7 bytes
Indexado a 0.
Resposta do porto da geléia do Sr. Xcoder
Experimente online!
Explicação
fonte
8в4‰ε5β}J
(indexado 0)8в4‰J5öJ
8 por truque de Dennis. Seu foi melhor adequado para 05AB1E na verdade :)Python 2 ,
403836 bytesInspirado na resposta do xnor , mas usa a indexação 1.
Experimente online!
Python 2 ,
786562615856 bytesExperimente online!
fonte
a(1)=1
é permitido mudar a indexação .Gelatina , 15 bytes
Indexado a 0.
Experimente online!
Explicação
Isso é baseado na solução Python da xnor , onde o algoritmo é n + n / 4 + n / 32 * 10 + n / 256 * 100 .
Como o primeiro n não é modificado, é o mesmo que:
Como 4, 32 e 256 são todos poderes de dois, eles podem ser traduzidos em turnos de bits.
A golfiness não se traduz bem em Python, mas transformar as listas em strings Jelly dos índices da página de códigos reduz a contagem de bytes de Jelly.
Gelatina , 24 bytes
Experimente online!
fonte
€
em seu código. :) Mas -1 porque esta é a primeira vez que uma resposta Jelly é mais longa que minha resposta Java. XD Shame em você (e gl & hf golfe ainda mais). ;)Oitava , 59 bytes
Experimente online!
Explicação
O código cria a sequência completa e depois é indexado nela.
Em primeiro lugar, as expressões binárias dos números
0
,1
, ...511
são gerados como uma matriz de 512 × 9:(a
-48
parte é necessária porque o resultadodec2bin
é de caracteres, não de números). Isto dáEm seguida, o produto Kronecker de
[1 2 5]
e[1 10 100]
é calculadoe transposto
que fornece os nove valores possíveis do euro como um vetor 9 × 1:
Multiplicando a matriz a matriz e o vetor acima
fornece um vetor 512 × 1 contendo todos os números possíveis na sequência, com repetições e sem classificação:
Desduplicação e classificação
fornece a sequência completa:
Finalmente, a entrada é usada para indexar nessa sequência
para produzir a saída.
fonte
Ruby ,
2827 bytesExperimente online!
Explicação
Seqüência octal de saída, substitua os dígitos 4..7 por 5..8
fonte
Utilitários Bash + GNU, 20
Lê um índice indexado a zero a partir de STDIN.
Experimente online .
fonte
05AB1E , 20 bytes
Experimente online!
Indexado em 1, usando a fórmula de
[(n%3)^2 + 1]*10^floor(n/3)
para gerar os 10 primeiros termos e, em seguida, usando o powerset para calcular todas as combinações possíveis ... Então eu ordeno e puxoa[b]
.Veja em ação abaixo:
fonte
JavaScript (ES6), 34 bytes
Ou 32 bytes usando a indexação 0 correta:
fonte
n=1
dar0
?Gelatina , 20 bytes
Experimente online!
Sei que isso é mais longo do que a resposta existente, mas acho que essa abordagem pode ser praticada a partir daqui: P
-2 bytes graças a Erik the Outgolfer
fonte
1,10,ȷ2
->“¢½d‘
Retina , 42 bytes
Experimente online! O link inclui casos de teste. Indexado a 0. Explicação:
Converta de decimal para unário, com um
;
sufixo.Converta em octal, mas ainda usando a representação unária dos dígitos
;
após cada valor unário.Adicione 1 aos valores 4-7.
Converta cada valor mais seu sufixo em decimal.
fonte
Pitão , 12 bytes
Usa a bruxaria de Dennis .
Experimente aqui.
Pitão ,
16 1513 bytesVerifique todos os casos de teste.
Obrigado a Erik, o Outgofer, por algumas idéias.
fonte
C , 67 bytes
Uma porta direta da resposta JavaScript de Neil , mas achei que isso deveria ser adicionado para ser completo.
Testado no GCC versão 6.3.0. Ele lançará alguns avisos, mas será compilado de qualquer maneira.
fonte