Récit
Avez-vous vu ce post de 9gag ? Vous avez peut-être le sentiment de faire vos propres phrases. Mais alors vous vous rendez compte que vous pourriez simplement jouer un script en une demi-heure, et vous n'aurez jamais à vous en occuper.
La soumission
Votre programme recevra une chaîne d'entrée qu'il renverra avec des guillemets ajoutés comme expliqué ci-dessous. Les failles standard sont interdites. La sortie sous forme de liste de lignes est autorisée. Les espaces de fin et les lignes vides qui ne cassent pas la sortie sont autorisés.
Les règles de saisie
- L'entrée contient uniquement des caractères ASCII imprimables.
- L'entrée peut contenir des espaces. Les mots sont déterminés avec eux.
- Il est garanti qu'un espace ne sera jamais suivi d'un autre espace.
- Le cas d'aucune entrée ou chaîne vide n'a pas d'importance.
Les règles de sortie
Si un mot est donné, le programme doit renvoyer la chaîne entre guillemets.
Si la chaîne d'entrée contient 2 mots ou plus, elle renvoie d'abord l'entrée initiale, mais le premier mot est entre guillemets. Ensuite, sur la ligne suivante, il renvoie l'entrée initiale, mais avec le deuxième mot entre guillemets. Et ainsi de suite pour les mots restants.
En général, le programme doit renvoyer autant de lignes qu'il y a de mots dans l'entrée.
Exemples:
test -> "test"
This is codegolf -> "This" is codegolf
This "is" codegolf
This is "codegolf"
This is a significantly longer, but not the longest testcase -> "This" is a significantly longer, but not the longest testcase
This "is" a significantly longer, but not the longest testcase
This is "a" significantly longer, but not the longest testcase
This is a "significantly" longer, but not the longest testcase
This is a significantly "longer," but not the longest testcase
This is a significantly longer, "but" not the longest testcase
This is a significantly longer, but "not" the longest testcase
This is a significantly longer, but not "the" longest testcase
This is a significantly longer, but not the "longest" testcase
This is a significantly longer, but not the longest "testcase"
Here is an another one -> "Here" is an another one
Here "is" an another one
Here is "an" another one
Here is an "another" one
Here is an another "one"
C'est le code-golf , donc la réponse du moindre octet gagne!
"
caractères?''
,‘’
ou“”
plutôt que""
?Réponses:
vim, 38 octets
Essayez-le en ligne!
Nécessite le plugin vim-surround .
Si l'entrée ne contient pas de
"
caractères, cela peut être fait en 19 octets :Ici, nous enregistrons une macro récursive (
qq ... @qq@q
) qui entoure un mot avec des guillemets (ysW"
), duplique la ligne (Yp
), supprime les guillemets (ds"
) et passe au mot suivant (W
) avant de s'appeler récursivement. Après sa fin, il y a deux lignes superflues, qui sont supprimées avecdk
.La solution complète enveloppe simplement cela
:s/"/<C-d>/g
au début, qui remplace les"
caractères existants par un caractère non imprimable, et:%s/<C-d>/"/g
à la fin, ce qui annule le remplacement.la source
Haskell, 65 octets
Renvoie une liste de lignes.
Essayez-le en ligne!
la source
\n
comme des espaces, ils ne se comportent pas correctement lorsqu'ils sont présents.~
. "L'entrée peut contenir des espaces" - pas "des espaces".Retina 0.8.2 , 17 octets
Essayez-le en ligne! Le lien inclut une suite de tests. Explication:
Développez chaque espace en dupliquant la ligne, puis en insérant des guillemets.
Fixez les première et dernière lignes.
la source
Gelée ,
1514 octetsEssayez-le en ligne!
Comment?
la source
JavaScript (ES6),
43 42 4138 octetsSauvegardé 3 octets grâce à @mazzy
Utilise le non standard mais largement pris en charge
RegExp.leftContext
etRegExp.rightContext
. C'est beaucoup de citations différentes ...Essayez-le en ligne!
la source
This is a significantly "longer,"...
/(\S+)/g
marcherait pas ?Java,
235183132octets-52 octets en abusant d'une variété de choses (accès statique, liste vs tableau, imprimer au lieu de retourner, etc. Merci @ValueInk!)
-51 octets par beung paresseux et laisser @KevinCruijssen faire le travail pour moi
Essayez-le en ligne
la source
java.util.Arrays.copyOfRange
. Si vousjava.util.List
utilisez, vous pouvez utilisersubList
pour plus court et imprimer sur STDOUT au lieu de construire un tableau. J'ai obtenu 193 octets avec ces idées, et j'ai également abusé du mot-clé var.String.join
pars.join
pour ces avertissements IDE supplémentaires (et -10 octets).J'espère que ce n'est pas terrible
Kotlin,
105112147117 octets / caractèresEssayez-le en ligne!
la source
05AB1E , 14 octets
Essayez-le en ligne!
+1 octet (et cela fonctionne pour le cas de bord) grâce à Emigna. -1 octet merci à Kevin!
la source
ð¡
pour gérer des entrées telles quetest
.»
.JavaScript,
91977578 octetsGénère une liste de lignes sous forme de tableau JavaScript. La dernière entrée a un espace de fin comme autorisé dans la question. Le code de test écrit chaque entrée dans la console sur une ligne distincte à des fins de démonstration.
Grâce à Shaggy pour 19 octets de moins et aucun espace de tête - lorsque l'opérateur de propagation est utilisé sur un tableau vide pour initialiser un littéral de tableau, aucun emplacement n'est créé dans le tableau produit par l'opérateur de propagation:
(La version 91 octets avait un espace de tête sur la première ligne, la version 97 octets prenait 6 octets pour le supprimer.)
la source
f
fonction. Autrement vérifié. Bon travail!Python 3 ,
79,69, 65 octetsEssayez-le en ligne!
Rasé de 10 octets grâce à xnor. Et maintenant, c'est 65 octets selon Erik la solution Outgolfer. Le programme se termine avec IndexError mais c'est très bien.
la source
print(*l)
en Python 3 à la place deprint(" ".join(l))
.w
àinput().split()
, attribuez-le àinput()
, puis, dans lawhile
boucle, attribuezm
àw.split()
, ce qui créera une nouvelle liste à chaque itération pour éviter les problèmes de référence, puis définissezm[i]
sur'"%s"'%m[i]
etprint(*m)
.Java 8,
72716762 octetsEssayez-le en ligne.
Explication:
Explication de l'expression régulière:
la source
Rubis avec
-an
, 53 octetsLes drapeaux
-an
sont lus sur chaque ligne et divisés en$F
.Essayez-le en ligne!
la source
Rubis , 98 caractères.
Première soumission jamais. Cela peut certainement être raccourci. Je voulais juste obtenir une réponse rapidement.
Essayez-le en ligne!
la source
s.split
tant que variable et modifier l'index que vous souhaitez avoir les guillemets autour, au lieu d'utiliser le trop verbeuxeach_with_index.map
. En outre, vous pouvez soumettre le lambda anonyme sans le nommer et la jointure peut être remplacée par un*
opérateur. Cela réduit votre nombre d'octets à 64 octets.Perl 6 ,
4340 octetsEssayez-le en ligne!
Correspond à tous les mots possibles, puis joint chaque liste par des guillemets. Cela pourrait être un octet plus court si nous pouvions produire des lignes dans l'ordre inverse.
Explication:
la source
Réflexions , 229 octets
Essaye-le!
J'ai "rapidement" "joué au golf" dans une langue "drôle" de "golf".
En regardant tout cet espace, il pourrait probablement être plus court.
la source
Haskell , 64 octets
Essayez-le en ligne!
Génère une liste de chaînes. Basé sur la réponse de Nimi .
la source
\n
ou"
.Stax , 10 octets
Exécuter et déboguer
Déballé, non golfé et commenté, il ressemble à ceci.
Exécutez celui-ci
la source
C (gcc) ,
136133octetsComme les fonctions de tokenisation de C gâcheraient la chaîne lors des lectures futures, je calcule plutôt le nombre et les décalages pour chaque mot, puis je termine lorsque le nombre total d'itérations de la boucle externe correspond au nombre de mots.
Essayez-le en ligne!
la source
"\""+!!(i-++j)
dei-++j?"":"\""
vous fait économiser un octet.PowerShell ,
604036 octets-20 octets inspirés par Arnauld
Essayez-le en ligne!
Le résultat a un espace supplémentaire et une ligne vide dans la queue.
Powershell, pas d'expression régulière, 60 octets
Essayez-le en ligne!
Moins golfé:
la source
The input only contains printable ASCII characters.
, 2.The input may contain spaces
. Tabs and other whitespace is not printable ASCII, is not it? :)JavaScript, 62 bytes
Thanks @Shaggy for golfing off 10 bytes
Explanation
la source
Java (JDK), 104 bytes
Try it online!
la source
R,
9476 bytes-18 bytes thanks to Giuseppe
Try it online!
Thanks to digEmAll for setting up the TIO properly. It takes in e.g.
This is codegolf
and outputs correctlyIt uses a matrix format with the sentence repeated
n
times; then we only need to change the diagonal entries. Note that usually, in R code-golf, strings are read in withscan(,"")
, but any string can be used instead of the empty string as thewhat
(orw
) parameter.Explanation of old ungolfed version:
la source
scan
??""
, we can reduce to 68 bytes usingsQuote
.This is my first code golf. hopefully its not shit.
EDIT: got it down to 54 bytes with a better regular expression.
**EDIT 2: per suggestions, fixed a bug and made it shorter **
JavaScript (V8), 46 bytes
Try it online!
la source
C# (Visual C# Interactive Compiler) with
/u:System.Text.RegularExpressions.Regex
flag,5940 bytesPort of my Java 8 answer, so look there for an explanation.-19 bytes by porting @Arnauld's regex, since the
$`
and$'
are supported in C# .NET.Try it online.
la source
Elm Using recursion,
132,130,121,111,10099 bytesGolfed down 9 bytes thanks to Kevin Cruijssen technique and another 22 bytes were cracked by ASCII-only. Turned to non-tail recursion during the golf.
Try it online
85 bytes after exposing
String
functions to the current scopeUngolfed version (Using tail recursion)
Try ungolfed
la source
Japt,
1412 bytesTry it
2 bytes saved thanks to Oliver.
la source
PowerShell,
7065 bytesTry it online!
Has test suite in trial. Has 1 leading space on first row, and 1 trailing space on last row. Attempting to refactor.
la source
Charcoal, 19 bytes
Try it online! Link is to verbose version of code. Note: Trailing space. Explanation:
la source
Attache, 34 bytes
Try it online! Anonymous function returning a list of lines.
Explanation
la source
C# (Visual C# Interactive Compiler), 123 bytes
I wonder if can this be shortened with regular expressions.
Try it online!
la source