Étant donné une liste d' N
entiers non négatifs, sortez ces nombres avec chacun des espaces remplis à gauche par une longueur de N
. (Vous pouvez également renvoyer une liste de caractères / chaînes.) Vous pouvez supposer qu'elle N
est supérieure ou égale au nombre de chiffres du plus grand nombre de la liste. Les espaces de fin sont autorisés dans la sortie.
Vous pouvez également prendre une chaîne contenant ces nombres, mais ce N
n'est pas la longueur de la chaîne, mais plutôt le nombre d'éléments dans la liste; vous pouvez également prendre une liste de chaînes, par exemple ["1", "2", "3"]
.
Il s'agit d'un code-golf, donc le programme le plus court en octets l'emporte.
Cas de test
input => 'output'
0 => '0'
1 => '1'
2 3 => ' 2 3'
2 10 => ' 210'
4 5 6 => ' 4 5 6'
17 19 20 => ' 17 19 20'
7 8 9 10 => ' 7 8 9 10'
100 200 300 0 => ' 100 200 300 0'
1000 400 30 7 => '1000 400 30 7'
1 33 333 7777 => ' 1 33 3337777'
0 0 0 0 0 0 => ' 0 0 0 0 0 0'
Réponses:
05AB1E , 3 octets
Code:
Explication:
Essayez-le en ligne! ou Vérifiez tous les cas de test .
la source
Python, 32 octets
Une fonction anonyme qui prend un tuple en entrée. Les nombres ou les chaînes fonctionnent.
Exemple:
la source
JavaScript (ES7), 37 octets
Entrée: tableau de chaînes
Sortie: tableau de chaînes
Afficher l'extrait de code
la source
PowerShell v2 +, 36 octets
Prend l'entrée
$a
comme un tableau d'int
egers. Boucle à travers eux avec$a|%{...}
. Chaque itération utilise l'-f
opérateur ormat avec l'optionAlignment Component
(basée sur$a.count
) pour remplir à gauche le nombre approprié d'espaces. Cette chaîne résultante est laissée sur le pipeline. À la fin de l'exécution du programme, les chaînes résultantes sont toutes laissées sur le pipeline sous forme de tableau.Exemples
La sortie est séparée par des sauts de ligne à chaque exécution, car c'est la valeur par défaut
Write-Output
à la fin du programme pour un tableau.la source
JavaScript, 49 octets
Prend les arguments comme une liste de chaînes et renvoie également une liste de chaînes.
Explication:
la source
.join("")
n'est donc pas nécessaire.a=>a.map(n=>(" ".repeat(l=a.length)+n).slice(-l))
est de la même longueur mais fonctionne aussi bien sur les entiers que sur les chaînes.Perl, 26 octets
-4 octets grâce à @Ton Hospel
25 octets de code +
-a
indicateur.Courir avec :
(Sur certaines anciennes versions de Perl, vous devrez peut-être ajouter
-n
)la source
-a
option raccourcira votre code ...Bash, 14
Liste d'entrée donnée sur la ligne de commande.
Pas grand chose à expliquer ici. Utilise simplement les fonctionnalités intégrées
printf
pour effectuer le remplissage nécessaire, en fonction du nombre d'arguments passés:$#
est le nombre d'arguments passés%<n>d
est un spécificateur de format printf qui imprime un entier avec jusqu'à n espaces de tête$@
est la liste de tous les arguments passés$@
.Ideone .
la source
Vim, 19 octets
YPPG!{<C-F>|R%ri<CR>djVGgJ
Prend une liste de numéros un par ligne. S'appuie sur
:set expandtab
, qui est populaire, mais pas universel.Vous souhaitez clairement utiliser
:right
pour cela. La question est de savoir comment obtenir le nombre de lignes sur la ligne de commande. La manière traditionnelle est:%ri<C-R>=line('$')
, mais tout ce texte est long.L'approche la plus courte et la plus entreprenante consiste à former la ligne de commande à l'aide de la
!
commande en mode normal . Cela implique des solutions de contournement étranges, en étendant le fichier de 2 lignes puis en les supprimant à nouveau, mais il sort 2 octets plus court. Et je suis un peu choqué que la ligne de commande brouillée que je reçois (comme:%ri+4!
) fonctionne réellement, mais c'est le cas.la source
expandtab
ajoute 7 traits à cette solution. La raison pour laquelle c'est un problème est que je dois vérifier d'autres approches pour éviter / supprimer les onglets qui pourraient désormais gagner. Cela prend beaucoup de temps, pas du tout amusant, aggrave la qualité de ma solution et n'affecte même aucun des cas de test fournis (aucun n'a plus de 8 numéros). Si c'est la règle, c'est la règle, mais je préfère marquer la non-compétition que de le faire sansexpandtab
.Ypp!{
. Il est en effet plus court. Cela ne fonctionne pas non plus. Il apporterait toujours le numéro 1 dans la ligne de commande, quelle que soit la longueur du fichier.Rubis,
403634 octetsPeut être travaillé sur plus.
Appelez en tant que lambda.
Explication:
la source
Gelée ,
76 octetsL'entrée est un tableau de chaînes. Essayez-le en ligne! ou vérifiez tous les cas de test .
Comment ça fonctionne
la source
Mathematica, 25 octets
L'entrée et la sortie sont des listes de chaînes.
Explication
Obtenez la longueur de l'entrée (nombre d'élément).
Pad a laissé chaque élément dans l'entrée de sorte que leurs longueurs correspondent à la longueur de l'entrée.
la source
JavaScript (ES6), 47
Fonction anonyme, entrée: tableau de chaînes, sortie: tableau de chaînes
Utilisation d'une fonction de remplissage récursive
Pour un tableau entier / chaîne en entrée, 49 octets:
Tester
la source
PHP, 55 octets
Pevious Version 59 octets
la source
foreach($a=$_GET[a]as$i)printf("%".count($a)."s",$i);
J, 4 octets
Essayez-le en ligne!
Fonction unaire prenant la liste des nombres à droite sous forme de tableau et renvoyant la chaîne complétée.
Ici, il est utilisé au REPL. Notez que les lignes d'entrée sont en retrait de trois espaces.
la source
CJam , 11 octets
Essayez-le en ligne! (En tant que suite de tests.)
Explication
la source
Kotlin, 90 octets
Golfé:
Non golfé:
la source
Haskell, 47 octets
C'est une fonction d'une liste de chaînes à une liste de chaînes, comme les réponses JavaScript.
replicate
permet d'obtenir une liste (les chaînes Haskell sont des listes de caractères) d'une taille donnée, donc je l'utilise - et l'hypothèse en gras dans le problème - pour générer le remplissage (sa longueur estN
- <longueur de l'élément>, pour chaque élément de la liste de saisie). J'aurais préféré utiliser uneprintf
solution basée plutôt que celle-ci avecreplicate
(elle aurait été plus courte, pour une chose) mais l'instruction d'importation tue toutes les économies réalisées sur la fonction elle-même.la source
Java,
8382 octetsConstruit une chaîne de format conçue pour remplir les arguments donnés par un nombre d'espaces égal à la longueur du tableau. La chaîne de format est utilisée comme argument pour
String.format
, et le résultat est ensuite renvoyé. L'interface fonctionnelle peut accepter unString[]
ou unInteger[]
ou similaire.Classe complète:
Essayez-le sur Ideone.
-1 octet grâce à @KevinCruijssen.
la source
int ...
s+=...
if
for(int i=a.length,j=i;i-->0;s+="%"+j+"s");
Groovy, 36 octets
Prend uniquement un tableau de chaînes, génère un tableau de chaînes rembourrées.
la source
MATL, 14 octets
Essayez-le à MATL Online
Cela utilise la création de chaîne formatée en construisant d'abord la
%(NUM)d
chaîne de formatage, puis applique à nouveau le formatage de chaîne en utilisant cette chaîne de formatage et l'entrée.la source
JavaScript 33 octets
similaire à @Hedi - mais le remplissage par défaut est '', donc ses 4 caractères de moins
la source
K (oK) , 11 octets
Solution:
Essayez-le en ligne!
Explication:
Interprétée de droite à gauche. Convertissez en chaîne, et appuyez sur la touche gauche avec la longueur de la liste, puis aplatissez:
la source
Pyth - 7 octets
Réponse simple en utilisant le rembourrage intégré.
Suite de tests .
la source
C #, 39 octets
Prend a
List<string>
et sort aList<string>
.Explication:
Aurait été plus court de quelques octets pour utiliser LINQ si l'importation n'est pas comptée, puis retourner
IEnumerable<string>
au lieu d'une liste complète:C #, 35 + 18 = 53 octets
la source
R, 47 octets
Lit l'entrée de stdin et utilise le formatage de style C avec
sprintf
. Il devrait y avoir un moyen pour que lacat
fonction ne soit pas nécessaire mais n'a pas pu trouver un moyen de supprimer les guillemets sur chaque élément sans lui. Si nous voulons seulement des guillemets de début et de fin, nous pourrions utiliser l'option légèrement plus longue:la source