Créez un programme qui prend le mot que vous avez entré et ajoute ce mot à l’arrière de lui-même moins sa première lettre, puis se répète jusqu’à ce que toutes les lettres aient disparu. Par exemple, cat
deviendrait catatt
et hello
deviendrait helloellolloloo
.
Entrez l’
une des 26 lettres de l’alphabet anglais. Il peut y avoir plusieurs mots séparés par des espaces, et le changement doit être appliqué à chaque mot.
Sortie
Le (s) mot (s) saisi (s), chaque mot étant suivi de sa première lettre, puis de sa deuxième lettre, et ainsi de suite jusqu'à ce qu'il ne reste plus aucune lettre à ajouter.
Plus d'exemples:
ill eel
les sorties illlll eelell
laser bat
les sorties laserasersererr batatt
darth vader
les sorties dartharthrththh vaderaderdererr
C'est le code de golf, donc le code le plus court gagne.
Précision:
vous pouvez traiter l’entrée ou la sortie comme une liste. Vous pouvez séparer les mots en utilisant une nouvelle ligne au lieu de l’espace. Vous pouvez ajouter un espace de fin à l'entrée.
1.
Veuillez mettre à jour les spécifications avec les nouvelles allocations (E / S de tableau, espace de fin, etc.).2.
Veuillez informer les solutions existantes au cas où l'une d'entre elles pourrait économiser des octets en en tirant parti.Réponses:
Japt
-m
,63 octetsL'entrée et la sortie sont des tableaux de mots.
L'essayer
Explication
la source
£
deux octets en UTF-8?brainfuck ,
6056 octetsEssayez-le en ligne!
Requiert un espace de fin et imprime un espace de début. Les deux peuvent être contournés, mais cela aboutit à 112 octets .
Explication
la source
Haskell,
3621 octetsEssayez-le en ligne!
Edit: -15 octets, à cause du nouveau format IO (liste de mots au lieu de mots séparés par des espaces)
la source
scanr (:) ""
partails
.import Data.List
qui ajoute 17 octets à la partition.Perl
-p
,362523 octetsEssayez-le en ligne!
Ceci est un simple regsub. Tout d'abord, il correspond à toutes les limites de mots ou aux caractères non-espaces:
Notez que chacune de ces correspondances doit être remplacée par le reste du mot:
Nous pouvons accomplir cela avec la variable spéciale
$'
, qui stocke la partie de la chaîne après la correspondance. Cependant, nous devons y appliquer le regsub imbriqués/ .*//
, qui supprime tout ce qui se trouve au-delà du premier espace$'
, afin de supprimer les mots restants dans l'entrée.Merci à @nwellnhof pour 2 octets.
la source
[^ ]
avec\S
.Python 3 , 49 octets
Essayez-le en ligne!
Cela tire parti du fait que
"".split()
retourne un tableau vide, ce qui sert de contrôle pour le cas de base dans la récursivité.la source
Gelée , 3 octets
Essayez-le en ligne!
Vous n'avez plus besoin du
K
s puisque l'entrée / sortie du tableau est maintenant autorisée.la source
ḊƬẎ)
(ouḊƬF)
, si vous préférez).APL (Dyalog),
199 octets{⌽∊,\⌽⍵}¨
grâce à @ H.PWiz pour avoir fait du jogging dans mon cerveau
Cela fonctionne car toutes les chaînes dans APL sont des tableaux de caractères.
TIO
la source
JavaScript (ES6), 33 octets
Enregistré 1 octet grâce à @ShieruAsakoto
Format I / O: tableau de mots.
Essayez-le en ligne!
JavaScript (ES6), 35 octets
Format I / O: tableau de mots.
Essayez-le en ligne!
la source
s=>s.replace(/\S+/g,g=s=>s&&s+g(s.slice(1)))
$'
(ou$<backtick>
).R ,
827567 octetsEssayez-le en ligne!
Plusieurs octets sauvés grâce à JayCe
Séparer la sortie avec des nouvelles lignes.
L'
sapply(...)
expression génère un vecteur matrice / colonne des sous-chaînes appropriées, en complétant""
si nécessaire.write
affiche ensuite les éléments de la matrice,y
par ligne, en les séparant par""
.la source
...substring,1:1e6,1e6)...
ou similairebrainfuck ,
9493 octetsEssayez-le en ligne!
.[-]>[.>]<[<]>
to[.>]<[<]>[-]>
.Explication
Essayez-le en ligne!
Attribution
La collection constante de brainfuck d'Esolang a été utilisée pour la charge d'espace initiale.
la source
05AB1E , 5 octets
Essayez-le en ligne!
Explication
la source
í€ηJí
(puisque les préfixes est un codet intégré de 1 octet au lieu de 2 octets comme les suffixes; nécessite toujours une inversion inversée mais au début, le nombre d'octets reste donc 5).Vim , 47 octets (38 touches)
Commencez avec votre entrée comme seule ligne dans un tampon Vim.
Explication
Cela met chaque mot sur sa propre ligne, itère sur chaque ligne, puis les rejoint tous. Se casse si les mots contiennent plus de 99 caractères ou si votre saisie en contient plus de 99.
:s/<Space>/\r/g<CR>
remplace les espaces par de nouvelles lignes (\r
)gg
positionne le curseur au début de la première ligneqa
commence l'enregistrement de la macro a :yw
tire le reste du motP
le met derrière le curseurlx
supprime la première lettre de ce dernier motq
arrête d'enregistrer une macroqb
commence l'enregistrement de la macro b :99@a
macro exécute un quatre-vingt-neuf fois (introduit la limite de caractères)j0
positionne le curseur au début de la ligne suivanteq
arrête d'enregistrer la macro b99@b
exécute la macro b quatre-vingt-dix-neuf fois (introduit la limite de mots)gg
positionne le curseur sur la première ligne99J
joint les 99 lignes suivantes avec des espaces (limite de mot à nouveau)Pour 2 autres octets (2 touches), vous pouvez étendre la limite de mots à 999. 4 autres octets, 9999, etc.
la source
Husk ,
64 octets-2 octets grâce à Jonathan Allan (en prenant la liste comme entrée)!
Essayez-le en ligne!
Explication
Prend l'entrée en tant que liste de chaînes et mappe la fonction suivante:
la source
Retina 0.8.2 , 15 octets
Essayez-le en ligne! Remarque: espaces de fin. Explication:
Split sur des espaces.
Ajoutez son suffixe à chaque lettre. Les
%
moyens que nous obtenons que le suffixe du mot.Rejoindre avec des espaces.
la source
Pepe ,
167153 octetsEssayez-le en ligne!
la source
Code d'assemblage 16 bits x86, 24 octets
Appel avec si = pointeur sur la chaîne source, di = pointeur sur le tampon de sortie.
La chaîne source nécessite un octet nul pour la terminer.
Le code est le même en 16, 32 ou 64 bits (si / di devient soiti / edi ou rsi / rdi).
Le code 32 bits a une taille plus grande de deux octets en raison de l'appel étendu.
Le code 64 bits est encore plus grand de trois octets, car les augmentations / diminutions de rsi / rdi attirent un préfixe (mais si on sait qu'elles se trouvent dans un espace mémoire de 32 bits, elles peuvent être à nouveau esi / edi pour éviter cette pénalité) .
la source
MATL ,
1816 octetsL'entrée est un tableau de mots de cellules. Essayez-le en ligne!
Explication
la source
K4 / K (oK) , 9 octets
Solution:
Essayez-le en ligne!
Explication:
la source
C ++ (clang) , 174 octets
Essayez-le en ligne!
C'est ma première soumission, et je ne savais pas si retourner de la chaîne au lieu de l'imprimer était correct :)
la source
return w!=""?
peut l'êtrereturn""!=w?
.Stax , 3 octets
Exécuter et déboguer
Explication:
la source
Charbon de bois , 14 octets
Essayez-le en ligne! Remarque: espace de fuite. Le lien est vers la version verbeuse du code. Explication:
la source
C (gcc) , 79 octets
Essayez-le en ligne!
la source
Pip
-s
, 11 octetsPrend la liste de mots séparés par des espaces de stdin. Essayez-le en ligne!
Explication
la source
Ruby , 42 octets
Essayez-le en ligne!
la source
Python 2 , 63 octets
Essayez-le en ligne!
la source
Toile , 6 octets
Essayez-le ici!
5 octets avec un format de sortie fou
la source
C #,
11190 octetsEssayez-le en ligne!
En modifiant les entrées et les sorties en tableaux, j'ai économisé quelques octets:
Essayez-le en ligne!
la source
K (oK) ,
17 à13 octetsEssayez-le en ligne!
Préfixe fonction anonyme; L'entrée est considérée comme une liste de chaînes, qui sont à leur tour des listes de caractères.
Merci @streetster pour 4 octets.
Comment:
la source
{|,/,\|x}'
Common Lisp , 179 octets
Essayez-le en ligne!
Ceci est mon premier essai au golf, toutes les modifications sont les bienvenues
la source
car
au lieu defirst
etcdr
au lieu derest
continuer à jouer au golf votre soumission.Lua , 70 octets
Essayez-le en ligne!
Explication
Les arguments dans Lua sont stockés dans la table à
arg
partir de l'index 1. L'opérateur unaire#
retourne la taille de la table et la fonctions:sub(a,b)
renvoie une sous-chaîne basée sur une chaînes
délimitée par des entiersa
etb
, si b n'est pas passé, il retournera le reste de la chaîne.Je devais utiliser
io.write()
au lieu d'print()
éviter les sauts de ligne, et ajoutéprint()
à la fin pour la raison opposée.la source