Étant donné une chaîne de chiffres ou un entier en entrée, vous devrez l'indexer.
C'est ainsi que vous modifiez l'entrée. Nous utiliserons 30043376111
comme exemple:
Tout d'abord, trouvez la somme des indices de chaque occurrence des chiffres respectifs:
0: 1 + 2 = 3
1: 8 + 9 + 10 = 27
3: 0 + 4 + 5 = 9
4: 3
6: 7
7: 6
Ensuite, construisez un nouvel entier ou une nouvelle chaîne où les chiffres ci-dessus vont dans l'ordre des sommes de leurs indices. Dans le cas où plusieurs chiffres donnent la même somme, le plus petit chiffre précède le plus grand:
047631
Enfin, supprimez les zéros non significatifs et retournez ou imprimez le résultat:
47631
Vous devez écrire un programme ou une fonction qui renvoie ou imprime l'entrée indexée.
C'est du code-golf , donc le code le plus court en octets gagne!
D'autres cas de test peuvent être ajoutés sur demande.
Réponses:
k, 7 octets
repl en ligne
La juxtaposition des fonctions est la composition, donc aucun paramètre ou entrée explicite n'est requis.
la source
Haskell, 69 octets
Prend une chaîne, renvoie un nombre. Exemple d'utilisation:
f "30043376111"
->47631
. Essayez-le en ligne!Assez simple: triez d'abord les chiffres de la chaîne d'entrée sur la somme de leurs indices et par le chiffre lui-même (-> paires de (somme ..., d)), supprimez les doublons et convertissez-les en un nombre pour supprimer l'interligne
0
. Le0+
est nécessaire pour obtenir les bons types.la source
Empilé , 59 octets
Essayez-le en ligne!
Cela prend une chaîne de caractères (comme
$'1231231'
) en entrée du haut de la pile et laisse une chaîne sur la pile.Explication
Il nous reste maintenant des paires de (chr, somme des indices).
la source
05AB1E ,
2928 octets-1 merci à Riley
Essayez-le en ligne!
la source
TFN
par9Ývy
JavaScript (ES6), 98 octets
Prend une chaîne
n
, puis la convertit en un ensemble, puis en un tableau de chiffres distincts. Trie ces chiffres dans l'ordre numérique, puis les trie à nouveau en fonction des sommes des indices. Concatène le tableau trié en chaîne et convertit finalement en nombre pour supprimer les zéros non significatifs.la source
.sort()
, une entrée de 1332 donne 132 au lieu de 123.PowerShell , 88 octets
Essayez-le en ligne!
Définit une table de hachage vide
$a
, puis convertit l'entrée$args
enchar
tableau et parcourt chaque élément|%{...}
. Nous fixons la valeur à "l'élément courant"$a
pour être incrémenté de$i++
, pour compter les indices de nos entrées. Par exemple, pour l'entrée300433766111
, la première boucle$a[3]
obtient+=0
; la boucle suivante,$a[0]
obtient+=1
; etc.Ensuite, nous avons besoin de
Sort
notre table de hachage. Malheureusement, en raison d'une bizarrerie du langage interne, cela signifie que nous devons le faire$a.GetEnumerator()
avant de pouvoir effectuer le tri réel. Nous trions parvalue
, puis parname
, pour satisfaire l'exigence de chiffres plus petits, trions d'abord. Nous retirons les.Name
s de ceux-ci (dans l'ordre trié),-join
les ensemble dans une chaîne, et castons cette chaîne comme un entier+
pour supprimer les zéros de tête. Cela reste sur le pipeline et la sortie est implicite.la source
Gelée , 10 octets
Essayez-le en ligne!
Prend et retourne un entier.
Comment?
la source
PHP, 103 octets
la source
Python 2,
10292 octetsMerci à Ben Frankel d'avoir économisé 10 octets!
Essayez-le en ligne!
Prend l'entrée sous forme de chaîne et génère un entier. Utilise un dictionnaire pour stocker la somme des index, puis la trie par valeur. Convertit en entier pour supprimer les zéros non significatifs car il
int
est plus court que.lsplit('0')
.la source
a[j]=a.get(j,0)+i
enregistre 10 octets.Python 3.5,
8685 octetsMerci @Ben Frankel d'avoir enregistré un octet:
Ancien code:
Fonction anonyme prenant une chaîne de chiffres et renvoyant un entier
la source
sum(i*(c==d)for
enregistre 1 octet.Pip , 18 octets
Prend le nombre comme argument de ligne de commande. Essayez-le en ligne!
Explication
la source
C #, 245 octets
Pas content de combien de temps cela a fini par être et ça peut probablement être plus court mais c'est ce que j'ai fini avec.
la source
Perl 6 ,
65 6152 octetsEssayez-le
Essayez-le
Essayez-le
Étendu
la source
Scala,
123104 octetsExemple (avec Scala REPL):
Assez simple, en utilisant le tuple comme prédicat de tri pour le tri secondaire.
la source
Pyth, 9 octets
Essayez-le en ligne
Prend une chaîne de chiffres comme entrée.
la source