Uma sequência euro-iginal


14

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

Qual é a maior entrada possível? Podemos ter alguns casos de teste maiores?
Xnor

3
Podemos indexar a(1)=1como a tabela oeis ?
Xnor

6
Podemos sintonizar N<=512?
Stewie Griffin

@xnor Se ele ainda retorna 0para n=0tudo bem.
Ian H.

Podemos gerar os resultados indexados em 0 em vez de indexados em 1? Então, ao 0->0; 1->1; 5->6; 20->25; 32->50; 511->888invés de 1->0; 2->1; 6->6; 21->25; 33->50; 512->888.
Kevin Cruijssen

Respostas:


12

Geléia , 7 bytes

b8d4ḅ5Ḍ

Experimente online!

Como funciona

b8d4ḅ5Ḍ  Main link. Argument: n (integer)

b8       Convert n from integer to base 8.
  d4     Divmod each base-8 digit by 4, mapping the digit d to [d / 4, d % 4].
    ḅ5   Convert the quotient-remainder pairs from base 5 to integer, mapping
         [d / 4, d % 4] to (d / 4 * 5 + d % 4).
         The last two steps establish the following mapping for octal digits.
             0 -> [0, 0] -> 0
             1 -> [0, 1] -> 1
             2 -> [0, 2] -> 2
             3 -> [0, 3] -> 3
             4 -> [1, 0] -> 5
             5 -> [1, 1] -> 6
             6 -> [1, 2] -> 7
             7 -> [1, 3] -> 8
      Ḍ  Convert the resulting array of digits from decimal to integer.


8

Casca , 8 7 5 bytes

Σ!Ṗİ€

Experimente online! Edit: -3 bytes graças ao Zgarb!

   ݀   build-in infinite sequence [1,2,5,10,20,50,100,...]
  Ṗ     power set [[],[1],[2],[1,2],[5],[1,5],[2,5],[1,2,5],...]
 !      index into the list with given input, e.g. 4 yields [1,2]
Σ       take the sum of that list

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:

Σ!Ṗ↓6İ€

onde ↓6descarta os seis primeiros elementos da sequência. Experimente online!


Pretende-se que o programa adicione 2 0s à saída?
Ian H.

Σ!Ṗ↑9İ€deve salvar um byte.
Zgarb

@IanH. O primeiro programa produz a saída correta. O segundo link do TIO funcionará somente após a implementação de İ€ter sido alterada. Que está actualmente a retornar 2500em vez de 25é meramente uma coincidência.
Laikoni 5/10

@ Zgarb Muito obrigado!
Laikoni

1
Eu acho que você também pode remover ↑9, uma vez que o texto do desafio não menciona o que deve acontecer para entradas para além 512.
Zgarb

6

Perl 5 , 29 bytes

Código de 28 bytes + 1 para -p.

Usa indexação baseada em 0.

$_=sprintf"%o",$_;y/4-7/5-8/

Experimente online!


deve ser sprintf"%o",$_-1, por causa da sequência indexada de 1, por exemplo 2 -> 1, embora a sequência do OEIS comece com 1
Nahuel Fouilleul

Isso usa a indexação 0, conforme permitido pela pergunta (ou pelo menos, comentários dos OPs sob a pergunta). Eu tinha o -1OP até esclarecido!
Dom Hastings

5

Gelatina , 11 bytes

0Df9,4Ṇ$$#Ṫ

Experimente online!

Muito obrigado a @Erik the Outgolfer por muita ajuda no chat!

Explicação

0Df9,4Ṇ $$ # Ṫ - Link monádico.

0 # - Colete as primeiras N partidas, começando em 0.
 D - dígitos.
  f9,4 - Filtro - mantenha os dígitos 9 ou 4. Rende [] quando não houver nenhum.
      Log - NÃO lógico. [] -> 1 (verdade), lista não vazia -> 0 (falsidade).
          Pop - Pop e retorne o último elemento.

3

Mathematica, 47 bytes

