Al usar Markup, como en la red SE, una sangría de cuatro espacios antes de una línea de texto lo denota como parte de un bloque de código, como espero que sepa. Si no lo hace, aquí hay un ejemplo (con la .
representación de un espacio):
.... Código
.... Más código
resultados en
Code
More code
El problema es que cuando copia y pega código en una respuesta, necesita sangrar cada línea manualmente. Esto es especialmente difícil cuando se trabaja con código no protegido, ya que probablemente ya esté sangrado y pueda causar confusión.Simplemente puede seleccionar su código y presionar Ctrl + K
, resulta. Horas de mi vida desperdiciadas sin ninguna razón aparte ...
Entonces, su objetivo es, dada una entrada, devolverlo con cuatro espacios antes de cada línea.En el espíritu de ahorrar tiempo al copiar y pegar, debe procesar toda la entrada como una sola cadena (siempre que su idioma pueda analizarla). Si su idioma no puede procesar un carácter (como líneas nuevas) en cadenas, puede suponer que se denota / escapa a través de algún otro método admitido por el idioma; sin embargo, la salida debe generar cada línea en su propia línea (por lo que no debe pasar algo parecido ....foo\n....bar
).
Lagunas estándar no permitidas. Como se trata de código de golf , gana la respuesta más corta en bytes. ¡Buena suerte!
fuente
Ctrl + K
Respuestas:
V , 4 bytes
Pruébalo en línea!
(Tenga en cuenta el espacio final)
V está codificado en Latin1, donde esto se codifica así:
Explicación
¡Aquí hay una solución que también tiene 4 bytes en UTF-8!
fuente
4ñ>G
Crayón , 7 bytes
Pruébalo en línea!
Explicación
Crayon es un lenguaje basado en pila diseñado para crear arte ASCII. Todavía está en las primeras etapas de desarrollo, pero sabe lo suficiente para terminar este desafío con un recuento de bytes bastante bajo:
Dibujar el espacio sin interrupciones es necesario porque Crayon recorta automáticamente la salida a un rectángulo, por lo que sin el NBSP simplemente imprimiría la entrada original.
fuente
Retina , 8 bytes
Pruébalo en línea!
Hay cuatro espacios en la segunda línea. Las soluciones alternativas usan o
m`^
o%1`
o1%`
en la primera línea. Todos estos coinciden con la posición al comienzo de cada línea y la reemplazan con cuatro espacios.fuente
Cheddar, 31 bytes
Realmente simple, pero publiqué porque muestra los nuevos operadores funcionales.
(" ":+)
es el mismo queA -> " " + A
. (es decir,+
op como una función con" "
enlace a LHS).Ni siquiera creo que necesite explicación
fuente
:
causaría problemas?:
:
sin coincidencia?
, el analizador elegirá tratarlo como una operación funcional. Esto todavía requiere que la:+)
@
significaPython ,
4439 bytesTachado & nbsp; 44 & nbsp; ya no es 44 :)
-5 bytes gracias a los ovs (evitar la cola con un antecedente)
Pruébalo en línea!
fuente
lambda s:' '*4+s.replace('\n','\n ')
por 39 byteslambda s:' '*4+s.replace('\n','\n ')[1:]
a 40 (que no funciona) o algo más?lambda s:' '*4+s.replace('\n','\n<4 spaces>')
TIOJavaScript, 26 bytes
Gracias @Conor O'Brien por jugar 8 bytes
Reemplazar con una expresión regular con / g reemplaza todas las instancias. m hace que la expresión regular trate cada línea por separado para el inicio de la cadena ^.
Pruébalo en línea!
fuente
asdf
repetidos una y otra vez.x=>x.replace(/^|\n/g,"$& ")
para obtener la primera línea y las siguientes líneas de una sola vezPython 2,
8745 bytesLa entrada se toma como
'Line1\nLine2\nLine3...'
(Citas necesarias)Gracias a @WheatWizard por darme una idea que me ayudó a jugar golf de 42 bytes.
fuente
Ctrl + K
, las verdaderas razones de este desafío que se proponían eran ... menos que solo por pura confusión.^
with ` `.Jelly, 8 bytes
Try it online!
How?
Algunas otras variantes de 8 bytes son:
Ỵṭ€⁶Yµ4¡
(4 repeticiones de división en líneas nuevas, agregar un solo espacio);⁶ḤḤ;ЀỴY
(doblar dos veces es como multiplicar por 4,Ѐ
mapas sobre el argumento correcto, por lo que podemos concatenar en lugar de agregar);y otros reordenamientos de los mismos.
fuente
Emacs, 5 teclados, 5 bytes
En al menos una codificación de uso común para la entrada del teclado, cada uno de estos acordes de teclado es un solo byte:
18 68 b4 18 09
. Emacs entries tend to be very keychord-heavy, as each printable ASCII character stands for itself except as a subsequent character of a multi-character command (meaning that only keychords can be used to give actual commands).No estoy seguro de cómo esto se compara con Vim (a diferencia de V). Pero Vim se usa con bastante frecuencia en PPCG, por lo que pensé que el otro lado de las guerras editoriales también merece su tiempo en el centro de atención.
Esto supone que la E / S se realiza a través del búfer (el equivalente de las convenciones de E / S normales para vim), o se toma de un archivo y se envía a la pantalla (que es lo mismo). Si en su lugar realiza E / S a través de la región, lo cual es natural para algunas formas de programa, puede eliminar los dos caracteres iniciales, para una puntuación de 3 bytes; Sin embargo, no creo que cumpla con las reglas de PPCG.
Explicación
La última construcción utilizada aquí es, por supuesto, increíblemente útil para este desafío; el resto es solo estructura.
fuente
PowerShell,
2928 bytes-1 Gracias a fergusq, usando una nueva línea real en lugar de la `n
toma la
"$args"
entrada como una cadena (se convierte usando "s) y la envía-split
a una nueva línea, luego la recorre (%{}
) a través de ella, agregando cuatro espacios (" "*4
) y la línea ($_
) luego la genera implícitamente.fuente
Pyth, 10 bytes
¡Intentalo!
Si se permitiera la entrada como una lista de líneas, podría hacerlo en 7 bytes:
Trata eso
soluciones más largas:
12 bytes:
12 bytes:
13 bytes:
fuente
jbm*4\ .z
d
, whoops. Tu respuesta de 10 bytes es lo que buscaba, de todos modosRöda , 21 bytes
Pruébalo en línea!
Es una función anónima. La entrada se extrae de la secuencia.
Explicación:
fuente
identity()
Solo extrae todos los valores de STDIN?identity
extrae valores del flujo de entrada y los empuja a su flujo de salida. Es idéntico alpush(x) for x
.Perl 5 , 11 + 1 = 12 bytes
11 bytes de código +
-p
bandera.Pruébalo en línea!
Por una vez, las explicaciones serán breves: la expresión regular reemplaza cada comienzo de línea (
^
combinado con un/m
modificador) por cuatro espacios: el final.fuente
Perl 6 , 11 bytes
Intentalo
Expandido:
fuente
sed ,
16109 bytesPruébalo en línea!
Ediciones
Reduced solution size from 16 to 10 bytes thanks to Kritixi Lithos.
-1 byte thanks to seshoumara.
fuente
-r
bandera (1 byte) para que pueda eliminar las barras invertidas antes de los paréntesis.s/.*/ &/
(elimine los paréntesis y reemplace\1
con&
)*
.s:^: :
, para 9 bytes.Java 7, 58 bytes
Explicación:
Pruébalo aquí
fuente
replaceAll
.replace
y.replaceAll
reemplazarán todas las ocurrencias de la Cadena buscada con el reemplazo..replace
se usa para cadenas literales y.replaceAll
expresiones regulares. Como\n
no es una expresión regular,.replace
puede usarse sin problemas para reemplazar todas las líneas nuevas con una línea nueva + cuatro espacios, que también puede consultar en el enlace "Probar línea" que proporcioné.Brain-Flak ,
109103bytes-6 gracias a Wheat Wizard
Incluye +1 para
-c
Pruébalo en línea!
fuente
PHP, 43 bytes
fuente
Apilado , 13 bytes
Pruébalo en línea!
Explicación
fuente
Octava, 17 bytes
Pruébalo en línea!
fuente
MATL , 12 bytes
La entrada es una cadena con líneas nuevas. Para ingresar esto, debe concatenar el carácter 10 entre los caracteres normales para representar la nueva línea (los corchetes son concatenación):
Pruébalo en MATL en línea!
Explicación
fuente
PHP, 16
correr con
php -R <code>
.-R
ejecuta el código dado para cada línea de entrada y$argn
se alimenta a la línea de entrada actual. Entonces, esto simplemente imprime cada línea con cuatro espacios adicionales en frente.fuente
V , 3 bytes (no competitivos)
Esta respuesta utiliza una función que he estado planeando agregar por un tiempo, pero que acabo de agregar hoy. Eso hace que esta respuesta no sea competitiva e inválida para ganar. ¡Pero sigue siendo genial mostrar una característica tan útil / competitiva!
Pruébalo en línea!
Explicación:
fuente
Vim, 6 pulsaciones de teclas
Asume que el cursor está al comienzo del archivo, como si abriera el archivo desde la línea de comandos a través de
vim filename
.Con un vim configurado para utilizar 4 espacios para el sangrado sería 2 teclas:
>G
.fuente
ZZ
al final. Por lo general, las presentaciones de vim están bien simplemente enviando al búfer en lugar de a un archivo.ZZ
entonces.Japt ,
76 bytesGuardado 1 byte gracias a @ETHproductions
Pruébalo en línea!
Explicación:
fuente
S²²
funcionaría tan bien en lugar deSp4
, no es que te ahorre nada en este caso. Hablando de eso, creo que puede hacermiS²²R
para eliminar laR
bandera (básicamentemiS²²
, pero dividirse en nuevas líneas de antemano y unirse a las nuevas líneas después)UberGenes , 62 bytes
Tuve que ingresar a este desafío con UberGenes, ya que un programa muy similar (que solo insertó un espacio) fue uno de los primeros programas que escribí en el idioma, y parecía que sería fácil modificarlo para este propósito.
Cómo funciona:
fuente
CJam , 11 bytes
Gracias a @ Challenger5 por una corrección
Pruébalo en línea!
Explicación
fuente
abc\n\ndef
. Regresa....abc\n....def
porque%
descarta elementos vacíos. Desea utilizar/
para dividir en su lugar, porque mantiene los elementos vacíos.J-uby ,
1716 bytesExplicación
Esto se traduce directamente a (en Ruby):
fuente
En realidad , 16 bytes
Pruébalo en línea!
Explicación:
fuente
C,
6665 bytesPruébalo en línea!
fuente
s;char*l;f(){while(getline(&l,&s,stdin)+1)printf("____%s",l);}
62 bytes<stdio.h>
(debido astdin
).