Historia
¿Has visto esta publicación de 9gag ? Tal vez tienes la sensación de hacer tus propias oraciones. Pero luego te das cuenta de que podrías jugar un guión en media hora, y nunca tendrás que lidiar con eso.
La sumisión
Su programa obtendrá una cadena de entrada que devolverá con comillas agregadas como se explica a continuación. Las lagunas estándar están prohibidas. Se permite la salida como una lista de líneas. Se permiten espacios finales y líneas vacías que no rompen la salida.
Las reglas de entrada
- La entrada solo contiene caracteres ASCII imprimibles.
- La entrada puede contener espacios. Las palabras se determinan con ellos.
- Se garantiza que un espacio nunca será seguido por otro espacio.
- El caso de no entrada o cadena vacía no importa.
Las reglas de salida
Si se da una palabra, el programa debe devolver la cadena entre comillas.
Si la cadena de entrada tiene 2 o más palabras, primero devuelve la entrada inicial, pero la primera palabra está entre comillas. Luego, en la línea siguiente, devuelve la entrada inicial, pero con la segunda palabra entre comillas. Y así sucesivamente para las palabras restantes.
En general, el programa tiene que devolver tantas líneas como palabras haya en la entrada.
Ejemplos:
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"
Este es el código de golf , por lo que gana la respuesta de menos bytes.
"
caracteres?''
,‘’
o“”
en lugar de""
?Respuestas:
vim, 38 bytes
Pruébalo en línea!
Requiere el complemento vim-surround .
Si la entrada no contiene
"
caracteres, esto se puede hacer en 19 bytes :Aquí, registramos una macro recursiva (
qq ... @qq@q
) que rodea una palabra con comillas (ysW"
), duplica la línea (Yp
), elimina las comillas (ds"
) y pasa a la siguiente palabra (W
) antes de llamarse recursivamente. Después de que termina, hay dos líneas extrañas, que se eliminan condk
.La solución completa simplemente envuelve esto
:s/"/<C-d>/g
al principio, que reemplaza los"
caracteres existentes con un carácter no imprimible, y:%s/<C-d>/"/g
al final, que deshace el reemplazo.fuente
Haskell, 65 bytes
Devuelve una lista de líneas.
Pruébalo en línea!
fuente
\n
espacios en blanco, se comporta incorrectamente cuando está presente.~
. "La entrada puede contener espacios", no "espacios en blanco".Retina 0.8.2 , 17 bytes
Pruébalo en línea! El enlace incluye un conjunto de pruebas. Explicación:
Expanda cada espacio duplicando la línea y luego insertando comillas.
Repara la primera y última línea.
fuente
Jalea ,
1514 bytesPruébalo en línea!
¿Cómo?
fuente
JavaScript (ES6),
43 42 4138 bytesGuardado 3 bytes gracias a @mazzy
Utiliza el no estándar pero ampliamente compatible
RegExp.leftContext
yRegExp.rightContext
. Son muchas citas diferentes ...Pruébalo en línea!
fuente
This is a significantly "longer,"...
/(\S+)/g
funcionaria?Java,
235183132bytes-52 bytes al abusar de una variedad de cosas (acceso estático, lista vs matriz, imprimir en lugar de regresar, etc. ¡Gracias @ValueInk!)
-51 bytes por ser perezoso y dejar que @KevinCruijssen haga el trabajo por mí
Pruébalo en línea
fuente
java.util.Arrays.copyOfRange
. Si utilizasjava.util.List
, puede usarlosubList
por menos tiempo e imprimir en STDOUT en lugar de crear una matriz. Obtuve 193 bytes con esas ideas, y también abusé de la palabra clave var.String.join
cons.join
esas advertencias IDE adicionales (y -10 bytes).Primer intento de golf de código con suerte no es terrible y con suerte no es romper las reglas
Kotlin,
105112147117 bytes / caracteresPruébalo en línea!
fuente
05AB1E , 14 bytes
Pruébalo en línea!
+1 byte (y funciona para el caso de borde) gracias a Emigna. -1 byte gracias a Kevin!
fuente
ð¡
para manejar entradas comotest
.»
.JavaScript,
91977578 bytesEmite una lista de líneas como una matriz de JavaScript. La última entrada tiene un espacio final como se permite en la pregunta. El código de prueba escribe cada entrada en la consola en una línea separada para fines de demostración.
Gracias a Shaggy por 19 bytes desactivados y sin espacios iniciales: cuando el operador de propagación se utiliza en una matriz vacía para inicializar un literal de matriz, no se crean ranuras en la matriz producida por el operador de expansión:
(La versión de 91 bytes tenía un espacio inicial en la primera línea, la versión de 97 bytes tomó 6 bytes para eliminarla).
fuente
f
función. De lo contrario verificado. ¡Buen trabajo!Python 3 ,
79,69, 65 bytesPruébalo en línea!
Afeitado 10 bytes gracias a xnor. Y ahora esto es 65 bytes según Erik, la solución Outgolfer. El programa termina con IndexError pero esto está bien.
fuente
print(*l)
Python 3 en lugar deprint(" ".join(l))
.w
ainput().split()
, asígnelo ainput()
, luego, en elwhile
ciclo, asignem
aw.split()
, lo que creará una nueva lista en cada iteración para evitar problemas de referencia, luego establezcam[i]
en'"%s"'%m[i]
yprint(*m)
.Java 8,
72716762 bytesPruébalo en línea.
Explicación:
Explicación de expresiones regulares:
fuente
Rubí con
-an
53 bytesLas banderas
-an
se leen en cada línea y se dividen en$F
.Pruébalo en línea!
fuente
Rubí , 98 caracteres.
Primera presentación de la historia. Esto definitivamente se puede acortar. Solo quería obtener una respuesta rápidamente.
Pruébalo en línea!
fuente
s.split
como una variable y editar el índice que desea que tenga las comillas, en lugar de usar el excesivamente detalladoeach_with_index.map
. Además, puede enviar el lambda anónimo sin nombrarlo, y unirse puede ser reemplazado por un*
operador. Esto reduce su recuento de bytes a 64 bytes.Perl 6 ,
4340 bytesPruébalo en línea!
Coincide con todas las palabras posibles, luego une cada lista por comillas. Esto podría ser un byte más corto si pudiéramos generar líneas en orden inverso.
Explicación:
fuente
Reflexiones , 229 bytes
¡Pruébalo!
"Rápidamente" "jugué al golf" en un lenguaje "divertido" de "golf".
Mirando todo ese espacio en blanco, probablemente podría ser más corto.
fuente
Haskell , 64 bytes
Pruébalo en línea!
Emite una lista de cadenas. Basado en la respuesta de nimi .
fuente
\n
o"
.Stax , 10 bytes
Ejecutar y depurarlo
Desempaquetado, sin golf y comentado, se ve así.
Ejecute este
fuente
C (gcc) ,
136bytesComo las funciones de tokenización de C estropearían la cadena en lecturas futuras, en su lugar calculo el número y las compensaciones para cada palabra y luego termino cuando el número total de iteraciones del bucle externo coincide con el número de palabras.
Pruébalo en línea!
fuente
"\""+!!(i-++j)
pori-++j?"":"\""
ahorra un byte.PowerShell ,
604036 bytes-20 bytes inspirados en Arnauld
Pruébalo en línea!
El resultado tiene un espacio extra y una línea vacía en la cola.
Powershell, sin expresiones regulares, 60 bytes
Pruébalo en línea!
Menos golfizado:
fuente
The input only contains printable ASCII characters.
, 2The input may contain spaces
.. Las pestañas y otros espacios en blanco no son ASCII imprimibles, ¿no? :)JavaScript, 62 bytes
Gracias @Shaggy por jugar 10 bytes
Explicación
fuente
Java (JDK) , 104 bytes
Pruébalo en línea!
fuente
R ,
9476 bytes-18 bytes gracias a Giuseppe
Pruébalo en línea!
Gracias a digEmAll por configurar el TIO correctamente. Toma en eg
This is codegolf
y sale correctamenteUtiliza un formato matricial con la oración repetida
n
veces; entonces solo necesitamos cambiar las entradas diagonales. Tenga en cuenta que, por lo general, en R code-golf, las cadenas se leen conscan(,"")
, pero se puede usar cualquier cadena en lugar de la cadena vacía comowhat
(ow
parámetro ).Explicación de la antigua versión sin golf:
fuente
scan
?""
, podemos reducir a 68 bytes usandosQuote
.Este es mi primer código de golf. Ojalá no sea una mierda.
EDITAR: lo bajó a 54 bytes con una mejor expresión regular.
** EDIT 2: por sugerencias, reparó un error y lo hizo más corto **
JavaScript (V8) , 46 bytes
Pruébalo en línea!
fuente
C # (compilador interactivo de Visual C #) con
/u:System.Text.RegularExpressions.Regex
indicador,5940 bytesEl puerto de mi respuesta Java 8 , así que busca una explicación.-19 bytes portando la expresión regular de @Arnauld , ya que el
$`
y$'
son compatibles con C # .NET.Pruébalo en línea.
fuente
Olmo usando recursividad,
132,130,121,111,10099 bytesBajó 9 bytes gracias a la técnica Kevin Cruijssen y otros 22 bytes fueron descifrados solo por ASCII . Se convirtió en recursión sin cola durante el golf.
Pruébalo en línea
85 bytes después de exponer
String
funciones al alcance actualVersión sin golf (usando la recursión de cola)
Prueba sin golf
fuente
Japt ,
1412 bytesIntentalo
2 bytes guardados gracias a Oliver.
fuente
PowerShell ,
7065 bytesPruébalo en línea!
Tiene un conjunto de pruebas en prueba. Tiene 1 espacio inicial en la primera fila y 1 espacio final en la última fila. Intentando refactorizar.
fuente
Carbón de leña , 19 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Nota: espacio final. Explicación:
fuente
Adjunto , 34 bytes
Pruébalo en línea!Función anónima que devuelve una lista de líneas.
Explicación
fuente
C # (compilador interactivo de Visual C #) , 123 bytes
Me pregunto si esto se puede acortar con expresiones regulares.
Pruébalo en línea!
fuente