(FromDigits/@0~Range~8~Drop~{5}~Tuples~3)[[#]]&

Mathematica, 48 bytes

Sort[Tr/@Subsets@Join[x={1,2,5},10x,100x]][[#]]&   

-6 bytes de Martin Ender


1
Join[x={1,2,5},10x,100x]e Subsets@.
Martin Ender


3

05AB1E , 7 bytes

Indexado a 0.

Resposta do porto da geléia do Sr. Xcoder

µN7nÃg_

Experimente online!

Explicação

µ          # loop over increasing N until input matches are found
      _    # the logical negation of
     g     # the length of
 N         # N
  7nà     # with only 4s and 9s kept

Bom, parece que 05AB1E é a melhor ferramenta para o meu algoritmo :-). A abordagem aritmética de Dennis forneceria 9 bytes (talvez jogáveis): 8в4‰ε5β}J(indexado 0)
Mr. Xcoder

@ Mr.Xcoder: Eu tive 8в4‰J5öJ8 por truque de Dennis. Seu foi melhor adequado para 05AB1E na verdade :)
Emigna

2

Python 2 , 40 38 36 bytes

Inspirado na resposta do xnor , mas usa a indexação 1.

lambda n:~-n*5/4+~-n/32*10+n/257*100

Experimente online!

Python 2 , 78 65 62 61 58 56 bytes

lambda i,n=0:f(i+~-('4'in`n`or'9'in`n`),n+1)if i else~-n

Experimente online!



Existe uma razão @xnor eliminado sua resposta, porque parece completamente válido para mim ..: S
Kevin Cruijssen

1
@KevinCruijssen Anulei a exclusão agora que o solicitante respondeu que a(1)=1é permitido mudar a indexação .
Xnor

2

Gelatina , 15 bytes

Indexado a 0.

滓£¦®‘ד¢½d‘S+

Experimente online!

Explicação

Isso é baseado na solução Python da xnor , onde o algoritmo é n + n / 4 + n / 32 * 10 + n / 256 * 100 .

lambda n: sum(i * j for i, j in zip([n / i for i in [1, 4, 32, 256]], [1, 1, 10, 100]]))

Como o primeiro n não é modificado, é o mesmo que:

lambda n: sum(i * j for i, j in zip([n / i for i in [4, 32, 256]], [1, 10, 100]])) + n

Como 4, 32 e 256 são todos poderes de dois, eles podem ser traduzidos em turnos de bits.

lambda n: sum(i * j for i, j in zip([n >> i for i in [2, 5, 8]], [1, 10, 100]])) + n

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.

lambda n: sum(i * j for i, j in zip([n >> i for i in map(jelly_codepage.index, '£¦®')], map(jelly_codepage.index, '¢½d'))) + n

Gelatina , 24 bytes

“¡¿ɼcÞµ³Ṡf2ż’bȷ3ŒPS€Ṣ
ị¢

Experimente online!


1
+1 por ter 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). ;)
Kevin Cruijssen 05/10

1
@KevinCruijssen Isso vai causar estragos nas classificações do Elo .
Xnor

@KevinCrujissen Um pouco melhor agora? : P
totallyhuman 5/17

1
@icrieverytim Você cometeu um erro de digitação em meu nome, então não recebi a convocação. Mas sim, muito melhor. :) +1 de mim.
Kevin Cruijssen

2

Oitava , 59 bytes

