Développez un nombre
Votre tâche consiste à développer un entier supérieur à 0 de la manière suivante:
Divisez le nombre en chiffres décimaux et pour chaque chiffre, générez une liste selon ces règles:
- si le chiffre est impair, la liste commence par le chiffre et descend à 1;
- si le chiffre est pair, la liste commence par le chiffre et monte jusqu'à 9.
- si le chiffre est 0, la liste est vide.
Notez les listes pour les nombres impairs sous les chiffres et au-dessus pour les nombres pairs. Ensuite, alignez les colonnes en haut et collectez les chiffres de chaque ligne pour créer des entiers. Comme dernière étape, additionnez les nombres pour trouver l'expansion du nombre.
Voici un exemple des règles ci-dessus appliquées au 34607:
9
8
79
68
57
346 7 -> 399 7 -> 3997 -> 9418
2 6 288 6 2886
1 5 177 5 1775
4 66 4 664
3 5 3 53
2 4 2 42
1 1 1
Voici les cas de test:
1: 1
2: 44
3: 6
44: 429
217: 1270
911: 947
2345: 26114
20067: 3450
34875632: 70664504
9348765347634763: 18406119382875401
C'est le code-golf , donc les réponses les plus courtes en octets dans chaque langue gagnent.
Réponses:
Gelée , 13 octets
Un lien monadique prenant et retournant des entiers positifs.
Essayez-le en ligne! ou voir la suite de tests .
Comment?
la source
Perl 6 ,
6866 octetsEssayez-le
Essayez-le
Étendu:
la source
APL (Dyalog) , 39 octets
Corps de programme complet. Demande l'entrée de STDIN. Imprime le résultat vers STDOUT.
Essayez-le en ligne!
Pour afficher le dernier cas de test correctement,
⎕FR
( F loating point R ePresentation) a été réglé sur 128 bits décimal et⎕PP
( P Rint P recision) a été fixée à 34 chiffres.⍞
invite pour la saisie de texte de STDIN⍎¨
exécuter chacun (obtient chaque chiffre sous forme de nombre){
…}¨
Pour chaque élément, appliquez la fonction suivante où l'argument est représenté par⍵
:2|⍵:
s'il est impair (lit. "si" la division reste lorsqu'elle est divisée par 2), alors:⌽
sens inverse⍳
les ɩ ntegers de 1 à⍵
l'argument⋄
autre×⍵:
si l'argument est positif (lit. "if" signum), alors:⌽
sens inverse⍵
l'argument,
suivi par⍵
argument↓
éléments supprimés de⍳9
les ɩ ntegers de 1 à 9⋄
autre⍬
liste vide↑
mélanger (combiner) cette liste de listes en une seule matrice, avec des zéros à droite⍉
transposer↓
diviser cette matrice en une liste de listes0~⍨¨
supprimer tous les zéros de chaque liste10⊥¨
convertir chacun de la base 10 en nombres normaux (cela recueille les chiffres)+/
résumer les chiffresla source
JavaScript (ES6),
888382 octetsRemarque
9 - k < x || 9
enregistre un octet9 - k >= x && 9
mais génère1
au lieu de0
si l'inégalité est vérifiée. Ce serait un problème s'il conduisait à1 > k
, déclenchant le mauvais chemin dans le ternaire externe. Mais cela signifierait celak = 0
et donc9 - k = 9
, nous ne pouvons donc pas avoir9 - k < x
en même temps.Cas de test
NB: Suppression du dernier cas de test qui dépasse la précision du numéro JS.
Afficher l'extrait de code
la source
Japt , 18 octets
Essayez-le en ligne!
la source
Java 11,
210209191181 octetsD'accord, cela a pris un certain temps (principalement parce que j'ai fait une erreur au début, donc j'ai dû noter chaque étape pour mieux comprendre ce que j'ai fait de mal). Peut très probablement être joué au golf un peu plus.
-18 octets grâce à @ceilingcat .
Explication:
Essayez-le ici.
la source
Pip , 28 octets
Essayez-le en ligne!
Explication
Comment les étapes se déroulent
34607
comme argument:la source
Pyth - 23 octets
Suite de tests .
la source
Haskell ,
106104octetsEssayez-le en ligne!
la source
R ,
153146 octetsEssayez-le en ligne!
Parfois, je ne peux pas dire si je suis juste une poubelle au golf, ou si R est ...C'est certainement moi, j'ai économisé 7 octets grâce à user2390246, qui m'a rappelé une autre façon d'extraire les chiffres (que je me suis suggéré) .Vous pouvez remplacer
strtoi
paras.double
pour obtenir18406718084351604
le dernier cas de test (ce qui est faux); R n'a que des entiers 32 bits.la source
character->int
lorsque j'ai appelé:
, puis utiliséstrtoi
quand même!Perl 5 , 120 + 1 (
-a
) = 121 octetsEssayez-le en ligne!
la source
Python 2 , 131 octets
Essayez-le en ligne!
la source
05AB1E , 16 octets
Essayez-le en ligne ou vérifiez tous les cas de test .
Ou bien:
Explication:
la source
Burlesque , 39 octets
Essayez-le en ligne!
la source