Une séquence euro-originale


14

Etant donné un nombre entier positif n en sortie le n nombre -ième de la séquence d'euro-iginal.

Calcul de la séquence

Cette séquence est égale à OEIS A242491 .

Un nombre fait partie de ladite séquence si le nombre peut être composé en utilisant autant de pièces ou de billets en euros différents, mais un seul de chacun . Notez que vous n'avez pas à considérer les cents.

Exemple:

6 serait dans l'ordre, car il peut consister en une pièce de 1 euro et un billet de 5 euros.

4 ne serait PAS dans l'ordre, car il ne peut pas être formé avec les exigences données.

Pour donner à chacun un aperçu, voici une liste avec les valeurs en euros que vous devez considérer:

1 €, 2 €, 5 €, 10 €, 20 €, 50 €, 100 €, 200 €, 500 €

Notez que cette séquence ne varie que de 0 (oui, 0 est inclus!) À 888.


Voici les 15 premiers éléments de cette séquence:

0, 1, 2, 3, 5, 6, 7, 8, 10, 11, 12, 13, 15, 16, 17, ...

Cas de test

Entrée -> Output

2 -> 1
6 -> 6
21 -> 25
33 -> 50

Quelle est la plus grande entrée possible? Pouvons-nous avoir des cas de test plus importants?
xnor

3
Pouvons- nous indexer a(1)=1comme la table oeis ?
xnor

6
Peut-on s'accorder N<=512?
Stewie Griffin du

@xnor Si elle retourne encore 0pour n=0elle va bien.
Ian H.

Pouvons-nous produire les résultats indexés 0 au lieu d'indexés 1? Donc 0->0; 1->1; 5->6; 20->25; 32->50; 511->888au lieu de 1->0; 2->1; 6->6; 21->25; 33->50; 512->888.
Kevin Cruijssen

Réponses:


12

Gelée , 7 octets

b8d4ḅ5Ḍ

Essayez-le en ligne!

Comment ça fonctionne

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

Husk , 8 7 5 octets

Σ!Ṗİ€

Essayez-le en ligne! Edit: -3 octets grâce à 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

J'ai entendu qu'il est prévu de passer İ€à la séquence finie [0.01,0.02,0.05,0.1,0.2,0.5,1,2,5,10,...,500]à l'avenir. Une fois cela implémenté, le code suivant devrait fonctionner avec un nombre d'octets de 7:

Σ!Ṗ↓6İ€

↓6laisse tomber les six premiers éléments de la séquence. Essayez-le en ligne!


Est-il prévu que le programme ajoute 2 0s à la sortie?
Ian H.

Σ!Ṗ↑9İ€devrait enregistrer un octet.
Zgarb

@IanH. Le premier programme produit la sortie correcte. Le deuxième lien TIO ne fonctionnera qu'après la İ€modification de l'implémentation de . Qu'il retourne actuellement 2500au lieu de 25n'est qu'une coïncidence.
Laikoni

@Zgarb Merci beaucoup!
Laikoni

1
Je pense que vous pouvez également supprimer ↑9, car le texte du défi ne mentionne pas ce qui devrait se passer pour les entrées au-delà de 512.
Zgarb

6

Perl 5 , 29 octets

Code de 28 octets + 1 pour -p.

Utilise l'indexation basée sur 0.

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

Essayez-le en ligne!


devrait être sprintf"%o",$_-1, en raison de la séquence indexée de 1 par exemple 2 -> 1, toute séquence OEIS commence par 1
Nahuel Fouilleul

Cela utilise l'indexation 0 autorisée par la question (ou au moins, les commentaires des OP sous la question). J'ai fait -1clarifier l'OP jusqu'à!
Dom Hastings du

5

Gelée , 11 octets

0Df9,4Ṇ$$#Ṫ

Essayez-le en ligne!

Merci beaucoup à @Erik the Outgolfer pour son aide dans le chat!

Explication

0Df9,4Ṇ $$ # Ṫ - Lien monadique.

0 # - Collectez les N premiers matchs, à partir de 0.
 D - Chiffres.
  f9,4 - Filtre-Conservez les chiffres qui sont 9 ou 4. Rend [] quand il n'y en a pas.
      Ṇ - NON logique. [] -> 1 (véridique), liste non vide -> 0 (fausse).
          Ṫ - Pop et retourne le dernier élément.

3

Mathematica, 47 octets

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

Mathematica, 48 octets

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

-6 octets de Martin Ender


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


3

05AB1E , 7 octets

0 indexé.

Port de réponse de M. Xcoder Jelly

µN7nÃg_

Essayez-le en ligne!

Explication

µ          # 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