@(n)unique((dec2bin(0:511)-48)*kron([1 2 5],10.^(0:2))')(n)

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, ... 511são gerados como uma matriz de 512 × 9:

dec2bin(0:511)-48

(a -48parte é necessária porque o resultado dec2biné de caracteres, não de números). Isto dá

0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1
...
1 1 1 1 1 1 1 1 1

Em seguida, o produto Kronecker de [1 2 5]e [1 10 100]é calculado

kron([1 2 5],10.^(0:2))

e transposto

'

que fornece os nove valores possíveis do euro como um vetor 9 × 1:

1
2
5
10
20
50
100
200
500

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:

  0
500
 50
...
388
888

Desduplicação e classificação

unique(...)

fornece a sequência completa:

  0
  1
  2
...
887
888

Finalmente, a entrada é usada para indexar nessa sequência

(n)

para produzir a saída.


2

Ruby , 28 27 bytes

->x{("%o"%x).tr"4-7","5-8"}

Experimente online!

Explicação

Seqüência octal de saída, substitua os dígitos 4..7 por 5..8


Eu acho que você pode remover o espaço após .tr para -1
Snack


1

05AB1E , 20 bytes

9LD3%n>s3/óTsm*æO{sè

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 puxo a[b].


Veja em ação abaixo:

Full program: 9LD3%n>s3/óTsm*æO{sè
current >> 9  ||  stack: []
current >> L  ||  stack: ['9']
current >> D  ||  stack: [[1, 2, 3, 4, 5, 6, 7, 8, 9]]
current >> 3  ||  stack: [[1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9]]
current >> %  ||  stack: [[1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], '3']
current >> n  ||  stack: [[1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 0, 1, 2, 0, 1, 2, 0]]
current >> >  ||  stack: [[1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 4, 0, 1, 4, 0, 1, 4, 0]]
current >> s  ||  stack: [[1, 2, 3, 4, 5, 6, 7, 8, 9], [2, 5, 1, 2, 5, 1, 2, 5, 1]]
current >> 3  ||  stack: [[2, 5, 1, 2, 5, 1, 2, 5, 1], [1, 2, 3, 4, 5, 6, 7, 8, 9]]
current >> /  ||  stack: [[2, 5, 1, 2, 5, 1, 2, 5, 1], [1, 2, 3, 4, 5, 6, 7, 8, 9], '3']
current >> ó  ||  stack: [[2, 5, 1, 2, 5, 1, 2, 5, 1], [0.3333333333333333, 0.6666666666666666, 1.0, 1.3333333333333333, 1.6666666666666667, 2.0, 2.3333333333333335, 2.6666666666666665, 3.0]]
current >> T  ||  stack: [[2, 5, 1, 2, 5, 1, 2, 5, 1], [0, 0, 0, 1, 1, 1, 2, 2, 2]]
current >> s  ||  stack: [[2, 5, 1, 2, 5, 1, 2, 5, 1], [0, 0, 0, 1, 1, 1, 2, 2, 2], 10]
current >> m  ||  stack: [[2, 5, 1, 2, 5, 1, 2, 5, 1], 10, [0, 0, 0, 1, 1, 1, 2, 2, 2]]
current >> *  ||  stack: [[2, 5, 1, 2, 5, 1, 2, 5, 1], [1, 1, 1, 10, 10, 10, 100, 100, 100]]
current >> æ  ||  stack: [[2, 5, 1, 20, 50, 10, 200, 500, 100]]
current >> O  ||  stack: < OMITTED, THE RESULT OF POWERSET IS HUGE >
current >> {  ||  stack: [[0, 2, 5, 1, 20, 50, 10, 200, 500, 100, 7, 3, 22, 52, 12, 202, 502, 102, 6, 25, 55, 15, 205, 505, 105, 21, 51, 11, 201, 501, 101, 70, 30, 220, 520, 120, 60, 250, 550, 150, 210, 510, 110, 700, 300, 600, 8, 27, 57, 17, 207, 507, 107, 23, 53, 13, 203, 503, 103, 72, 32, 222, 522, 122, 62, 252, 552, 152, 212, 512, 112, 702, 302, 602, 26, 56, 16, 206, 506, 106, 75, 35, 225, 525, 125, 65, 255, 555, 155, 215, 515, 115, 705, 305, 605, 71, 31, 221, 521, 121, 61, 251, 551, 151, 211, 511, 111, 701, 301, 601, 80, 270, 570, 170, 230, 530, 130, 720, 320, 620, 260, 560, 160, 750, 350, 650, 710, 310, 610, 800, 28, 58, 18, 208, 508, 108, 77, 37, 227, 527, 127, 67, 257, 557, 157, 217, 517, 117, 707, 307, 607, 73, 33, 223, 523, 123, 63, 253, 553, 153, 213, 513, 113, 703, 303, 603, 82, 272, 572, 172, 232, 532, 132, 722, 322, 622, 262, 562, 162, 752, 352, 652, 712, 312, 612, 802, 76, 36, 226, 526, 126, 66, 256, 556, 156, 216, 516, 116, 706, 306, 606, 85, 275, 575, 175, 235, 535, 135, 725, 325, 625, 265, 565, 165, 755, 355, 655, 715, 315, 615, 805, 81, 271, 571, 171, 231, 531, 131, 721, 321, 621, 261, 561, 161, 751, 351, 651, 711, 311, 611, 801, 280, 580, 180, 770, 370, 670, 730, 330, 630, 820, 760, 360, 660, 850, 810, 78, 38, 228, 528, 128, 68, 258, 558, 158, 218, 518, 118, 708, 308, 608, 87, 277, 577, 177, 237, 537, 137, 727, 327, 627, 267, 567, 167, 757, 357, 657, 717, 317, 617, 807, 83, 273, 573, 173, 233, 533, 133, 723, 323, 623, 263, 563, 163, 753, 353, 653, 713, 313, 613, 803, 282, 582, 182, 772, 372, 672, 732, 332, 632, 822, 762, 362, 662, 852, 812, 86, 276, 576, 176, 236, 536, 136, 726, 326, 626, 266, 566, 166, 756, 356, 656, 716, 316, 616, 806, 285, 585, 185, 775, 375, 675, 735, 335, 635, 825, 765, 365, 665, 855, 815, 281, 581, 181, 771, 371, 671, 731, 331, 631, 821, 761, 361, 661, 851, 811, 780, 380, 680, 870, 830, 860, 88, 278, 578, 178, 238, 538, 138, 728, 328, 628, 268, 568, 168, 758, 358, 658, 718, 318, 618, 808, 287, 587, 187, 777, 377, 677, 737, 337, 637, 827, 767, 367, 667, 857, 817, 283, 583, 183, 773, 373, 673, 733, 333, 633, 823, 763, 363, 663, 853, 813, 782, 382, 682, 872, 832, 862, 286, 586, 186, 776, 376, 676, 736, 336, 636, 826, 766, 366, 666, 856, 816, 785, 385, 685, 875, 835, 865, 781, 381, 681, 871, 831, 861, 880, 288, 588, 188, 778, 378, 678, 738, 338, 638, 828, 768, 368, 668, 858, 818, 787, 387, 687, 877, 837, 867, 783, 383, 683, 873, 833, 863, 882, 786, 386, 686, 876, 836, 866, 885, 881, 788, 388, 688, 878, 838, 868, 887, 883, 886, 888]]
current >> s  ||  stack: [[0, 1, 2, 3, 5, 6, 7, 8, 10, 11, 12, 13, 15, 16, 17, 18, 20, 21, 22, 23, 25, 26, 27, 28, 30, 31, 32, 33, 35, 36, 37, 38, 50, 51, 52, 53, 55, 56, 57, 58, 60, 61, 62, 63, 65, 66, 67, 68, 70, 71, 72, 73, 75, 76, 77, 78, 80, 81, 82, 83, 85, 86, 87, 88, 100, 101, 102, 103, 105, 106, 107, 108, 110, 111, 112, 113, 115, 116, 117, 118, 120, 121, 122, 123, 125, 126, 127, 128, 130, 131, 132, 133, 135, 136, 137, 138, 150, 151, 152, 153, 155, 156, 157, 158, 160, 161, 162, 163, 165, 166, 167, 168, 170, 171, 172, 173, 175, 176, 177, 178, 180, 181, 182, 183, 185, 186, 187, 188, 200, 201, 202, 203, 205, 206, 207, 208, 210, 211, 212, 213, 215, 216, 217, 218, 220, 221, 222, 223, 225, 226, 227, 228, 230, 231, 232, 233, 235, 236, 237, 238, 250, 251, 252, 253, 255, 256, 257, 258, 260, 261, 262, 263, 265, 266, 267, 268, 270, 271, 272, 273, 275, 276, 277, 278, 280, 281, 282, 283, 285, 286, 287, 288, 300, 301, 302, 303, 305, 306, 307, 308, 310, 311, 312, 313, 315, 316, 317, 318, 320, 321, 322, 323, 325, 326, 327, 328, 330, 331, 332, 333, 335, 336, 337, 338, 350, 351, 352, 353, 355, 356, 357, 358, 360, 361, 362, 363, 365, 366, 367, 368, 370, 371, 372, 373, 375, 376, 377, 378, 380, 381, 382, 383, 385, 386, 387, 388, 500, 501, 502, 503, 505, 506, 507, 508, 510, 511, 512, 513, 515, 516, 517, 518, 520, 521, 522, 523, 525, 526, 527, 528, 530, 531, 532, 533, 535, 536, 537, 538, 550, 551, 552, 553, 555, 556, 557, 558, 560, 561, 562, 563, 565, 566, 567, 568, 570, 571, 572, 573, 575, 576, 577, 578, 580, 581, 582, 583, 585, 586, 587, 588, 600, 601, 602, 603, 605, 606, 607, 608, 610, 611, 612, 613, 615, 616, 617, 618, 620, 621, 622, 623, 625, 626, 627, 628, 630, 631, 632, 633, 635, 636, 637, 638, 650, 651, 652, 653, 655, 656, 657, 658, 660, 661, 662, 663, 665, 666, 667, 668, 670, 671, 672, 673, 675, 676, 677, 678, 680, 681, 682, 683, 685, 686, 687, 688, 700, 701, 702, 703, 705, 706, 707, 708, 710, 711, 712, 713, 715, 716, 717, 718, 720, 721, 722, 723, 725, 726, 727, 728, 730, 731, 732, 733, 735, 736, 737, 738, 750, 751, 752, 753, 755, 756, 757, 758, 760, 761, 762, 763, 765, 766, 767, 768, 770, 771, 772, 773, 775, 776, 777, 778, 780, 781, 782, 783, 785, 786, 787, 788, 800, 801, 802, 803, 805, 806, 807, 808, 810, 811, 812, 813, 815, 816, 817, 818, 820, 821, 822, 823, 825, 826, 827, 828, 830, 831, 832, 833, 835, 836, 837, 838, 850, 851, 852, 853, 855, 856, 857, 858, 860, 861, 862, 863, 865, 866, 867, 868, 870, 871, 872, 873, 875, 876, 877, 878, 880, 881, 882, 883, 885, 886, 887, 888]]
current >> è  ||  stack: [[0, 1, 2, 3, 5, 6, 7, 8, 10, 11, 12, 13, 15, 16, 17, 18, 20, 21, 22, 23, 25, 26, 27, 28, 30, 31, 32, 33, 35, 36, 37, 38, 50, 51, 52, 53, 55, 56, 57, 58, 60, 61, 62, 63, 65, 66, 67, 68, 70, 71, 72, 73, 75, 76, 77, 78, 80, 81, 82, 83, 85, 86, 87, 88, 100, 101, 102, 103, 105, 106, 107, 108, 110, 111, 112, 113, 115, 116, 117, 118, 120, 121, 122, 123, 125, 126, 127, 128, 130, 131, 132, 133, 135, 136, 137, 138, 150, 151, 152, 153, 155, 156, 157, 158, 160, 161, 162, 163, 165, 166, 167, 168, 170, 171, 172, 173, 175, 176, 177, 178, 180, 181, 182, 183, 185, 186, 187, 188, 200, 201, 202, 203, 205, 206, 207, 208, 210, 211, 212, 213, 215, 216, 217, 218, 220, 221, 222, 223, 225, 226, 227, 228, 230, 231, 232, 233, 235, 236, 237, 238, 250, 251, 252, 253, 255, 256, 257, 258, 260, 261, 262, 263, 265, 266, 267, 268, 270, 271, 272, 273, 275, 276, 277, 278, 280, 281, 282, 283, 285, 286, 287, 288, 300, 301, 302, 303, 305, 306, 307, 308, 310, 311, 312, 313, 315, 316, 317, 318, 320, 321, 322, 323, 325, 326, 327, 328, 330, 331, 332, 333, 335, 336, 337, 338, 350, 351, 352, 353, 355, 356, 357, 358, 360, 361, 362, 363, 365, 366, 367, 368, 370, 371, 372, 373, 375, 376, 377, 378, 380, 381, 382, 383, 385, 386, 387, 388, 500, 501, 502, 503, 505, 506, 507, 508, 510, 511, 512, 513, 515, 516, 517, 518, 520, 521, 522, 523, 525, 526, 527, 528, 530, 531, 532, 533, 535, 536, 537, 538, 550, 551, 552, 553, 555, 556, 557, 558, 560, 561, 562, 563, 565, 566, 567, 568, 570, 571, 572, 573, 575, 576, 577, 578, 580, 581, 582, 583, 585, 586, 587, 588, 600, 601, 602, 603, 605, 606, 607, 608, 610, 611, 612, 613, 615, 616, 617, 618, 620, 621, 622, 623, 625, 626, 627, 628, 630, 631, 632, 633, 635, 636, 637, 638, 650, 651, 652, 653, 655, 656, 657, 658, 660, 661, 662, 663, 665, 666, 667, 668, 670, 671, 672, 673, 675, 676, 677, 678, 680, 681, 682, 683, 685, 686, 687, 688, 700, 701, 702, 703, 705, 706, 707, 708, 710, 711, 712, 713, 715, 716, 717, 718, 720, 721, 722, 723, 725, 726, 727, 728, 730, 731, 732, 733, 735, 736, 737, 738, 750, 751, 752, 753, 755, 756, 757, 758, 760, 761, 762, 763, 765, 766, 767, 768, 770, 771, 772, 773, 775, 776, 777, 778, 780, 781, 782, 783, 785, 786, 787, 788, 800, 801, 802, 803, 805, 806, 807, 808, 810, 811, 812, 813, 815, 816, 817, 818, 820, 821, 822, 823, 825, 826, 827, 828, 830, 831, 832, 833, 835, 836, 837, 838, 850, 851, 852, 853, 855, 856, 857, 858, 860, 861, 862, 863, 865, 866, 867, 868, 870, 871, 872, 873, 875, 876, 877, 878, 880, 881, 882, 883, 885, 886, 887, 888], '32']
50
stack > [50]

0

JavaScript (ES6), 34 bytes

n=>--n+(n>>2)+(n>>5)*10+(n>>8)*100

Ou 32 bytes usando a indexação 0 correta:

f=
n=>n+(n>>2)+(n>>5)*10+(n>>8)*100
<input type=number min=0 max=511 value=0 oninput=o.textContent=f(+this.value)><pre id=o>0


2
Não deveria n=1dar 0?
precisa saber é o seguinte


0

Retina , 42 bytes

.+
$*1;
+`(1+)\1{7}
$1;
1111
1$&
(1*);
$.1

Experimente online! O link inclui casos de teste. Indexado a 0. Explicação:

.+
$*1;

Converta de decimal para unário, com um ;sufixo.

+`(1+)\1{7}
$1;

Converta em octal, mas ainda usando a representação unária dos dígitos ;após cada valor unário.

1111
1$&

Adicione 1 aos valores 4-7.

(1*);
$.1

Converta cada valor mais seu sufixo em decimal.



0

C , 67 bytes

main(n){scanf("%d",&n);printf("%d",n+(n>>2)+(n>>5)*10+(n>>8)*100);}

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.