Sie erhalten eine Zeichenfolge. Geben Sie die Zeichenfolge mit einem Leerzeichen pro Wort aus.
Herausforderung
Die Eingabe ist eine Zeichenfolge (nicht null
oder leer), die von Anführungszeichen ( "
) umgeben ist, die über das Symbol gesendet werden stdin
. Entfernen Sie führende und nachfolgende Leerzeichen. Wenn sich zwischen zwei Wörtern (oder Symbolen oder was auch immer) mehr als ein Leerzeichen befindet, kürzen Sie es auf nur ein Leerzeichen. Geben Sie den geänderten String mit den Anführungszeichen aus.
Regeln
- Die Zeichenfolge darf nicht länger als 100 Zeichen sein und enthält nur ASCII-Zeichen im Bereich
(Leerzeichen) bis
~
(Tilde) (Zeichencodes 0x20 bis 0x7E, einschließlich), mit der Ausnahme"
, dass die Zeichenfolge keine Anführungszeichen ("
) und andere Zeichen außerhalb von enthält Bereich oben angegeben. Siehe ASCII-Tabelle als Referenz. - Sie müssen Eingaben von der
stdin
(oder der nächstgelegenen) Alternative nehmen. - Die Ausgabe muss Anführungszeichen (
"
) enthalten. - Sie können ein vollständiges Programm oder eine Funktion schreiben, die Eingaben (von
stdin
) entgegennimmt und die endgültige Zeichenfolge ausgibt
Testfälle
"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 -"
Wertung
Dies ist Codegolf, daher gewinnt die kürzeste Übermittlung (in Byte).
must take input from stdin
, und später sagen Sie...or a function which takes input, and outputs the final string
. Bedeutet das, dass die Funktion auch Eingaben von nehmen mussstdin
?" "aa" "
->""aa""
(Antworten:
CJam, 7 Bytes
Code Erklärung
CJam hat alle Großbuchstaben als eingebaute Variablen reserviert. Hat also
S
hier den Wert eines Raumes.Dadurch werden auch die nachgestellten und führenden Leerzeichen entfernt
Probieren Sie es hier online aus
quelle
/// : 18 Zeichen
Probelauf:
(Verwenden des Interpreters von faubiguy aus seiner Perl-Antwort für Interpret /// (ausgesprochene 'Schrägstriche') .)
quelle
Perl, 22
(20 Byte Code plus 2 Befehlszeilenoptionen)
Muss mit dem
-np
Switch ausgeführt werden,$_
damit er automatisch über stdin gefüllt und auf stdout gedruckt wird. Ich gehe davon aus, dass dies die Byteanzahl um 2 erhöht.quelle
sed -E 's/ +/ /g;s/" | "/"/g'
-p
impliziert-n
, so dass Sie nur eine +1 Strafe hier nehmen müssen (vorausgesetzt, Sie wechseln nicht nur in eine andere Sprache, wie die anderen Kommentatoren vorschlagen).Ruby,
31292523 BytesCode Erklärung:
p
gibt einen String in doppelten Anführungszeichen aus zuSTDOUT
( es steckt aber noch mehr dahinter ...)$*
ist ein Array vonSTDIN
Eingaben,$*[0]
nimmt die erstestrip
Entfernt Start- und End-Leerzeichensqueeze ' '
ersetzt> 1 Leerzeichen durch ein einzelnes LeerzeichenTestfälle:
quelle
ARGV
mit$*
Spar zwei Bytes.gsub /\s+/, ' '
kann durchsqueeze ' '
weitere 4 Bytes ersetzt werden$*
, das wusste ich nicht. Aber wir können nicht ersetzengsub /\s+/, ' '
mit ,squeeze
weil sie nicht gleich sind .squeeze ' '
drückt nur Leerzeichen."yellow moon".squeeze "l" => "yelow moon"
p
und seinem Parameter undsqueeze
und seinem Parameter nicht erforderlich.Pyth,
17151110 Bytes(Dank an Ypnypn und FryAmTheEggman )
Könnte wahrscheinlich mehr Golf gespielt werden.
Wenn die Ausgabe
'
statt"
dann verwenden kann, benötige ich nur 8 Bytes:quelle
N
anstelle von\"
d
.d
für alles verwendet, wofür es verwendet werden kann?p
, um ein paar Bytes bei der Verkettung von Zeichenfolgen anstelle von vielen zu speichern+
.pjd-cQdkNN
Bash,
3632 BytesAls eine Funktion, ein Programm oder einfach in einer Pipe:
Erläuterung
Der Erste
xargs
die Anführungszeichen.Der Zweite
xargs
Option schneidet die linke Seite ab und ersetzt mehrere benachbarte Leerzeichen in der Mitte der Zeichenfolge durch ein Leerzeichen, indem jedes "Wort" durch ein Leerzeichen getrennt wird.Das
xargs -i echo '"{}"'
schneidet die rechte Seite und fügt die resultierende Zeichenfolge in doppelte Anführungszeichen ein.quelle
x=xargs;$x|$x|$x -i echo '"{}"'
Haskell,
3125 Byteswords
Teilt die Zeichenfolge in eine Liste von Zeichenfolgen mit Leerzeichen als Trennzeichen auf undunwords
fügt der Liste der Zeichenfolgen ein einzelnes Leerzeichen dazwischen hinzu. Die Anführungszeichen"
werden von Haskellsread
undshow
(implizit über die REPL) -Funktionen für Zeichenfolgen entfernt und zurückgesetzt.Die Ausgabe durch die Funktion selbst ist drei Bytes länger, dh 28 Bytes:
Edit: @ Mauris zeigte auf die
readLn
Funktion, die einige Bytes sparte.quelle
Parse error: naked expression at top level
als ich beide Codes hiermain=interact$show.unwords.words.read
. Es gibt eine Online-REPL an der Front von haskell.org (erfordert aktivierte Cookies), wo Sie es versuchen könnenfmap(unwords.words.read)getLine
.fmap(unwords.words)readLn
undprint.unwords.words=<<readLn
sind etwas kürzer.readLn
.R, 45 Bytes
Die
readline()
Funktion liest aus STDIN und entfernt automatisch alle führenden und nachfolgenden Leerzeichen. Überschüssiger Abstand zwischen Wörtern wird mit entferntgsub()
. Schließlich werden doppelte Anführungszeichen vorangestellt und angehängt, und das Ergebnis wird an STDOUT ausgegeben.Beispiele:
quelle
[1] "This is a string"
Python2, 37
Reduziert um 1 Byte dank @ygramul.
Originalfassung:
Testfälle:
quelle
print" ".join(raw_input().split())
, aber es würde ein Leerzeichen nach dem letzten Anführungszeichen haben, wenn es Leerzeichen nach dem letzten WortJavaScript (ES6), 49
52 58Bearbeiten Sie dank @Optimizer 6 Bytes kürzer
Bearbeite 2 -3, danke an @nderscore
Eingabe / Ausgabe über Popup. Verwenden der Vorlagenzeichenfolge zum Ausschneiden von 1 Byte in der Zeichenfolgenverkettung.
Führen Sie das Snippet aus, um es in Firefox zu testen.
quelle
alert(`"${eval(prompt()).match(/\S+/g).join(" ")}"`)
- 52alert(`"${prompt().match(/[^ "]+/g).join(" ")}"`)
05AB1E , 9 Bytes
Probieren Sie es online!
quelle
Mathematica, 75 Bytes
quelle
KDB (Q), 28 Bytes
Erläuterung
Prüfung
quelle
Java 8, 43 Bytes
Erläuterung:
Probieren Sie es hier aus.
quelle
Oktave , 44 Bytes
Probieren Sie es online!
quelle
Perl 5 , 17 Bytes
16 Byte Code + 1 für
-p
Probieren Sie es online!
quelle
Jq 1,5 , 42 Bytes
Probelauf
Probieren Sie es online aus
quelle
Tcl , 69 Bytes
Probieren Sie es online!
Tcl , 79 Bytes
Probieren Sie es online!
quelle
Japt
-Q
,104 BytesVersuch es
quelle
Golfua, 42 Bytes
Einfache Ersetzung durch Mustererkennung: Suchen Sie nach doppelten Anführungszeichen (
\"
), die von 0 oder mehr Leerzeichen (%s*
) umgeben sind, und geben Sie das einfache Anführungszeichen zurück. Ersetzen Sie dann alle 1 oder mehr Leerzeichen (%s+
) durch ein einzelnes Leerzeichen.Ein Lua-Äquivalent wäre
quelle
Cobra - 68
Als anonyme Funktion:
quelle
Ziel-C 215
Unkomprimierte Version:
quelle
Bash, 14 Bytes
quelle
Powershell, 40 Bytes
Ziemlich direkt und nicht sehr beeindruckend.
Erläuterung
Eingabeparameter über (vordefinierte) args-Variable übernehmen, alle mehreren Leerzeichen durch eins ersetzen, führende und nachfolgende Leerzeichen mit trim () - Methode abschneiden, Anführungszeichen hinzufügen. Powershell druckt als Standardverhalten Zeichenfolgen an die Konsole.
quelle
k4, 23 Bytes
quelle
Zsh , 15 Bytes
Probieren Sie es online!
Eingabezeichenfolge enthält eingebettete Anführungszeichen. Entfernen Sie die
Q
für 14 Bytes wenn die Eingabezeichenfolge keine eingebetteten Anführungszeichen enthält, wie dies in einigen anderen Antworten hier der Fall ist.Parametererweiterungsflags:
Q
Entzieht Anführungszeichen undz
teilt sich dann wie die Shell in Wörter auf. Die Wörter werden dann implizit durch Leerzeichen verbunden.quelle
Zaunkönig , 56 Bytes
Warten. Das Ersetzen macht es nur einmal ? Jetzt muss ich die Split-Join-Kombination verwenden.
Probieren Sie es online!
Erläuterung
quelle
GolfScript , 8 Bytes
Probieren Sie es online!
Erläuterung
Die Logik ist ganz einfach:
quelle
Python2, 28 Bytes
Erläuterung
Anonyme Funktion, die als Eingabe s nimmt.
Gibt eine Liste der Wörter (die durch beliebige Zeichenfolgen mit Leerzeichen getrennt sind) der Zeichenfolge s zurück.
Verknüpft die Liste wieder zu einer Zeichenfolge, wobei jedes Wort durch ein Leerzeichen ("") getrennt ist.
quelle