Mots guirlande
Un mot guirlande est un mot qui peut être relié comme une guirlande, car il se termine par les mêmes lettres qu'il commence par. Ces groupes de lettres peuvent même se chevaucher!
Par exemple, underground
est un mot d'ordre en guirlande 3
, car il commence et finit avec les mêmes 3 caractères und
,. Cela signifie qu'il pourrait être lié comme undergroundergrounderground...
.
alfalfa
est un mot de guirlande, aussi! C'est de l'ordre 4. Cela commence et se termine par alfa
. Il peut être enfilées comme ceci: alfalfalfalfa
.
Un processus que j'appelle garlandifying est le suivant: une fois que vous déterminez l'ordre n
d'un mot, vous prenez le mot d'origine et ajoutez le segment requis pour le faire boucler comme une guirlande n
. Donc, puisque onion
c'est un 2
mot d' ordre en guirlande, vous onion
prendriez, couperiez les premières 2
lettres pour en obtenir ion
et ajoutez cela à la fin des 2
temps à obtenir onionionion
.
Objectif
Créez un programme ou une fonction qui prend en entrée une entrée standard ou un argument de fonction et affiche ou renvoie le mot, garlandified.
Tous les mots seront en minuscule et l’ordre le plus élevé possible pour un mot est length(word) - 1
.
Exemple I / O
"onion" --> "onionionion"
"jackhammer" --> "jackhammer"
"abracadabra" --> "abracadabracadabracadabracadabracadabra"
"" --> ""
"zvioz" --> "zviozvioz"
"alfalfa" --> "alfalfalfalfalfalfa"
"aaaa" --> "aaaaaaa"
C'est le code-golf , donc le moins d'octets gagne.
Réponses:
Pyth,
19 à18 octetsEssayez-le en ligne: démonstration ou test de harnais
Explications:
la source
Python, 60 octets
J'espérais mieux, mais bon.
s.find
fonctionne parfaitement ici à la place denot s.startswith
.la source
Retina , 58 octets
Chaque ligne doit aller dans son propre fichier mais vous pouvez exécuter le code en tant que fichier unique
-s
indicateur.Les quatre paires de substitution font les choses suivantes:
order
nombre de caractères.order
temps .La chaîne indique pour l'exemple
onion
:la source
Haskell, 64 octets
Tests:
la source
Java,
160157 octetsEntrée sortie:
Espacés et tabulés pour plus de lisibilité:
Suggestions bienvenues.
la source
i=0;
?Sed:
8784 caractères(Code de 83 caractères + option de ligne de commande à 1 caractère.)
Échantillon échantillon:
la source
CJam,
2423 octetsJuste pour commencer avec quelque chose ..
Essayez-le en ligne ici
la source
Matlab:
978982 octetsFonction utilisant une expression régulière avec lookbehind et un groupe de capture:
Cette
sum
est nécessaire pour gérer l'entrée chaîne vide (convertir[]
en0
).Exemples:
la source
REGXY,
5349 octetsUtilise REGXY , un langage basé sur la substitution de regex
Présentation: Un certain nombre d'expressions régulières sont appliquées. Un exemple d'exécution ressemblerait à ceci:
Explication détaillée Vous trouverez ci-dessous une ventilation ligne par ligne des expressions rationnelles:
Il s'agit d'une substitution de regex qui correspond à la première chaîne vide (c'est-à-dire le début de la chaîne) et la remplace par tout ce qui se trouve à droite de la correspondance (
$'
) suivi d'un hachage. Par exemple, il se transformeraonion
enonion#onion
.Cette ligne recherche la section qui se chevauche en recherchant un groupe de caractères immédiatement avant le # (
(.+)
) qui sont identiques de l’autre côté du # (\1
). Le \ K signifie simplement "oublie que je ne correspondais à rien", ce qui signifie qu'il ne sera pas remplacé dans la substitution. Ceci signifie que nous ajoutons simplement un # à la position après que le chevauchement a été trouvé, se transformantonion#onion
enonion#on#ion
.Le 'a' initial est juste une étiquette pour la regex. Après cela, nous trouvons le premier # suivi d'un seul caractère (
.
) et capturons tout ce qui suit jusqu'au prochain # (.*#
). Nous remplaçons ceci par tout ce qui se trouve à droite du match, c'est-à-dire le dernier jeton ($ '), suivi d'un # ($1
), suivi du deuxième jeton moins un caractère (nous le traitons comme un compteur, en le diminuant à chaque itération). Dans le cas de l' oignon # sur # ion, les deux jetons que nous backreference sur sont indiqués entre parenthèses, et la section des matches entiers regex est entre les tuyaux:onion|(#)o(n#)|ion
. Nous remplaçons ensuite les bits que nous associons (entre les tuyaux) par$'
(tout à droite du match, c.-à-d. 'Ion'), puis $ 1 (le #), puis $ 2 (n #), ce qui signifie que nous nous retrouvons aveconion|(ion)(#)(n#)|ion
(parenthèses). les trois jetons dans la chaîne de remplacement).Si la regex ne correspond pas à la première alternance (tout ce qui précède le tube), nous devons avoir diminué notre compteur à zéro, ce qui signifie qu'il n'y a aucun caractère dans le deuxième jeton. , Nous regardons plutôt la deuxième partie du motif,
#.*
. Ceci remplace simplement tout après le premier # avec$'$1$2
. Comme il n'y a pas de références arrières créées par cette alternance et qu'il n'y a rien à droite du match (.*
correspond jusqu'à la fin de la chaîne), nous terminons la correspondance et retournons le résultat.Ceci est juste un pointeur sur la ligne précédente, assurant que nous continuons à exécuter la substitution de regex jusqu'à ce qu'elle ne corresponde plus.
la source
jq 1.5: 91 caractères
(Option de ligne de commande code 87 caractères + 4 caractères.)
Échantillon échantillon:
la source
rs ,
5148 octetsPRENEZ CELA, RETINA ET SED !!!!! ;)
Coupez 3 octets grâce à @randomra.
Démo en direct et cas de test.
Notez que le
jackhammer
cas de test n'est pas là. Il y a un bogue dans la gestion des espaces dans l'interface Web qui entraîne l'impression d'une sortie incorrecte. La version hors ligne ders
gère correctement.Version de 51 octets:
Démo en direct et cas de test pour l'original.
la source
JavaScript (ES6), 95 octets
Démo
Firefox uniquement pour l'instant:
la source
JavaScript (ES6), 82 octets
[Suppression de ma réponse initiale, car j'ai maintenant appris l'ES6 et je souhaitais trouver une solution récursive à ce défi.]
Exemple
la source
CoffeeScript + ES6, 77 octets
Même approche que ma réponse JavaScript.
la source
C
Golfé: 195 octets - GCC
la source
int
implicite dans C (versions suffisamment anciennes)?Groovy
755755 octetsC'est incroyable de voir comment revenir à quelque chose le lendemain peut aider
Ungolfed:
la source
Si quelqu'un a besoin du code dans JS pour le tester. Remarque: j'ai parcouru la chaîne de bout en bout pour augmenter l'efficacité:
la source