Contribution:
- Une chaîne (l'extrait de vague) d'une longueur
>= 2
. - Un entier positif n
>= 1
.
Sortie:
Nous émettons une onde unifilaire. Nous faisons cela en répétant la chaîne d'entrée n fois.
Règles du défi:
- Si le premier et le dernier caractère de la chaîne d'entrée correspondent, nous ne le sortons qu'une seule fois dans la sortie totale (c'est
^_^
-à- dire que la longueur 2 devient^_^_^
et non^_^^_^
). - La chaîne d'entrée ne contiendra aucun espace / onglet / nouvelle ligne / etc.
- Si votre langue ne prend pas en charge les caractères non ASCII, c'est bien. Tant qu'il répond toujours au défi avec une entrée d'onde ASCII uniquement.
Règles générales:
- C'est le code-golf , donc la réponse la plus courte en octets l'emporte.
Ne laissez pas les langues de golf de code vous décourager de publier des réponses avec des langues autres que le golf de code. Essayez de trouver une réponse aussi courte que possible pour «n'importe quel» langage de programmation. - Des règles standard s'appliquent à votre réponse, vous êtes donc autorisé à utiliser STDIN / STDOUT, des fonctions / méthodes avec les paramètres appropriés, des programmes complets. Ton appel.
- Les failles par défaut sont interdites.
- Si possible, veuillez ajouter un lien avec un test pour votre code.
- Veuillez également ajouter une explication si nécessaire.
Cas de test:
_.~"( length 12
_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(
'°º¤o,¸¸,o¤º°' length 3
'°º¤o,¸¸,o¤º°'°º¤o,¸¸,o¤º°'°º¤o,¸¸,o¤º°'
-__ length 1
-__
-__ length 8
-__-__-__-__-__-__-__-__
-__- length 8
-__-__-__-__-__-__-__-__-
¯`·.¸¸.·´¯ length 24
¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯
** length 6
*******
String & length of your own choice (be creative!)
>= 1
" me semble un peu pléonastique ... :)Réponses:
Pyke,
151410 octetsEssayez-le ici!
la source
Python 3, 32 octets
Concatène les
n
copies de la chaîne, supprimant le premier caractère de toutes les copies, mais le premier si le premier caractère correspond au dernier.la source
s[0]
ets[-1]
semble se référer au premier et dernier octet, plutôt qu'au premier et dernier caractère. Edit: ah, attendez, c'est Python 2 contre Python 3. Cela fonctionne correctement dans Python 3.05AB1E , 13 octets
Utilise l' encodage CP-1252 .
Essayez-le en ligne!
Explication
-___-
et3
utilisé comme entrée par exemple.la source
JavaScript (ES6), 47 octets
la source
s=>n=>...
au lieu de(s,n)=>
Perl, 29 octets
Code de 28 octets + 1 pour
-p
.Merci à @Dada de m'avoir aidé à raser quelques octets!
Usage
Exemple en ligne.
la source
<>
au lieu de$'
car cela vous permet de vous en débarrasser-0
. Et puis vous pouvez utilisers///e
au lieu de//;$_=
gagner un octet de plus :-)$
pour correspondre à la fin, cela me fait encore économiser des octets ne pas utiliser'
signifie que je peux le supprimer en le sauvegardant dans un fichier pour enregistrer en ajoutant 3 pour-p
et le ramener à 1!$
de la nouvelle ligne que vous aviez auparavant. (Désolé mon commentaire n'était pas très détaillé, j'étais pressé ...)<>
dans la chaîne de remplacement. Mais sin
est séparé par un espace au lieu d'une nouvelle ligne, le nombre de caractères peut être réduit un peu:s/(.+?) (\d+)/$1x$2/e
Perl, 23 octets
Comprend +1 pour
-p
Donnez la chaîne d'entrée suivie du numéro sur des lignes distinctes sur STDIN
wave.pl
:Si le premier caractère du mot n'est pas un caractère spécial regex, cette version de 22 octets fonctionne également:
la source
/g
modificateur quand vous l'avez collé ;-)MATL,
191714 octetsCela fonctionne pour ASCII sur l'interpréteur en ligne et pour unicode et ASCII lorsqu'il est exécuté à l'aide de MATLAB.
Essayez-le en ligne!
Explication
la source
Rétine , 29 octets
Les lignes 2 et 5 ont un espace de fin.
Essayez-le en ligne! (La première ligne active une suite de tests séparés par un saut de ligne.)
la source
Lot, 117 octets
Prend le nombre de répétitions comme paramètre de ligne de commande et lit la chaîne depuis STDIN.
la source
Pyth, 13 octets
Suite de tests!
Explication à suivre.
la source
Gema, 41 personnages
Exemple d'exécution:
la source
PowerShell v2 +, 48 octets
Génère une fois la chaîne entière, suivie de n-1 copies de la chaîne ou de la sous-chaîne, selon que les premier et dernier caractères correspondent.
La
.Substring()
méthode sort de l'index fourni à la fin de la chaîne, donc si$s[0]-eq$s[-1]
évalue à false (0), nous obtenons la chaîne entière. Si cette affirmation est vraie (1), nous obtenons la sous-chaîne à partir du deuxième caractère.la source
VBA 119 octets
Nouveau dans ce jeu et vba gagne avec les octets les plus élevés: P
PS: je ne peux pas croire que vba soit proche de JAVA HAHA
Explication:
la source
CJam,
1615 octetsEssayez-le en ligne
Explication:
la source
K, 12 octets
Merci
la source
{,/y#,$[(*x)~*|x;-1;0]_x}
pour 25 octets gère la première / dernière correspondance. Si vous êtes heureux d'enfreindre la règle 1, vous pouvez en avoir{,/y#,x}
pour 8.PHP, 72 octets
avec PHP 7.1, il pourrait être réduit à 65 octets
la source
Pip , 18 octets
Solution Regex, profitant de la règle "pas d'espaces en entrée". Prend la chaîne de stdin et le nombre comme argument de ligne de commande.
Essayez-le en ligne!
Explication:
Ainsi, se
a b
transforme enab
, sea a
transforme ena
et l'espace à la fin de la chaîne est supprimé. Le résultat est ensuite imprimé automatiquement.la source
Haskell, 59 octets
Version non golfée:
la source
Java 10,
123111109 10910710210079 octetsEssayez-le en ligne.
Alternative avec le même nombre d'octets ( 79 octets ):
Essayez-le en ligne.
Je vais bien sûr essayer de répondre à ma propre question. ;)
-5 octets grâce à @ dpa97 .
-21 octets conversion de Java 7 à 10.
Explication:
la source
.split
.s.substring(1)
est deux octets plus court. ;)Javascript ES6, 49 caractères
Tester:
la source
QBIC , 65 octets
Je suppose que je devrais ajouter LEFT $ et RIGHT $ au QBIC ...
Explication:
la source
C #, 79 octets
Un peu une méthode absurde pour répéter une chaîne. Créez une nouvelle chaîne de la longueur de répétition souhaitée, puis remplacez chaque caractère par la chaîne à répéter. En dehors de cela, cela ressemble à peu près à la même stratégie que beaucoup d'autres.
la source
x
? Il serait peut-être préférable de changer cela en espace, car " La chaîne d'entrée ne contiendra aucun espace / tabulation / nouvelle ligne / etc. ".x
. Il crée d'abord laxx...x
chaîne, puis remplace chacunx
sans réévaluer la chaîne depuis le début avec ce qui doit être remplacé.SpecBAS - 68 octets
Utilise inline-
IF
pour vérifier si les premier et dernier caractères sont identiques. Sinon, imprimez len
nombre de fois de la chaîne . Sinon, épissez la chaîne à la longueur 1, répétez cela et mettez le dernier caractère à la fin.Ne peut accepter que des caractères ASCII (ou des caractères intégrés dans SpecBAS IDE)
la source
APL, 19 octets
Usage:
Explication:
⊃⍺=⊃⌽⍺
: voir si le premier caractère correspond au dernier caractère⍺↓⍨
: si tel est le cas, supprimez le premier caractère⊂
: joindre le résultat⍵⍴
: le reproduire⍵
fois1↓
: déposez le premier (c'est plus court que(⍵-1)⍴
)∊
: récupérez tous les éléments simples (défaites la boxe)⍺,
: ajouter une instance de la chaîne entière au débutla source
Postscript, 98 octets
... mais vous pourriez avoir besoin d'un "flush" collé dessus pour que votre interprète PS vide le tampon de communication, six autres octets :(
la source
Lisp commun (LispWorks), 176 octets
Usage:
Explication:
Ungolf:
la source
Vim, 17 octets
Le moyen le plus simple consiste à utiliser une expression rationnelle de référence arrière qui peut déterminer si les premier et dernier caractères correspondent. Mais les longues expressions régulières sont longues. Nous n'en voulons pas.
L'onde à répéter est dans le tampon. Je suppose que le nombre à répéter est dans le registre
"a
(tapezqaNq
avec N comme nombre pour le configurer). L'idée est:Ensuite,
P
le texte supprimé@a
fois.lDg*
: Cette manœuvre crée un regex qui correspond à n'importe quel premier caractère, qu'il soit échappé ou non, que ce soit un mot ou non. (*
serait suffisant pour créer l'expression rationnelle correctement échappée, mais ajouterait des\<\>
déchets indésirables s'il s'agissait d'un mot, comme_
.)p^
: La dernière étape était en désordre. Nettoyez à la position d'origine, au début de la ligne.v$
: En mode visuel,$
se déplace par défaut après la fin de la ligne.?<C-P>$<CR>hd
: Si la regex précédente existe à la fin de la ligne, cette recherche se déplacera vers elle; sinon, restez au-delà de la fin de la ligne. Déplacez-vous à gauche à partir de là et nous accomplissons la suppression (fastidieuse) dont nous avons besoin.@aP
: Exécutez la répétition numérique sous forme de macro à utiliser comme argumentP
.la source
Rubis, 38 octets
Je pense que c'est assez explicite. Je me demande toujours s'il existe un moyen plus concis de représenter le
s[0..-2]
bloc, mais je ne l'ai pas encore trouvé.la source
Java (117 octets)
la source
b>0;b--
au golfb-->0;
. Aussi, pourquoib+
y en a-c+=b+a.substring
t- il ? Pourtant, c'est une excellente première réponse si vous l'avez trouvé indépendamment. Bon séjour ici sur PPCG! :) Vous pouvez également trouver des conseils pour jouer au golf à Java intéressants.