Ah, mais um dos meus usos egoístas dessa pilha .
Como proprietário de um Chromebook, sou um usuário frequente do Ace IDE, o editor usado pelo Cloud9. Ele tem muitas ferramentas para lidar com o excesso de espaço em branco, mas notavelmente falta uma: limpar linhas vazias.
Sua missão hoje é, dada a entrada de um lugar para onde eu posso copiar e colar [ ;)
], produzir algo idêntico, salvar todos os espaços e tabuladores em linhas vazias.
Vou dar alguns exemplos, com #
s representando caracteres de espaço em branco a serem removidos.
ENTRADA 1:
if (this.Color !== 'blue') {
##
this.Color = 'blue';
}
RESULTADO:
if (this.Color !== 'blue') {
[empty line]
this.Color = 'blue';
}
ENTRADA 2:
function outputSomething(times) {
for (var iter = 0; iter < times; iter++) {
console.log('"# # " represents a tabulator');
// This is a comment
# #
}}
RESULTADO:
function outputSomething(times) {
for (var iter = 0; iter < times; iter++) {
console.log('"# # " represents a tabulator');
// This is a comment
[empty line]
}}
ENTRADA 3:
var x = 'Do you prefer spaces or tabs?';
var y = 'I\'m using both here. Sue me.';
# # ####
console.log(x + ' ' + y);
RESULTADO:
var x = 'Do you prefer spaces or tabs?';
var y = 'I\'m using both here. Sue me.';
[empty line]
console.log(x + ' ' + y);
Você pode processar a entrada como quiser. Saída em qualquer lugar, desde que eu possa copiar e colar a partir dele [ ;)
].
As brechas padrão se aplicam, a resposta mais curta em bytes ganha!
code-golf
string
whitespace
Papayaman1000
fonte
fonte
[empty line]
, ou nenhuma linha?Respostas:
Japonês ,
10 8 6 54 bytesExperimente online!
Explicação
Então,
mx1R
divide a string pelaR
qual é uma nova linha, corta o lado direito de cada linha usandox1
e junta as strings novamente com uma nova linha.Economizou 2 bytes graças ao ETHproductions.
fonte
®x1}R
.mx1R
para resolver todo o problema em 4 bytes de ASCII :-) (Thex1
é automaticamente interpretado porm
enquanto_x1}
mx1R
que funcionaria, mas é legal que funcione!Retina , 5 bytes
Experimente online!
Uma abordagem não tão óbvia nos recompensa com uma pontuação melhor :)
Explicação
G
indica isso como um estágio Grep, mantendo apenas as linhas em que uma correspondência com a expressão regular fornecida (\S
, corresponde a caracteres não espaciais) pode ser encontrada. Se não fosse o começo,%
isso removeria completamente as linhas em vez de apenas "esvaziá-las".O
%
é um modificador que aplica o estágio uma vez a cada linha e, em seguida, junta os resultados com novas linhas: no nosso caso, isso significa que a string vazia retornada pelo Grep para linhas somente em espaço em branco se tornará uma linha vazia no resultado.fonte
sed , 6 bytes
Experimente online!
fonte
s
ubstituição. Usar uma correspondência simples eg
foi uma maneira inteligente de economizar alguns bytes.sed
que não tem\S
ou "algo que não é espaço em branco". Ou faz?/\S/!g
V ,
5, 4 bytesExperimente online!
Explicação:
Hexdump:
fonte
JavaScript (ES6), 26 bytes
Não entendo por que isso está recebendo tantos votos positivos!
Tente
fonte
Python 3 ,
635536 bytesEntrada e saída são matrizes de strings. Participe
'\n'
.Para o programa original que as cadeias de E / S:
Experimente online!
Economizou 8 bytes graças a @Rod!
Guardou 19 bytes graças a @LeakyNun!
fonte
CJam ,
1816 bytesObserve que a sequência contém 1 espaço e 1 guia.
Experimente online!
Explicação
fonte
Retina , 8 bytes
Um desafio realmente inútil.
m
torna a multilinha (ignora a nova linha).\s
corresponde ao espaço e à guia.Experimente online!
fonte
Vim,
2018161310 bytesEu não sou um especialista em Vim, mas essa pergunta precisa de uma resposta em Vim.
:%s/^\s*$<cr>
<cr>
é um retorno de carro.Changelog:
:norm
ao invés de:normal
(-2 bytes)*
vez de+
significa que já corresponderemos a linhas vazias, mas isso não importa. E agora podemos nos livrar de\v
( opção muito mágica ) (-2 bytes)fonte
:%s/^\s*$<cr>
AWK ,
1211 bytesExperimente online!
Eu estava apenas sentindo que o AWK deveria ter uma resposta também
Funciona por:
fonte
APL (Dyalog) ,
1110 bytes⎕R
é um operador que deriva uma função que substitui coisas. Nesse caso, qualquer coisa correspondida pelo RegEx é substituída por uma sequência vazia.fonte
Ruby, 22 bytes
Solução simples de regex
fonte
Java 7, 57 bytes
Explicação:
Código do teste:
Experimente aqui.
fonte
Groovy, 31 bytes
fonte
Perl 6 ,
1512 bytes15
Tente
11 + 1
Principalmente o mesmo que acima.
-p
executa o código para cada linha de entrada, colocando a linha$_
e imprimindo o que resta$_
.s
substitui no local, enquantoS
retorna o resultado.:g
/:global
como-p
cuida disso.fonte
Python 2 , 26 bytes
Experimente online! Insere e gera uma lista de strings.
Isso tira proveito da decisão nos comentários de que o espaço em branco à direita pode ser removido em linhas não vazias.
fonte
Vim,
139 bytes:v/\S/le↵
Editar% s:
Resposta original:
:v/\S/d↵
(com base nesta pergunta do vim no SO ).Exclui linhas vazias, que não são o comportamento esperado.
Resposta válida usando vglobal :
:v/\S/norm D↵
Agora, usando o comando ex de alinhamento à esquerda em vez de
normal D
fonte
C, 168 bytes
Detalhado
fonte
C, 100 bytes
Veja como funciona online .
fonte
QuadR , 5 bytes
Experimente online!
\s+
substitua um ou mais caracteres de espaço em branco seguidos por$
final da linhacom nada
fonte