Te dan una cuerda. Salida de la cadena con un espacio por palabra.
Desafío
La entrada será una cadena (no null
o vacía), rodeada de comillas ( "
) enviadas a través de stdin
. Elimine los espacios iniciales y finales de él. Además, si hay más de un espacio entre dos palabras (o símbolos o lo que sea), recórtelo a un solo espacio. Salida de la cadena modificada con las comillas.
Reglas
- La cadena no tendrá más de 100 caracteres y solo contendrá caracteres ASCII en el rango
(espacio) a
~
(tilde) (códigos de caracteres 0x20 a 0x7E, inclusive) excepto"
, es decir, la cadena no contendrá comillas ("
) y otros caracteres fuera del rango especificado anteriormente. Consulte la tabla ASCII para referencia. - Debe tomar la entrada de
stdin
(o la alternativa más cercana). - La salida debe contener comillas (
"
). - Puede escribir un programa completo, o una función que toma la entrada (desde
stdin
) y emite la cadena final
Casos de prueba
"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 -"
Puntuación
Este es el código de golf, por lo que gana el envío más corto (en bytes).
must take input from stdin
, y luego dices...or a function which takes input, and outputs the final string
. ¿Esto significa que la función también debe recibir informaciónstdin
?" "aa" "
->""aa""
(¿son válidas las comillas dentro de la cadena de entrada?)Respuestas:
CJam, 7 bytes
Explicación del código
CJam ha reservado todas las letras mayúsculas como variables incorporadas. Entonces
S
tiene un valor de un espacio aquí.Esto elimina los espacios iniciales y finales también
Pruébalo en línea aquí
fuente
/// : 18 caracteres
Ejecución de muestra:
(Usando el intérprete de faubiguy de su respuesta Perl para Interpretar /// (pronunciado 'barras') .)
fuente
Perl, 22
(20 bytes de código, más 2 interruptores de línea de comando)
Debe ejecutarse con el
-np
interruptor para que$_
se llene automáticamente mediante stdin y se imprima en stdout. Voy a suponer que esto agrega 2 al recuento de bytes.fuente
sed -E 's/ +/ /g;s/" | "/"/g'
-p
implica-n
, por lo que solo tienes que recibir una penalización de +1 aquí (suponiendo que no solo cambies a un idioma diferente, como sugieren los otros comentaristas).Rubí,
31292523 BytesExplicación del código:
p
emite una cadena entre comillas dobles paraSTDOUT
( Sin embargo, hay más ...)$*
es una matriz deSTDIN
entradas,$*[0]
toma la primerastrip
elimina espacios iniciales y finalessqueeze ' '
reemplaza> 1 espacio de caracteres con un solo espacioCasos de prueba:
fuente
ARGV
con$*
guardar dos bytes.gsub /\s+/, ' '
puede ser reemplazadosqueeze ' '
por otros 4 bytes$*
eso, no lo sabía. Pero no se puede sustituirgsub /\s+/, ' '
consqueeze
, porque ellos no son los mismos .squeeze ' '
solo exprimirá espacios."yellow moon".squeeze "l" => "yelow moon"
p
y su parámetrosqueeze
y su parámetro son innecesarios.Pyth,
17151110 bytes(gracias a Ypnypn y FryAmTheEggman )
Probablemente podría jugar más golf.
Si la salida puede usarse en
'
lugar de"
eso, solo necesito 8 bytes:fuente
N
lugar de\"
d
.d
para todo para lo que se puede usar?p
para guardar algunos bytes en la concatenación de cadenas en lugar de muchos+
es.pjd-cQdkNN
Bash,
3632 bytesComo una función, un programa o simplemente en una tubería:
Explicación
El primero
xargs
elimina las comillas.El segundo
xargs
recorta el lado izquierdo y reemplaza múltiples espacios adyacentes en el medio de la cadena con un espacio tomando cada "palabra" y separando cada uno con un espacio.El
xargs -i echo '"{}"'
recorta el lado derecho y rewraps la cadena resultante entre comillas dobles.fuente
x=xargs;$x|$x|$x -i echo '"{}"'
Haskell,
3125 byteswords
divide la cadena en una lista de cadenas con espacios como delimitadores y seunwords
une a la lista de cadenas con espacios individuales en el medio. Las comillas"
son eliminadas y puestas de nuevo por las funciones de Haskellread
yshow
(implícitamente a través de REPL) en las cadenas.La salida de la función en sí es tres bytes más larga, es decir, 28 bytes:
Editar: @Mauris señaló la
readLn
función, que ahorró algunos bytes.fuente
Parse error: naked expression at top level
cuando probé tanto los códigos aquímain=interact$show.unwords.words.read
. Hay un REPL en línea en la fachada de haskell.org (requiere cookies habilitadas) donde puede probarfmap(unwords.words.read)getLine
.fmap(unwords.words)readLn
yprint.unwords.words=<<readLn
son un poco más cortosreadLn
.R, 45 bytes
La
readline()
función lee desde STDIN, eliminando automáticamente cualquier espacio en blanco inicial y final. El exceso de espacio entre palabras se elimina congsub()
. Finalmente, las comillas dobles se anteponen y anexan y el resultado se imprime en STDOUT.Ejemplos:
fuente
[1] "This is a string"
Python2, 37
Reducido en 1 byte gracias a @ygramul.
Versión original:
Casos de prueba:
fuente
print" ".join(raw_input().split())
, pero tendría un espacio final dentro de la última comilla si hubiera espacios después de la última palabra ...JavaScript (ES6), 49
52 58Editar 6 bytes más cortos, gracias a @Optimizer
Editar 2 -3, gracias a @nderscore
Entrada / salida a través de una ventana emergente. Usando cadena de plantilla para cortar 1 byte en concatenación de cadena.
Ejecute el fragmento para probar en Firefox.
fuente
alert(`"${eval(prompt()).match(/\S+/g).join(" ")}"`)
- 52alert(`"${prompt().match(/[^ "]+/g).join(" ")}"`)
05AB1E , 9 bytes
Pruébalo en línea!
fuente
Mathematica, 75 bytes
fuente
KDB (Q), 28 bytes
Explicación
Prueba
fuente
Java 8, 43 bytes
Explicación:
Pruébalo aquí.
fuente
Octava , 44 bytes
Pruébalo en línea!
fuente
Perl 5 , 17 bytes
16 bytes de código + 1 para
-p
Pruébalo en línea!
fuente
Jq 1.5 , 42 bytes
Ejecución de muestra
Pruébalo en línea
fuente
Tcl , 69 bytes
Pruébalo en línea!
Tcl , 79 bytes
Pruébalo en línea!
fuente
Japt
-Q
,104 bytesIntentalo
fuente
golfua, 42 bytes
Reemplazo simple de coincidencia de patrones: encuentre comillas dobles (
\"
) rodeadas por 0 o más espacios (%s*
) y devuelva la comilla simple, luego reemplace los 1 o más espacios (%s+
) con un solo espacio.Un equivalente de Lua sería
fuente
Cobra - 68
Como una función anónima:
fuente
Objetivo-C 215
Versión sin comprimir:
fuente
Bash, 14 bytes
fuente
Powershell, 40 bytes
Bastante sencillo y no muy impresionante.
Explicación
Tome el parámetro de entrada a través de la variable args (predefinida), reemplace todos los espacios múltiples con uno, recorte los espacios iniciales y finales utilizando el método trim (), agregue comillas. Powershell imprimirá cadenas a la consola como comportamiento predeterminado.
fuente
k4, 23 bytes
fuente
Zsh , 15 bytes
Pruébalo en línea!
La cadena de entrada contiene comillas incrustadas. Elimine los
Q
de 14 bytes si la cadena de entrada no contiene comillas incrustadas, como se hace en algunas de las otras respuestas aquí.Q
Indicadores de expansión de parámetros: se indican con comillas, luego sez
dividen en palabras como lo hace el shell. Las palabras se unen implícitamente por espacios.fuente
Wren , 56 bytes
Espere. El reemplazo solo lo hace una vez ? Ahora tengo que usar el combo split-join.
Pruébalo en línea!
Explicación
fuente
GolfScript , 8 bytes
Pruébalo en línea!
Explicación
La lógica es bastante simple:
fuente
Python2, 28 bytes
Explicación
Función anónima que toma como entrada s.
Devuelve una lista de las palabras (que están separadas por cadenas arbitrarias de caracteres de espacios en blanco) de la cadena s.
Une la lista nuevamente en una cadena, con cada palabra separada por un espacio ("").
fuente