introduction
Dans le sillage des retombées du paquet npm de gauche , ayons un code golf pour implémenter le gauche pad.
La fonction de gauche-pad se compose de 2 arguments par défaut et 1 argument supplémentaire, sous la forme de chaîne , longueur , ( padchar ). Si le padchar n'est pas donné, il est normalisé en un caractère espace . Prenons un exemple avec deux arguments:
left_pad("abc", 6)
Tout d'abord, nous observons la longueur de la chaîne, qui est 3 . Après cela, nous devons remplir cette chaîne à gauche jusqu'à ce que la longueur de la chaîne complète ait atteint la longueur indiquée dans la fonction. Dans ce cas 6 . Puisque le padchar n'est pas donné , nous devons le remplir avec des espaces:
abc
Il s'agit d'une chaîne avec 3 espaces et la chaîne initiale, résultant en une chaîne de longueur 6. Voici un exemple avec le padchar donné:
left_pad("abc", 6, "-")
Nous faisons juste la même chose que l'exemple ci-dessus, mais remplaçons les espaces par le padchar. Dans ce cas, le tiret:
---abc
La tâche
Étant donné la chaîne , la longueur et peut - être l'argument supplémentaire padchar , affichez la chaîne remplie à gauche. Vous pouvez supposer que le numéro de longueur est égal ou supérieur à la longueur de la chaîne. Le padchar sera toujours composé d'un caractère.
Cas de test
left_pad("string", length, ("padchar")) === "left-padded string"
left_pad("foo", 5) === " foo"
left_pad("foobar", 6) === "foobar"
left_pad("1", 2, "0") === "01"
left_pad("1", 2, "-") === "-1"
C'est du code-golf , donc la soumission avec le plus petit nombre d'octets gagne!
Réponses:
Pyth,
1311 octetsEssayez-le ici .
Prend l'entrée de STDIN comme chaîne sur la première ligne, longueur sur la deuxième ligne et caractère de remplissage éventuellement sur une troisième ligne.
la source
JavaScript (ES6), 43 octets
la source
p+=s
, vous pouvez ajouter 2 octets pour le fairep+=[s]
, et cela fonctionnera.JavaScript (ES6),
374344 octetsTester:
Je ne sais pas si vous voulez compter la déclaration de fonction, je l'inline.
la source
slice
est plus court quesubstr
.console.log(f("whatever",10, "*"))
, maisconsole.log(("*".repeat(10)+"whatever").substr(-10))
Javascript ES6, 35 octets
Essayez-le. Je crois que c'est l'implémentation la plus courte possible actuellement possible en Javascript.
la source
Python 3,
333129 octetsAssez simple.Merci à @xnor de me le rappelerstr.rjust
est une chose. : PPour la même longueur (également grâce à xnor):
Solution précédente:
la source
(x*b+a)[-b:]
oua.rjust(b,x)
. En fait,str.rjust
lui - même fonctionne sans doute pour le tout.rjust
c'était une fonction intégrée, merci!f(1, 2, 0) === '01';
05AB1E ,
119 octetsCode:
Explication:
Utilise l' encodage CP-1252 . Essayez-le en ligne .
la source
JavaScript (ES5), 70 octets
Utilisation de la récursivité ...
Ma tentative initiale n'était que de 57 octets:
Mais seulement réussi les 2 premiers tests:
J'aime toujours le plus court, car dans la pratique, passer des nombres à une fonction de manipulation de chaîne n'est pas une fonctionnalité dont j'aurais besoin.
la source
Mathematica, 13 octets
Réponse intégrée n ° 3 (la première était
Range
, la seconde étaitSurd
) Ou moins intégrée: (35 octets)la source
It's common practice to disallow built-ins that exactly implement what the challenge asks if that's a concern.
(Appel à l'autorité: Martin) (mais aussi du bon sens)Julia, 4 octets
Réussit tous les cas de test:
la source
rect 7 cor
?lpad("rect", 7, "cor") => "correct"
Javascript (ES6), 55 octets
Créez un tableau de valeurs vide et joignez la version.
Est plus lisible mais
return
ajoute quelques caractères supplémentaires.la source
`
pourinline code blocks.
.+=
renvoie la valeur de son opérande gauche, de sorte que la deuxième version devient plus courte:(a,n,c=' ')=>(new Array(++n-(a+='').length).join(c)+a)
mais elle devient plus longue lorsque vous ajoutez des chaînes de remplissage multichar.Bash, 57 octets
Paramètres: largeur de chaîne padchar
Faites une chaîne d' espaces de largeur .
Convertissez chaque caractère d'espace en padchar .
Écrivez le remplissage puis la chaîne .
la source
Python, 41 octets
Sans le droit intégré, 43 octets:
(pas ce que l'on attend de lui, mais il passe la suite de tests)
la source
s=str
et remplacers
parstr
pour le même nombre d'octets.Gelée , 12 octets
Tant de références variables. Jelly n'était-il pas censé être une langue tacite ?
Essayez-le en ligne!
Comment ça marche
la source
padchar (⁵, defaults to 10)
ne devrait-il pas par défaut être20
ou32
??
vérifie s'il a sa valeur par défaut 10 et donne un espace dans ce cas.JavaScript ES7, 16 octets
ftw intégré! Fonctionne uniquement sur Firefox 48 et supérieur. Valide car cette fonctionnalité a été ajoutée le 12 mars.
Cela prend une entrée comme:
la source
Brochet , 67 octets
soupir . La chaîne vide est
""
évaluée àtrue
. Pourquoi!?mixte mixte mixte mixte mixte soupe de brochet ...
la source
Pyke , 12 octets (non compétitif)
ajout du nœud d'entrée, correction de bugs sur le nœud len, modification des résultats par défaut sur l'affectation du nœud après la publication du défi.
Explication:
la source
JavaScript ES6, 38 octets
Une solution alternative.
la source
JavaScript (ES6), 34 octets
J'ai utilisé une solution récursive.
la source
Rubis, 42 octets
Paramètres: chaîne, taille, padchar.
Suite de tests ci-dessous; devrait imprimer tous les "vrais", il suffit de tout mettre dans le même fichier.
la source
Java 8,
8688 octetsCeci est une fonction. Le troisième argument est a
varargs
pour autoriser le caractère optionnel du pad (par défaut' '
)Récursivité! +2 octets (crochets ajoutés en raison d'une erreur de type incompatible)
la source
PHP,
5448 octetsUtilise l'encodage Windows-1252.
Courez comme ceci (
-d
ajouté pour l'esthétique uniquement):Ancienne version (sans le intégré):
Tweaks
str_pad
au lieu d'une boucle. Laissant l'ancien pour référence, car les éditeurs sont mal vusla source
R, 50 octets
Retard à la fête, mais c'est parti:
Cela imprime simplement la sortie sur stdout mais ne retourne pas réellement la chaîne rembourrée (je ne savais pas si c'était une exigence pour le défi). Si cela est nécessaire, la solution est légèrement plus longue à 61 octets:
la source
C, 64 octets
Essayez-le ici .
la source
gcc
laisseraundefined reference to function printf
passer et inclureprintf
lui - même, mais pas de chance pourmemset
,asprintf
etstrlen
. Vous devez ajouter les#include<string.h>
définitions ... etc pour le rendre valide.gcc-5.1
. Je ne sais pas s'ils utilisent des drapeaux de compilateur ou ce que vous avez dans les coulisses que je ne connais pas. J'utilisais initialement cela comme justification pour qu'il ne fonctionne pas dans votre environnement, mais maintenant je ne suis pas sûr ...gcc 5.2.1
sur Linux, donc vous pourrez peut-être vous en tirerIdeone C, 64 bytes
mais si vous prétendez que c'est C, faites-le compiler. : pf
prend quatre paramètres, pas 3? Avez-vous besoin de l'adresse de la chaîne ou ...? de toute façon,f
devrait prendre au plus 3 arguments.