Étant donné une chaîne s
et un entier positif N
, dupliquez progressivement chaque caractère de plus en plus jusqu'à ce que des N
doublons, puis restez en N
double jusqu'à ce que les N
caractères soient éloignés de la fin, puis redescendez.
Par exemple, étant donné abalone
et 3
:
a we start with 1 copy
bb then 2 copies
aaa then 3 copies, which is our second parameter
lll so we continue using 3 copies
ooo until we reach the end
nn where we use 2 copies
e and then finally 1 copy
et le résultat serait abbaaalllooonne
.
Il est garanti que la chaîne a une longueur supérieure à 2N
et ne contient que des caractères de a
à z
.
Plus de tests:
N string output
2 aaaaa aaaaaaaa
3 abcdabcdabcd abbcccdddaaabbbcccdddaaabbbccd
C'est du code-golf . La réponse la plus courte en octets l'emporte. Des échappatoires standard s'appliquent.
Python 2 , 57 octets
Essayez-le en ligne!
Aussi 57:
Python 2 , 57 octets
Essayez-le en ligne!
la source
len(s[:i][:n])
? Je suis convaincu qu'il existe un moyen plus court d'obtenir ce chiffre, mais je ne sais pas comment.min(len(s),i,n)
. Bon travail!JavaScript (ES6),
6765 octets-2 octets grâce à la méthode plus courte de Chas Brown à l' aide
min()
.Prend entrée dans la syntaxe corroyage:
f("abalone")(3)
.Extrait de test
la source
Gelée ,
87 octetsEssayez-le en ligne!
Comment ça fonctionne
-1 octet grâce à @LeakyNun
la source
J«¥@«U$x@
de 9 octets.x@⁸
équivaut à⁸x
(j'ai utilisé⁸
ici)Haskell ,
6160 octetsMerci à @Laikoni d'avoir aidé à raser 1 octet
Essayez-le en ligne!
Non golfé:
la source
do
bloc! Enregistrez un octet en déposant la parenthèse danslength(s)
.Haskell (Lambdabot), 74 octets
Essayez-le en ligne!
la source
>>=id
J, 24 octets
Le bit entre parenthèses -
(<.&n<./(|.,:[)>:i.#s)
- crée le1 2 ... n n n ... 2 1
tableau, comme suit:une fois que nous avons cela, l'
#
opérateur de J fait automatiquement exactement ce qui est demandé, en dupliquant chaque élément le nombre de fois spécifié.Curieux de voir l'amélioration d'un expert J sur ce ...
la source
[#~#@[$([:>:<:,&:i.-)@]
(peut-être qu'un espace errant s'est coincé là-dedans). Je ne sais pas pourquoi l'hameçon ne prendx
pas, mais pas trop en position de m'occuper.PHP> = 7.1, 75 octets
PHP Sandbox Online
PHP> = 7.1, 78 octets
PHP Sandbox Online
PHP> = 7.1, 80 octets
PHP Sandbox Online
la source
Japt ,
1110 octetsEssaye-le
Explication
Saisie implicite de chaîne
U
et d'entierV
.Mappez
U
et remplacez chaque personnage.Obtenez le minimum de
V
, ...T
(initialement0
) incrémenté de 1, ...Et l'index du caractère actuel (
E
) soustrait de (n
) la longueur (Ê
) deU
.Répétez le caractère actuel autant de fois.
Sortie implicite de la chaîne finale.
la source
R , 87 octets
Essayez-le en ligne!
la source
Python 2 68 octets
la source
f=
dans la réponse; la fonction peut être anonyme. Dans cet esprit, vous pouvez supprimer 3 octets aveclambda s,n:''.join(c*min(i+1,len(s)-i,n)for i,c in enumerate(s))
.Husk ,
109 octetsEssayez-le en ligne!
La première ligne est la fonction principale, elle répète chaque lettre n fois et appelle ensuite la deuxième ligne deux fois.
La deuxième ligne prend au plus N lettres de chaque groupe de lettres répétées, où N est l'index basé sur 1 du groupe, puis inverse la liste.
la source
Haskell , 68 octets
Essayez-le en ligne!
la source
APL (Dyalog) , 15 octets
{
…}
Fonction où l'argument gauche (cap) est ⍺ et l'argument droit (string) est ⍵ :≢⍵
compter le nombre de caractères dans la chaîne⍳
générer que beaucoup ɩ ntegersi←
stocker dans i⌽
sens inversei⌊
par paire minimum avec i⍺⌊
par paire minimum avec le capuchon⍵/⍨
utilisez ces chiffres pour répliquer les lettres de la chaîneEssayez-le en ligne!
la source
F # , 96 octets
Essayez-le en ligne!
Un port de Justin Mariners réponse javascript
la source
Java (OpenJDK 8) ,
10197 octetsEssayez-le en ligne!
Tellement jouer avec les indices ...
la source
L'ormeau est un type de poisson (enfin un coquillage) donc…
> <> , 79 octets
Essayez-le en ligne ou regardez-le au terrain de pêche !
Lit la chaîne dans STDIN et suppose que le numéro est déjà sur la pile.
Explication: Les deuxième, quatrième et sixième lignes sont les principales boucles. Les détails sont une mauvaise manipulation de la pile, mais à grands traits, d'abord, la deuxième ligne remplit la pile en alternant entre un caractère d'entrée et min ( i , n ), où n est la longueur maximale et i est l'index du caractère dans l'entrée: pour "ormeau", 3, la pile ressemble à
Ensuite, la ligne 4 parcourt la pile de la même manière en sens inverse, pour obtenir le bout droit correctement plafonné:
Ensuite, la sixième ligne prend chaque paire caractère-numéro et imprime le caractère autant de fois que le nombre.
la source