Hold up ..... ce n'est pas la traîne.
Contexte
Ces jours-ci sur YouTube, les sections de commentaires sont jonchées de tels modèles:
S
St
Str
Stri
Strin
String
Strin
Stri
Str
St
S
où String
est un simple espace réservé et fait référence à toute combinaison de caractères. Ces schémas sont généralement accompagnés d’un It took me a lot of time to make this, pls like
ou de quelque chose, et souvent le PO réussit à accumuler un certain nombre de goûts.
La tâche
Bien que vous ayez le talent pour accumuler des votes positifs sur PPCG grâce à vos talents de golfeurs charmants, vous n’êtes certainement pas le premier choix pour faire des remarques spirituelles ou faire référence aux memes dans les sections de commentaires de YouTube. Ainsi, vos commentaires constructifs faits en pensant délibérément ne rapportent que peu ou pas de «j'aime» sur YouTube. Vous voulez que cela change. Vous avez donc recours aux schémas clichés susmentionnés pour atteindre votre ultime ambition, mais sans perdre de temps à essayer de les écrire manuellement.
En termes simples, votre tâche consiste à prendre une chaîne, disons s
, et des 2*s.length - 1
sous-chaînes de sortie de s
, délimitées par une nouvelle ligne, de manière à respecter le modèle suivant:
(pour s
= "Bonjour")
H
He
Hel
Hell
Hello
Hell
Hel
He
H
Contribution
Une seule corde s
. Les valeurs par défaut de la communauté s’appliquent. Vous pouvez supposer que la chaîne d'entrée ne contiendra que des caractères ASCII imprimables.
Sortie
Plusieurs lignes séparées par une nouvelle ligne, constituant un motif approprié, comme expliqué ci-dessus. Les valeurs par défaut en sortie de la communauté s’appliquent. Les lignes vides de début et de fin (ne contenant ni caractères ni caractères ne pouvant être vus, comme un espace) dans la sortie sont autorisées.
Cas de test
Un cas de test multi-mots:
Input => "Oh yeah yeah"
Output =>
O
Oh
Oh
Oh y
Oh ye
Oh yea
Oh yeah
Oh yeah
Oh yeah y
Oh yeah ye
Oh yeah yea
Oh yeah yeah
Oh yeah yea
Oh yeah ye
Oh yeah y
Oh yeah
Oh yeah
Oh yea
Oh ye
Oh y
Oh
Oh
O
Notez qu'il existe des distorsions apparentes dans la forme de la sortie du cas de test ci-dessus (par exemple, la ligne deux et la ligne trois de la sortie semblent identiques). Ce sont parce que nous ne pouvons pas voir les espaces blancs de fuite. Votre programme n'a PAS besoin d'essayer de réparer ces distorsions.
Critère gagnant
C'est du code-golf , donc le code le plus court en octets dans chaque langue gagne!
YouTube Comments #1
dans le titre.""
-elle être ? Qu'en est-il d'un seul personnage comme"H"
? Si oui, quel devrait être le résultat pour ces deux cas?Réponses:
brainfuck , 32 octets
Essayez-le en ligne!
La même boucle est utilisée pour les deux moitiés du motif.
Explication:
la source
JavaScript (ES6), 36 octets
Essayez-le en ligne!
Commenté
la source
Unix (LF)
. Problème résolu une fois pour toutes. :)05AB1E (ancien) ,
43 octetsBarré
4
n'est plus 4 :)Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
Dans la nouvelle version de 05AB1E, et explicit
»
est requis après leη
, c’est pourquoi j’utilise la version héritée de 05AB1E ici pour enregistrer un octet.la source
\xce\xb7\x2e\xe2\x88\x8a
08 2e 17
, vous pouvez les exécuter et les vérifier avec l’--osabie
indicateur: tio.run/…IBM PC DOS, assemblage 8088,
4443Non assemblé:
Explication
Boucle
2 * input length - 1
pour chaque ligne. La fonction d'affichage de chaîne de l'API DOS (INT 21H,9
) écrit une$
chaîne -terminée à l'écran. Ainsi, à chaque boucle, le caractère situé après la dernière affichée est échangé avec le terminateur de fin de chaîne.Le compteur de boucle est comparé à la longueur de la chaîne. Si elle est supérieure (ce qui correspond à la partie ascendante de la sortie), la position chaîne / échange est incrémentée, sinon elle est décrémentée (en fait, il
-1-1+1
s'agit d'octets moins qu'une structure de branchement if / else).Programme exécutable autonome, prend la chaîne d'entrée à partir de la ligne de commande.
Sortie
Télécharger YT2.COM (43 bytes)
la source
SHR SI, 1
.Python 2 ,
6052 octetsEssayez-le en ligne!
Python 3.8 (pré-version) , 50 octets
Essayez-le en ligne!
la source
x:=s[:n]
.MATL , 8 octets
Essayez-le en ligne!
S'il vous plaît, comme cet article pour le smiley
:)
dans le code, cela m'a pris beaucoup de temps pour faire.la source
J , 11 octets
Fonction de préfixe tacite anonyme. Retourne une matrice de caractères complétée par des espaces.
Essayez-le en ligne!
]\
la liste des préfixes[:(
…)
Appliquer la fonction suivante à cette liste|.
la liste inverse,
préfixé avec}:
la liste restreinte (sans dernier élément)la source
[:(
et l'}:,|
air si triste…Perl 6 , 31 octets
Essayez-le en ligne!
Bloc de code anonyme qui prend une chaîne et retourne une liste de lignes.
Explication:
la source
Japt -R , 4 octets
Cumulative réduire sur une chaîne.
-1 octet grâce à @Shaggy
Essayez-le en ligne!
la source
-flag
ou <langue>-flag
. Aussi: | J'avais oublié que la réduction cumulative était une chose, je jure que j'ai sauté dessus chaque fois que je l'ai vue-flag
?Japt
-R
,97 octets-2 octets grâce à Shaggy
Essayez-le en ligne!
la source
Ã
est une chosePerl 5 (
-p
), 26 octetsTIO
la source
Haskell,
525044 octetsinstance Semigroup b => Semigroup (a -> b)
Essayez-le en ligne!
la source
inits
nécessite une importation pour que vous ayez besoin d'ajouterimport Data.List
ou quelque chose de similaire.import Data.List putStr.unlines.((++)<*>reverse.init).tail.inits
R ,
79656258 octetsEssayez-le en ligne!
-14 par la connaissance des fonctions supérieures de Giuseppe
-3 avec indexation plus propre
-4 grâce à Nick Kennedy et au déménagement de Giuseppe vers
scan
etwrite
Éviter les boucles (et
substr
) est bien.la source
sapply
-substring
fera ce que vous voulez (avec une ligne supplémentaire vide arrière), et pour 65 octets ! Je n'aurais certainement pas pensé àsubstring
si je n'avais pas vu votre bon usage d'substr
ici.scan
etwrite
? Seulement 59 octets!""
par1
.Gelée ,
5 à4 octets-1 octet grâce à @JonathanAllan !
Essayez-le en ligne! Je pense que ceci est ma deuxième réponse de gelée?
Je ne sais pas si c'est optimal.Je suis plus convaincu que c'est optimal. Retourne un tableau de lignes.Explication
Une autre approche, proposée par @JonathanAllan, consiste à
;\ŒḄ
réduire cumulativement (\
) la concaténation (;
), ce qui constitue un autre moyen de générer des préfixes.la source
Y
sur le code (je fais le pied de page soitÇY
ouÇŒṘ
d'éviter l' impression fracassant implicite d'un programme complet). Ceci est également implémenté;\ŒḄ
de la même manière que pour le même nombre d'octets (vous pouvez également transmettre l'argument comme"blah"
si Jelly l'interprétait comme une liste de caractères - le vôtre est en fait une liste de listes de caractères, comme vous le verrez si vous faites le pied de pageÇŒṘ
)Python 3.8 (pré-version) , 48 octets
Essayez-le en ligne!
Utilise des expressions d’affectation avec
:=
pour accumuler une liste de préfixes , puis de nouveau pour sauvegarder le résultat afin de concaténer son inverse (sans le premier caractère).Python 2 , 51 octets
Essayez-le en ligne!
Nous avons presque la bonne solution suivante de 45 octets, mais elle contient la chaîne d'origine deux fois et je ne vois pas de moyen court pour résoudre ce problème.
Essayez-le en ligne!
la source
print('\n'.join(f(s)))
?x=[s[:i+1]for i in range(len(s))];x+x[-2::-1]
s=input();x=[s[:i+1]for i in range(len(s))];print x+x[-2::-1]
. Voir les exemples en haut ici .Charbon de bois , 5 octets
Essayez-le en ligne! Le lien est vers la version verbeuse du code. Explication:
G
dessine un polygone rempli,^
spécifie que les côtés sont en bas à droite et en bas à gauche (le polygone se ferme alors automatiquement),Lθ
spécifie la longueur de ces côtés comme étant la longueur de l'entrée d'origine et la finθ
spécifie la chaîne de remplissage.la source
C # (compilateur interactif Visual C #) ,
123109948474 octetsSuppose que nous pouvons renvoyer un tableau de caractères (je crois que nous pouvons le faire, car un tableau de caractères est une représentation valide pour une chaîne et un tableau de chaînes est une représentation valide pour plusieurs lignes)
Essayez-le en ligne!
la source
Attaché , 15 octets
Essayez-le en ligne!
Assez simple.
Bounce
s (ajoute l'inverse sans le centre) lePrefixes
de l'entrée.Alternativement, 21 octets:
Bounce@{_[0..0:~-#_]}
réimplémentation du préfixe.la source
Brachylog (v2), 6 octets
Essayez-le en ligne!
Fonction de soumission, renvoyant un tableau de lignes. Librement basé sur @ réponse de Fatalize .
Explication
L'ordre de départage est défini ici par le
⊆
, qui, lorsqu'il est utilisé avec ce modèle d'écoulement, préfère la sortie la plus courte possible, lié au départ en plaçant les éléments donnés le plus tôt possible . Le résultat le plus court possible correspond à ce que nous voulons ici (car il n’est pas possible d’avoir des préfixes en double), et placer les éléments donnés (c’est-à-dire les préfixes) le plus tôt possible les placera dans la première moitié (arrondi) du sortie. Etant donné que nous exigeons également qu'ils soient placés dans le même ordre, nous obtenons exactement le modèle dont nous avons besoin même si la description que nous avons donnée à Brachylog est très générale. les égalités se passent exactement comme prévu, ce qui amène Brachylog à choisir le résultat souhaité plutôt qu’un autre résultat conforme à la description.la source
PowerShell,
89 ans8766 octets-2 octets grâce à @AdmBorkBork
Essayez-le en ligne!
En fait, cela n'a pas fonctionné comme spécifié auparavant, désolé pour ça! Je l'ai édité et j'ai également réussi à supprimer quelques octets.
la source
--$d
au lieu de($d-1)
sauver un couple à la fin.PowerShell , 46 octets
Essayez-le en ligne!
PowerShell , 42 octets (spécial YouTube, sale)
On sait que la longueur maximale d'un commentaire sur youtube est de 10 000 caractères. Ok, utilisez ceci comme limite supérieure.
Essayez-le en ligne!
la source
APL (Dyalog Unicode) , 9 octets SBCS de
Fonction de préfixe tacite anonyme. Renvoie la liste des chaînes.
Essayez-le en ligne!
,\
la liste des préfixes (lit, la concaténation cumulée)(
…)
Appliquez la fonction suivante à cette liste:⌽
la liste inversée1↓
déposer le premier article,
ajouter⊢
la liste non modifiéela source
Ruby ,
514240 octetsEssayez-le en ligne!
Merci à Doorknob pour -2 octets.
la source
...
par,
JavaScript (Node.js) , 90 octets
Cela peut probablement être joué beaucoup plus, Arnauld a déjà une façon plus courte mais je me suis amusé au moins!
Essayez-le en ligne!
la source
SNOBOL4 (CSNOBOL4) , 118 octets
Essayez-le en ligne!
Il semble y avoir un bogue dans cette implémentation de SNOBOL; tenter de remplacer l'étiquette
D
par l'étiquette2
provoque une erreur, bien que le manuel de Vanilla SNOBOL indique que (non souligné dans l'original)Ma supposition est que l'interpréteur CSNOBOL ne prend en charge qu'une seule étiquette commençant par un entier.
la source
APL + WIN, 31 octets
Invites pour l'entrée de chaîne:
Explication:
la source
F # (.NET Core) ,
67 à61 octetsEssayez-le en ligne!
L'entrée est un
string
et la sortie est unseq<string>
Une autre solution pourrait consister
let f(s:string)=for i=1 to s.Length*2-1 do printfn"%s"s.[..s.Length-abs(i-s.Length)-1]
en 80 octets ... Je ne suis pas sûr que cela vaille la peine d'être examiné.la source
sed ,
3135 octetsEssayez-le en ligne!
Explication
Au début de chaque itération de la boucle, l'espace de modèle est une "partie centrale" de la sortie souhaitée, et chaque boucle ajoute une copie abrégée en haut et en bas.
la source
sed
. Même chose sur TIO. Quellesed
implémentation utilisez-vous et comment vous passez l’entrée? (BTW, changer le remplacement pour les/.\n.*\|.$//
sed
implémentation (avec GNU version 4.2.1), je n'ai tout simplement pas remarqué le bogue. J'ai joué avec d'autres correctifs et je ne trouve rien qui ajoute moins de quatre octets. J'adopte donc votre correctif, merci.Python 2 ,
13110084 octetsMa première réponse sur Code Golf!
-47 octets au total grâce à @ SriotchilismO'Zaic
Essayez-le en ligne!
la source
;
s au lieu de nouvelles lignes pour éviter l'indentation. Aussi pas besoin d'espaces entreprint
et''
a
une chaîne plutôt qu'une liste, vous n’avez plus besoin de lajoin
et vous pouvez simplementprint a
.x
.J , 12 octets
Essayez-le en ligne!
Encore 1 octet de plus que celui d'Adam
K (oK) ,
12 à11 octets-1 octet grâce à ngn
Essayez-le en ligne!
la source
{x,1_|x}@,\