Nice, semble que 05AB1E est le meilleur outil pour mon algorithme :-). L'approche arithmagique de Dennis vous donnerait 9 octets (peut-être jouables au golf): 8в4‰ε5β}J(indexé 0)
M. Xcoder

@ Mr.Xcoder: J'avais 8в4‰J5öJpour 8 avec le tour de Dennis. Le vôtre était mieux adapté à 05AB1E en effet :)
Emigna

2

Python 2 , 40 38 36 octets

Inspiré par la réponse de xnor , mais utilise l'indexation 1.

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

Essayez-le en ligne!

Python 2 , 78 65 62 61 58 56 octets

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

Essayez-le en ligne!



Y a-t-il une raison pour laquelle @xnor a supprimé sa réponse, car elle me semble tout à fait valable ..: S
Kevin Cruijssen

1
@KevinCruijssen Je l'ai annulé maintenant que le demandeur a répondu que le déplacement de l'indexation vers a(1)=1était autorisé.
xnor

2

Gelée , 15 octets

0 indexé.

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

Essayez-le en ligne!

Explication

Ceci est basé sur la solution Python de xnor , où l'algorithme est 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]]))

Puisque le premier n n'est pas modifié, c'est la même chose que:

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

Étant donné que 4, 32 et 256 sont tous des puissances de deux, ils peuvent être traduits en décalages de bits.

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

Le golfiness ne se traduit pas bien en Python, mais transformer les listes en chaînes Jelly d'index de page de code réduit le nombre d'octets 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

Gelée , 24 octets

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

Essayez-le en ligne!


1
+1 pour avoir dans votre code. :) Mais -1 car c'est la première fois qu'une réponse Jelly est plus longue que ma réponse Java. XD Honte à vous (et gl & hf jouer au golf plus loin). ;)
Kevin Cruijssen

1
@KevinCruijssen Cela va faire des ravages sur les notes Elo .
xnor

@KevinCrujissen Un peu mieux maintenant? : P
totalement humain

1
@icrieverytim Vous avez fait une faute de frappe en mon nom, donc je n'ai pas reçu l'invocation. Mais oui, beaucoup mieux. :) +1 de ma part.
Kevin Cruijssen

2

Octave , 59 octets

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

Essayez-le en ligne!

Explication

Le code crée la séquence complète, puis l'indexe.

D' abord, les expressions binaires des nombres 0, 1... 511sont générés en tant que 512 x 9 matrice:

dec2bin(0:511)-48

(la -48partie est nécessaire car le résultat dec2binest des caractères, pas des chiffres). Cela donne

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

Ensuite, le produit Kronecker de [1 2 5]et [1 10 100]est calculé

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

et transposé

'

ce qui donne les neuf valeurs possibles de l'euro comme un vecteur 9 × 1:

1
2
5
10
20
50
100
200
500

Multiplier par matrice la matrice et le vecteur ci-dessus

*

donne un vecteur 512 × 1 contenant tous les nombres possibles de la séquence, avec répétitions et non triés:

  0
500
 50
...
388
888

Déduplication et tri

unique(...)

donne la séquence complète:

  0
  1
  2
...
887
888

Enfin, l'entrée est utilisée pour indexer dans cette séquence

(n)

pour produire la sortie.


2

Rubis , 28 27 octets

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

Essayez-le en ligne!

Explication

Sortez la chaîne octale, remplacez les chiffres 4..7 par 5..8


Je pense que vous pouvez supprimer l'espace après .tr pour -1
Snack


1

05AB1E , 20 octets

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

Essayez-le en ligne!


1-indexé, en utilisant la formule de [(n%3)^2 + 1]*10^floor(n/3)pour générer les 10 premiers termes, puis en utilisant le jeu de puissance pour calculer toutes les combinaisons possibles ... Ensuite, je le trie et tire a[b].


Voyez-le en action ci-dessous:

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 octets

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

Ou 32 octets en utilisant la bonne indexation 0:

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
Ne devrait pas n=1donner 0?
Ayb4btu


0

Rétine , 42 octets

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

Essayez-le en ligne! Le lien inclut des cas de test. 0 indexé. Explication:

.+
$*1;

Convertissez de décimal en unaire, avec un ;suffixe.

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

Convertir en octal, mais toujours en utilisant une représentation unaire des chiffres avec ;après chaque valeur unaire.

1111
1$&

Ajoutez 1 aux valeurs 4-7.

(1*);
$.1

Convertissez chaque valeur plus son suffixe en décimal.



0

C , 67 octets

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

Un port direct de la réponse JavaScript de Neil , mais j'ai pensé que cela devrait être ajouté pour être complet.


Testé sur GCC version 6.3.0. Il lancera quelques avertissements, mais compilera quand même.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.