On vous donne une chaîne. Sortez la chaîne avec un espace par mot.
Défi
L'entrée sera une chaîne (non null
ou vide), entourée de guillemets ( "
) envoyés via le stdin
. Supprimez-y les espaces de début et de fin. De plus, s'il y a plus d'un espace entre deux mots (ou symboles ou autre), coupez-le à un seul espace. Sortez la chaîne modifiée avec les guillemets.
Règles
- La chaîne ne dépassera pas 100 caractères et ne contiendra que des caractères ASCII dans la plage
(espace) à
~
(tilde) (codes de caractères 0x20 à 0x7E, inclus) sauf"
, c'est-à-dire que la chaîne ne contiendra pas de guillemets ("
) et d'autres caractères en dehors de la plage spécifiée ci-dessus. Voir le tableau ASCII pour référence. - Vous devez prendre connaissance de
stdin
(ou de l'alternative la plus proche). - La sortie doit contenir des guillemets (
"
). - Vous pouvez écrire un programme complet ou une fonction qui prend une entrée (de
stdin
) et produit la chaîne finale
Cas de test
"this is a string " --> "this is a string"
" blah blah blah " --> "blah blah blah"
"abcdefg" --> "abcdefg"
" " --> ""
"12 34 ~5 6 (7, 8) - 9 - " --> "12 34 ~5 6 (7, 8) - 9 -"
Notation
Il s'agit du code golf, donc la soumission la plus courte (en octets) l'emporte.
must take input from stdin
, et plus tard vous dites...or a function which takes input, and outputs the final string
. Cela signifie-t-il que la fonction doit également recevoir des informationsstdin
?" "aa" "
->""aa""
(les guillemets sont-ils valides dans la chaîne d'entrée?)Réponses:
CJam, 7 octets
Explication du code
CJam a réservé toutes les majuscules en tant que variables intégrées. A donc
S
la valeur d'un espace ici.Cela supprime également les espaces de fin et de début
Essayez-le en ligne ici
la source
/// : 18 caractères
Exemple d'exécution:
(Utilisation de l 'interprète de faubiguy à partir de sa réponse Perl pour Interpréter /// (prononcé «slashes») .)
la source
Perl, 22
(20 octets de code, plus 2 commutateurs de ligne de commande)
Doit être exécuté avec le
-np
commutateur afin qu'il$_
soit automatiquement rempli via stdin et imprimé sur stdout. Je vais supposer que cela ajoute 2 au nombre d'octets.la source
sed -E 's/ +/ /g;s/" | "/"/g'
-p
implique-n
, vous n'avez donc qu'à prendre une pénalité de +1 ici (en supposant que vous ne passez pas simplement à une autre langue, comme le suggèrent les autres commentateurs).Rubis,
31292523 octetsExplication du code:
p
affiche une chaîne entre guillemets doublesSTDOUT
(il y a plus que ça ...)$*
est un tableau d'STDIN
entrées,$*[0]
prend la premièrestrip
supprime les espaces de début et de finsqueeze ' '
remplace> 1 espace par un seul espaceCas de test:
la source
ARGV
en$*
économisant deux octets.gsub /\s+/, ' '
peut être remplacé parsqueeze ' '
pour 4 autres octets$*
, je ne le savais pas. Mais nous ne pouvons pas les remplacergsub /\s+/, ' '
parsqueeze
car ce ne sont pas les mêmes .squeeze ' '
ne fera que serrer les espaces."yellow moon".squeeze "l" => "yelow moon"
p
et son paramètre etsqueeze
et son paramètre sont inutiles.Pyth,
17151110 octets(merci à Ypnypn et FryAmTheEggman )
Pourrait probablement être plus joué au golf.
Si la sortie peut utiliser à la
'
place,"
je n'ai besoin que de 8 octets:la source
N
au lieu de\"
d
.d
tout ce pour quoi il peut être utilisé?p
pour enregistrer quelques octets sur la concaténation de chaînes au lieu de plusieurs+
es.pjd-cQdkNN
Bash,
3632 octetsEn tant que fonction, programme ou simplement dans un tube:
Explication
Le premier
xargs
supprime les guillemets.Le second
xargs
coupe le côté gauche et remplace plusieurs espaces adjacents au milieu de la chaîne par un espace en prenant chaque "mot" et en les séparant chacun par un espace.Le
xargs -i echo '"{}"'
coupe le côté droit et rembobine la chaîne résultante entre guillemets.la source
x=xargs;$x|$x|$x -i echo '"{}"'
Haskell,
3125 octetswords
divise la chaîne en une liste de chaînes avec des espaces comme délimiteurs etunwords
joint la liste des chaînes avec un seul espace entre les deux. Les guillemets"
sont supprimés et remis par les fonctions de Haskellread
etshow
(implicitement via le REPL) sur les chaînes.La sortie par la fonction elle-même est plus longue de trois octets, soit 28 octets:
Edit: @Mauris a souligné la
readLn
fonction, qui a enregistré quelques octets.la source
Parse error: naked expression at top level
quand j'ai testé les deux codes icimain=interact$show.unwords.words.read
. Il y a un REPL en ligne à la façade de haskell.org (nécessite les cookies activés) où vous pouvez essayerfmap(unwords.words.read)getLine
.fmap(unwords.words)readLn
etprint.unwords.words=<<readLn
sont un peu plus courts.readLn
.R, 45 octets
La
readline()
fonction lit à partir de STDIN, supprimant automatiquement tous les espaces blancs de début et de fin. L'excès d'espace entre les mots est supprimé à l'aide degsub()
. Enfin, les guillemets doubles sont ajoutés et ajoutés avant et le résultat est imprimé dans STDOUT.Exemples:
la source
[1] "This is a string"
Python2, 37
Réduit de 1 octet grâce à @ygramul.
Version originale:
Cas de test:
la source
print" ".join(raw_input().split())
, mais il y aurait un espace de fin à l'intérieur du dernier guillemet s'il y avait des espaces après le dernier mot ...JavaScript (ES6), 49
52 58Éditez 6 octets plus court, grâce à @Optimizer
Edit 2 -3, grâce à @nderscore
Entrée / sortie via popup. Utilisation d'une chaîne de modèle pour couper 1 octet dans la concaténation de chaînes.
Exécutez l'extrait de code pour tester dans Firefox.
la source
alert(`"${eval(prompt()).match(/\S+/g).join(" ")}"`)
- 52alert(`"${prompt().match(/[^ "]+/g).join(" ")}"`)
05AB1E , 9 octets
Essayez-le en ligne!
la source
Mathematica, 75 octets
la source
KDB (Q), 28 octets
Explication
Tester
la source
Java 8, 43 octets
Explication:
Essayez-le ici.
la source
Octave , 44 octets
Essayez-le en ligne!
la source
Perl 5 , 17 octets
16 octets de code + 1 pour
-p
Essayez-le en ligne!
la source
Jq 1,5 , 42 octets
Sample Run
Essayez-le en ligne
la source
Tcl , 69 octets
Essayez-le en ligne!
Tcl , 79 octets
Essayez-le en ligne!
la source
Japt
-Q
,104 octetsEssayez-le
la source
golfua, 42 octets
Remplacement de correspondance de modèle simple: recherchez les guillemets doubles (
\"
) entourés de 0 ou plusieurs espaces (%s*
) et renvoyez le guillemet simple, puis remplacez tous les 1 ou plusieurs espaces (%s+
) par un seul espace.Un équivalent Lua serait
la source
Cobra - 68
En tant que fonction anonyme:
la source
Objectif-C 215
Version non compressée:
la source
Bash, 14 octets
la source
Powershell, 40 octets
Assez simple et pas très impressionnant.
Explication
Prendre le paramètre d'entrée via la variable args (prédéfinie), remplacer tous les espaces multiples par un, couper les espaces de début et de fin en utilisant la méthode trim (), ajouter des guillemets. Powershell imprimera les chaînes sur la console comme comportement par défaut.
la source
k4, 23 octets
la source
Zsh , 15 octets
Essayez-le en ligne!
La chaîne d'entrée contient des guillemets incorporés. Supprimez le
Q
pour 14 octets si la chaîne d'entrée ne contient pas de guillemets incorporés, comme cela est fait dans certaines des autres réponses ici.Q
Indicateurs d' expansion des paramètres: déquote, puisz
se divise en mots comme le fait le shell. Les mots sont alors implicitement joints par des espaces.la source
Troglodyte , 56 octets
Attendez. Le remplacement ne fait-il qu'une seule fois ? Maintenant, je dois utiliser le combo split-join.
Essayez-le en ligne!
Explication
la source
GolfScript , 8 octets
Essayez-le en ligne!
Explication
La logique est assez simple:
la source
Python2, 28 octets
Explication
Fonction anonyme qui prend en entrée s.
Renvoie une liste des mots (qui sont séparés par des chaînes arbitraires de caractères blancs) de la chaîne s.
Rejoint la liste dans une chaîne, chaque mot étant séparé par un espace ("").
la source