Ao usar o Markup, como na rede SE, um recuo de quatro espaços antes de uma linha de texto indica isso como parte de um bloco de código, como espero que você saiba. Caso contrário, veja um exemplo (com a .
representação de um espaço):
.... Code
.... Mais código
resulta em
Code
More code
O problema é que, quando você copia e cola o código em uma resposta, precisa recuar cada linha manualmente. Isso é especialmente difícil quando se trabalha com código não-bloqueado, pois provavelmente já está recuado e pode causar confusão. Você pode apenas selecionar seu código e clicar Ctrl + K
, ao que parece. Horas da minha vida desperdiçadas sem motivo aparte ...
Portanto, seu objetivo é, com uma entrada, retornar com quatro espaços antes de cada linha. No espírito de economizar tempo em copiar e colar, você deve processar toda a entrada como uma única sequência (desde que seu idioma possa analisá-la). Se o seu idioma não puder processar um caractere (como novas linhas) em strings, você poderá assumir que ele é indicado / escapado por algum outro método suportado pelo idioma; no entanto, a saída deve gerar cada linha em sua própria linha (para não passar algo parecido ....foo\n....bar
).
Não são permitidas brechas padrão. Como esse é o código-golfe , a resposta mais curta em bytes vence. Boa sorte!
fonte
Ctrl + K
Respostas:
V , 4 bytes
Experimente online!
(Observe o espaço à direita)
V é codificado em Latin1, onde é codificado da seguinte forma:
Explicação
Aqui está uma solução que também possui 4 bytes em UTF-8!
fonte
4ñ>G
Giz de cera , 7 bytes
Experimente online!
Explicação
Crayon é uma linguagem baseada em pilha projetada para criar arte ASCII. Ainda está nos estágios iniciais de desenvolvimento, mas sabe o suficiente para concluir esse desafio com uma contagem de bytes bastante baixa:
Desenhar o espaço sem quebra é necessário porque o Crayon apara automaticamente a saída em um retângulo; portanto, sem o NBSP, apenas imprimiria a entrada original.
fonte
Retina , 8 bytes
Experimente online!
Existem quatro espaços na segunda linha. Soluções alternativas usam
m`^
ou%1`
ou1%`
na primeira linha. Tudo isso corresponde à posição no início de cada linha e a substitui por quatro espaços.fonte
Cheddar, 31 bytes
Simplesmente, mas postei porque mostra os novos operadores funcionais.
(" ":+)
é o mesmo queA -> " " + A
. (ou seja,+
op como uma função" "
vinculada ao LHS).Eu acho que nem precisa de explicação
fonte
:
causaria problemas com?:
:
há correspondência?
, o analisador escolherá tratá-lo como uma operação funcional. Isso ainda requer a op funcional a ser envolto em parênteses, mas sim:+)
@
significa isso ?Python ,
4439 bytesRiscado & nbsp; 44 & nbsp; já não é 44 :)
-5 bytes graças a ovs (evite desenfileirar com um prefpend)
Experimente online!
fonte
lambda s:' '*4+s.replace('\n','\n ')
para 39 byteslambda s:' '*4+s.replace('\n','\n ')[1:]
40 (o que não funciona) ou algo mais?lambda s:' '*4+s.replace('\n','\n<4 spaces>')
TIOJavaScript, 26 bytes
Obrigado @Conor O'Brien por jogar fora 8 bytes
Substitua por uma regex por / g substitui todas as instâncias. m faz o regex tratar cada linha separadamente para o início da string ^.
Experimente online!
fonte
asdf
repetidamente.x=>x.replace(/^|\n/g,"$& ")
para obter a primeira linha e as seguintes linhas de uma só vezPython 2,
8745 bytesA entrada é tomada como
'Line1\nLine2\nLine3...'
(Cotações necessárias)Agradeço ao @WheatWizard por me dar uma idéia que me ajudou a obter 42 bytes de golfe.
fonte
Ctrl + K
, as reais razões para esse desafio ser proposto eram ... menos do que apenas intrigantes.^
por ``.Gelatina , 8 bytes
Experimente online!
Quão?
Algumas outras variantes de 8 bytes são:
Ỵṭ€⁶Yµ4¡
(4 repetições de divisão em novas linhas, preencha um único espaço);⁶ḤḤ;ЀỴY
(dobrar duas vezes é como multiplicar por 4,Ѐ
mapeia o argumento correto, para que possamos concatenar em vez de alinhar);e outros rearranjos.
fonte
Emacs, 5 teclas, 5 bytes
Em pelo menos uma codificação comumente usados para a entrada do teclado, cada uma destas keychords é um único byte:
18 68 b4 18 09
. As entradas do Emacs tendem a ser muito pesadas para keychord, pois cada caractere ASCII imprimível representa a si próprio, exceto como um caractere subseqüente de um comando com vários caracteres (o que significa que apenas os keychords podem ser usados para fornecer comandos reais).Não tenho certeza de como isso se compara ao Vim (ao contrário de V). Mas o Vim é bastante usado no PPCG e, por isso, pensei que o outro lado da guerra de editores também merece seu tempo de destaque.
Isso pressupõe que a E / S seja feita através do buffer (o equivalente às convenções normais de E / S para o vim), ou obtida de um arquivo e gerada na tela (que é a mesma coisa). Se você fizer E / S pela região, o que é natural para algumas formas de programa, você poderá remover os dois caracteres iniciais, com uma pontuação de 3 bytes; no entanto, não acho que esteja em conformidade com as regras do PPCG.
Explicação
O último built-in usado aqui é, obviamente, incrivelmente útil para esse desafio; o resto é apenas estrutura.
fonte
PowerShell,
2928 bytes-1 Graças ao fergusq, usando uma nova linha real em vez do `n
pega a
"$args"
entrada como uma seqüência de caracteres (convertida usando "s) e-split
a coloca em uma nova linha e, em seguida, faz um loop (%{}
) através dela, acrescentando quatro espaços (" "*4
) e a linha ($_
) e a gera implicitamente.fonte
Pyth, 10 bytes
Tente!
Se a entrada como uma lista de linhas for permitida, eu poderia fazê-lo em 7 bytes:
Tente isso
soluções mais longas:
12 bytes:
12 bytes:
13 bytes:
fonte
jbm*4\ .z
d
, gritos. Sua resposta de 10 bytes é o que eu estava procurando, de qualquer maneiraRöda , 21 bytes
Experimente online!
É uma função anônima. A entrada é retirada do fluxo.
Explicação:
fonte
identity()
basta puxar todos os valores de STDIN?identity
extrai valores do fluxo de entrada e os empurra para seu fluxo de saída. É idêntico apush(x) for x
.Perl 5 , 11 + 1 = 12 bytes
11 bytes de código +
-p
sinalizador.Experimente online!
Pela primeira vez, as explicações serão breves: A regex substitui cada início de linha (
^
combinado com/m
modificador) por quatro espaços - o final.fonte
Perl 6 , 11 bytes
Tente
Expandido:
fonte
sed ,
16109 bytesExperimente online!
Editar% s
Tamanho de solução reduzido de 16 para 10 bytes, graças ao Kritixi Lithos .
-1 byte graças a seshoumara .
fonte
-r
sinalizador (1 byte) para remover as barras invertidas antes dos parênteses.s/.*/ &/
(remover os parênteses e substituir\1
com&
)*
.s:^: :
, por 9 bytes.Java 7, 58 bytes
Explicação:
Experimente aqui.
fonte
replaceAll
.replace
e.replaceAll
irá substituir todas as ocorrências da procurou String com o substituto..replace
é usado para strings literais e.replaceAll
para expressões regulares. Como\n
não é uma regex,.replace
pode ser usado sem problemas para substituir todas as novas linhas por uma nova linha + quatro espaços, que você também pode verificar no link "Experimente a linha" que forneci.Brain-Flak ,
109103 bytes-6 graças a Wheat Wizard
Inclui +1 para
-c
Experimente online!
fonte
PHP, 43 bytes
fonte
Empilhados , 13 bytes
Experimente online!
Explicação
fonte
Oitava, 17 bytes
Experimente online!
fonte
MATL , 12 bytes
Entrada é uma sequência com novas linhas. Para inserir isso, você precisa concatenar o caractere 10 entre os caracteres normais para representar a nova linha (colchetes são concatenação):
Experimente no MATL online!
Explicação
fonte
PHP, 16
corra com
php -R <code>
.-R
executa o código fornecido para cada linha de entrada e$argn
é alimentado na linha de entrada atual. Portanto, isso simplesmente imprime cada linha com quatro espaços adicionais à sua frente.fonte
V , 3 bytes (não concorrente)
Esta é a resposta que usa um recurso que eu planejava adicionar há um tempo, mas que acabei de adicionar hoje. Isso torna essa resposta não competitiva e inválida para ganhar. Mas ainda é legal mostrar um recurso tão útil / competitivo!
Experimente online!
Explicação:
fonte
Vim, 6 pressionamentos de tecla
Pressupõe que o cursor esteja no início do arquivo, como se você o abrisse na linha de comando via
vim filename
.Com um vim configurado para usar 4 espaços de recuo seria 2 teclas:
>G
.fonte
ZZ
no final. Normalmente, os envios do vim são bons apenas para o buffer, e não para um arquivo.ZZ
então.Japt ,
76 bytesGuardado 1 byte graças a @ETHproductions
Experimente online!
Explicação:
fonte
S²²
funcionaria tão bem no lugar deSp4
, não que você economize qualquer coisa neste caso. Falando nisso, eu acho que você pode apenas fazermiS²²R
para remover aR
bandeira (basicamentemiS²²
, mas dividido em novas linhas de antemão e junte-se com novas linhas depois)UberGenes , 62 bytes
Eu tive que enfrentar esse desafio com o UberGenes, pois um programa muito semelhante (que inseriu apenas um espaço) foi um dos primeiros programas que eu já escrevi no idioma, e parecia que seria fácil modificá-lo para esse fim.
Como funciona:
fonte
CJam , 11 bytes
Obrigado a @ Challenger5 por uma correção
Experimente online!
Explicação
fonte
abc\n\ndef
. Ele retorna....abc\n....def
porque%
descarta elementos vazios. Você deseja usar/
para dividir, porque mantém os elementos vazios.J-uby ,
1716 bytesExplicação
Isso se traduz diretamente em (em Ruby):
fonte
Na verdade , 16 bytes
Experimente online!
Explicação:
fonte
C,
6665 bytesExperimente online!
fonte
s;char*l;f(){while(getline(&l,&s,stdin)+1)printf("____%s",l);}
que 62 bytes<stdio.h>
(por causa dastdin
).