Nous n'avons pas eu de question de chaîne depuis un moment (5 jours pour être précis), alors allons-y.
Étant donné une chaîne s
et un entier positif n
, prenez chaque n
élément de s
, répétez-le n
fois et remettez-le dans s
.
Par exemple, si n = 3
et s = "Hello, World!"
, chaque troisième caractère est Hl r!
. Vous répétez ensuite chaque caractère n
pour produire HHHlll rrr!!!
. Vous remplacez ensuite les lettres originales par les versions répétées pour produire le produit final deHHHellllo, Worrrld!!!
Vous devez accomplir cette tâche dans le code le plus court possible dans votre langue!
Règles
- Ceci est un code-golf donc le code le plus court en octets gagne
n
est garanti inférieur à la longueurs
et supérieur à 0- Le premier caractère
s
est l' endroit où lesn
caractères e sont tirés, et est toujours répétén
fois s
ne consistera qu'en ASCII imprimable (le code pointe0x20 (space)
vers0x7E (~)
)
Cas de test
s, n => output
"Hello, World!", 3 => "HHHellllo, Worrrld!!!"
"Code golf", 1 => "Code golf"
"abcdefghijklm", 10 => "aaaaaaaaaabcdefghijkkkkkkkkkklm"
"tesTing", 6 => "ttttttesTingggggg"
"very very very long string for you to really make sure that your program works", 4 => "vvvvery veryyyy verrrry loooong sssstrinnnng foooor yoooou toooo reaaaally makeeee surrrre thhhhat yyyyour proggggram workkkks"
s
comme un tableau de caractères?s
" <- est-ce une exigence stricte (écraser la chaîne d'origine) ou est-ce correct de simplement sortir le résultat final?Réponses:
Gelée , 3 octets
L'entrée est prise comme s, n .
Essayez-le en ligne!
Comment ça fonctionne
la source
E1 B8 A2 73 C3 97
Gelée ,
65 octets-1 octet grâce à Nun qui fuit (utilisez la multiplication de chaînes de Python.)
Un programme complet, acceptant deux arguments de ligne de commande, la chaîne et le nombre, et imprimant le résultat.
Essayez-le en ligne!
Comment?
la source
x
oublié×
; Merci.C3 97 4A 6D C2 A5 C2 A6
JavaScript (ES6), 46 octets
Prend une entrée dans la syntaxe de curry
(s)(n)
.Cas de test
Afficher l'extrait de code
la source
Proton , 44 octets
Essayez-le en ligne!
la source
C # (.NET Core) ,
8482 octetsEssayez-le en ligne!
la source
i++
et en le changeantn[i],i%m<1?m:1
enn[i],i++%m<1?m:1
.n=>m=>...
05AB1E ,
87 octets-1 octet grâce à @Emigna
Essayez-le en ligne!
Explication
la source
ôʒć²×ì?
}
vy
est un foreach, enε
est un autre. Curieusement,ε
cela ne fonctionne pas.PowerShell , 51 octets
Essayez-le en ligne!
Prend l'entrée comme un
char
tableau$a
et le nombre$n
. Boucles$a
et chaque itération sort soit la lettre courante$_
soit la lettre courante multipliée par$n
, basée sur un index dans un pseudo-ternaire. L'index choisit entre les deux en fonction de l'incrémentation$i
puis du modulo$n
. Ces lettres sont ensuite-join
rééditées ensemble et la chaîne est laissée sur le pipeline; la sortie est implicite.la source
Python 2 ,
5453 octetsEdit: 1 octet enregistré grâce à @Rod
Essayez-le en ligne!
la source
x[i]
et[1,n][i%n<1]
économiser un espaceAlice , 25 octets
Essayez-le en ligne!
Explication
la source
R ,
827675 octetsEssayez-le en ligne!
Une fonction; prend une chaîne
s
et un entiern
et imprime la version répétée sur stdout.Explication:
R , 55 octets
Essayez-le en ligne!
Même algorithme que ci-dessus, mais avec
S
une liste de caractères individuels.la source
Python 2 , 57 octets
Essayez-le en ligne!
la source
enumerate
serait-elle plus courte?range(len())
à la fin serait plus longPython 2 , 53 octets
Essayez-le en ligne!
la source
Japt , 8 octets
Testez-le en ligne!
Explication
Je dois créditer l'idée d'utiliser
ù
pour @Shaggy réponse de là . Je ne sais pas si j'y aurais jamais pensé moi-même ...la source
ë
lequel travailler , pour les caca et les rires, mais j'ai échoué lamentablement!J, 17 octets
(...) # ]
tout en parens crée la chaîne du verbe "copier" intégré à J. Ainsi, par exemple, si l'argument de gauche est 3, il crée la chaîne3 1 1
répétée au besoin pour égaler le nombre de caractères dans l'argument de droite]
, qui contient la chaîne. Autrement dit,#
résout le problème directement, en supposant que nous pouvons lui donner le bon argument de gauche:4
devrait être4 1 1 1
répété, etc.#@]$[,1#~<:@[
, nous voyons qu'il utilise le verbe en forme de J$
en au milieu - c'est le verbe principal de cette phrase ...$
est#@]
, ce qui signifie la longueur#
de l'argument de droite]
.$
est[,1#~<:@[
, un train de 5 verbes. Le premier train exécuté est ...1#~<:@[
, ce qui signifie 1 copié#~
(forme passive de copie) un de moins que<:
l'argument de gauche[
. Ce résultat est passé à la dernière fourche:[, ...
ce qui signifie prendre l'argument de gauche et ajouter le résultat que nous venons de calculer, qui est une chaîne de1
s.Essayez-le en ligne!
la source
]#~[^0=(|i.@#)
pour 14 octetsC # (.NET Core) , 61 + 18 = 79 octets
Essayez-le en ligne!
la source
Perl 5,
37, 29 +1 (-p) octets-8 octets grâce au commentaire de Tom.
Essayez-le en ligne
la source
$n=<>;
au lieu deBEGIN
bloquer et d'avoirn
sur la ligne d'entrée suivante et de remplacer$-[0]
par"@-"
puisque seul le premier nombre est évalué en comparaison. De plus, si vous saisissezn
via,-i
vous pouvez simplement utiliser$^I
au lieu de déclarer et d'utiliser$n
, mais comme ce n'est pas standard, il pourrait ne pas voler ... :)6502 routine de code machine , 50 octets
Il s'agit d'un sous-programme indépendant de la position qui attend un pointeur sur la chaîne d'entrée (terminée par 0, aka chaîne C) dans
$fb
/$fc
, un pointeur sur le tampon de sortie dans$fd
/$fe
et le nombre (n
) dans$ff
. Il utilise une indexation simple, il est donc limité à une longueur de sortie maximale de 255 caractères (+ 0 octet) en raison de l'architecture 8 bits.Explication (démontage commenté):
Exemple de programme de code machine C64 l'utilisant :
Il s'agit d'un programme en assembleur de style ca65 pour le C64 utilisant cette routine (importé en tant que
rep
):Démo en ligne
Utilisation:,
sys49152,"[s]",[n]
par exemplesys49152,"Hello, World!",3
Important: Si le programme a été chargé à partir du disque (comme dans la démo en ligne), lancez d'abord une
new
commande! Cela est nécessaire car le chargement d'un programme machine met à la corbeille certains pointeurs C64 BASIC.la source
Java 8,
10076 octets-24 octets grâce à @ OliverGrégoire .
Explication:
Essayez-le ici.
la source
n->s->{int i,k=0;for(char c:s)for(i=k++%n<1?n:1;i-->0;)System.out.print(c);}
(avec unchar[]
, au lieu deString
.)MATL ,
107 octets-3 octets grâce à Luis Mendo!
Essayez-le en ligne!
Prend comme entrée
n
etS
comme une matrice chaîne / char.la source
Haskell ,
5146 octetsMerci @Laikoni de m'avoir sauvé 5 octets!
Essayez-le en ligne!
Explication / Non golfé
L'opérateur
c <$ [a..b]
remplace chaque élément de la liste[a,a+1...b]
parc
- c'est donc juste un golfreplicate
:la source
Fusain , 14 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Prend entrée dans l'ordre
n
,s
.la source
V , 13 octets
Essayez-le en ligne!
Il s'agit d'une solution de contournement vraiment stupide.
òlhÀälÀlÀ<M-->l
devrait fonctionner, mais je ne peux pas pour la vie de me comprendre pourquoi, en particulier car cela manuellementlhÀälÀlÀ<M-->l
répété un certain nombre de fois fait le travail.Hexdump:
Explication:
la source
'l' for right
... Je suppose que c'est un truc de Vim qui reste? Sinon ... pourquoi ?l
raison dans vim. il peut être orthographiquement à l'envers, mais il est géométriquement correct:l
c'est la clé de la lettre la plus à droite de la rangée du milieu.Pyth , 12 octets
Essayez-le ici.
la source
Python 3 , 58 octets
Travailler sur le golf.
Je sais qu'il y a déjà d'autres réponses Python, mais je pensais que je posterais celle-ci aussi car elle est assez bonne par rapport aux autres, bien qu'elle soit une fonction complète et non un lambda.
Prend l'entrée comme paramètres de fonction et imprime vers
STDOUT
.Essayez-le en ligne!
Pour un octet de moins (57), j'ai codé un lambda, mais des réponses similaires ont déjà été publiées par d'autres utilisateurs:
la source
Brain-Flak (BrainHack) , 122 + 3 (
-A
) = 125 octetsJe suis sûr que c'est trop long, mais j'ai passé un bon moment à chercher et je n'ai trouvé aucune amélioration.
Essayez-le en ligne!
la source
05AB1E ,
1211 octetsEssayez-le en ligne!
Explication
la source
Mathematica, 71 octets
Essayez-le en ligne!
enregistré -2 octets en écoutant user202729
la source
Map
plusCharacters
peut être plus court.K (oK) ,
2319 octetsSolution:
Essayez-le en ligne!
Exemples:
Explication:
Remarques:
la source
Excel VBA, 71 octets
Fonction de fenêtre immédiate VBE anonyme qui prend les entrées de la plage
[A1:B1]
et les sorties vers la fenêtre immédiate VBE.la source