Ah, otro de mis usos egoístas de esta pila .
Como propietario de un Chromebook, soy un usuario frecuente de Ace IDE, el editor utilizado por Cloud9. Tiene muchas herramientas para lidiar con el exceso de espacios en blanco, pero carece notablemente de una: borrar líneas vacías.
Su misión hoy es, dada una entrada desde un lugar donde puedo copiar y pegar en [ ;)
], generar algo idéntico, guardar todos los espacios y tabuladores en líneas vacías.
Daré algunos ejemplos, con #
s que representan caracteres de espacios en blanco que se eliminarán.
ENTRADA 1:
if (this.Color !== 'blue') {
##
this.Color = 'blue';
}
SALIDA:
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
# #
}}
SALIDA:
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);
SALIDA:
var x = 'Do you prefer spaces or tabs?';
var y = 'I\'m using both here. Sue me.';
[empty line]
console.log(x + ' ' + y);
Puede procesar la entrada como quiera. Salida donde sea, siempre que pueda copiar y pegar de él [ ;)
].
Se aplican lagunas estándar, gana la respuesta más corta en bytes.
code-golf
string
whitespace
Papayaman1000
fuente
fuente
[empty line]
, o ninguna línea?Respuestas:
Japt ,
10 8 6 54 bytesPruébalo en línea!
Explicación
Entonces
mx1R
divide la cadena por laR
cual es una nueva línea, recorta el lado derecho de cada línea usandox1
y une las cadenas nuevamente con una nueva línea.Ahorró 2 bytes gracias a ETHproductions.
fuente
®x1}R
.mx1R
para resolver todo el problema en 4 bytes de ASCII :-) (Elx1
se interpreta automáticamentem
como_x1}
mx1R
qué funcionaría, ¡pero es genial que lo haga!Retina , 5 bytes
Pruébalo en línea!
Un enfoque no tan obvio nos recompensa con una mejor puntuación :)
Explicación
G
indica esto como una etapa Grep, manteniendo solo aquellas líneas donde se puede encontrar una coincidencia con la expresión regular dada (\S
, coincide con caracteres que no son espacios). Si no fuera por el comienzo,%
esto eliminaría completamente las líneas en lugar de simplemente "vaciarlas".El
%
es un modificador que aplica la etapa una vez a cada línea y luego une los resultados con nuevas líneas: en nuestro caso, esto significa que la cadena vacía devuelta por Grep para líneas de espacio en blanco se convertirá en una línea vacía en el resultado.fuente
sed , 6 bytes
Pruébalo en línea!
fuente
s
sustitución. Usar una coincidencia simple yg
era una forma inteligente de guardar un par de bytes.sed
que no tenga\S
o "algo que no sea un espacio en blanco". O lo hace?/\S/!g
V ,
5, 4 bytesPruébalo en línea!
Explicación:
Hexdump:
fuente
JavaScript (ES6), 26 bytes
¡No entiendo por qué esto está recibiendo tantos votos positivos!
Intentalo
fuente
Python 3 ,
635536 bytesLa entrada y la salida son matrices de cadenas. Unete
'\n'
.Para el programa original que encadena las E / S:
Pruébalo en línea!
¡Guardado 8 bytes gracias a @Rod!
¡Ahorró 19 bytes gracias a @LeakyNun!
fuente
CJam ,
1816 bytesTenga en cuenta que la cadena contiene 1 espacio y 1 pestaña.
Pruébalo en línea!
Explicación
fuente
Retina , 8 bytes
Un desafío realmente inútil.
m
lo hace multilínea (ignora la nueva línea).\s
coincide con el espacio y la pestaña.Pruébalo en línea!
fuente
Vim,
2018161310 bytesDe ninguna manera soy un experto de Vim, pero esta pregunta necesita una respuesta de Vim.
:%s/^\s*$<cr>
<cr>
Es un retorno de carro.Registro de cambios:
:norm
en lugar de:normal
(-2 bytes)*
lugar de+
significa que haremos coincidir las líneas ya vacías, pero eso no importa. Y ahora podemos deshacernos de\v
( muy mágico opción ) (-2 bytes)fuente
:%s/^\s*$<cr>
AWK ,
1211 bytesPruébalo en línea!
Solo sentía que AWK debería tener una respuesta también
Funciona por:
fuente
APL (Dyalog) ,
1110 bytes⎕R
es un operador que deriva una función que reemplaza cosas. En este caso, todo lo que coincida con el RegEx se reemplaza con una cadena vacía.fuente
Ruby, 22 bytes
Solución directa de expresiones regulares
fuente
Java 7, 57 bytes
Explicación:
Código de prueba:
Pruébalo aquí
fuente
Groovy, 31 bytes
fuente
Perl 6 ,
1512 bytes15
Intentalo
11 + 1
En gran medida lo mismo que arriba.
-p
ejecuta el código para cada línea de entrada, coloca la línea$_
e imprime lo que queda en$_
.s
reemplaza en el lugar, mientras queS
devuelve el resultado.:g
/:global
as-p
se encarga de eso.fuente
Python 2 , 26 bytes
Pruébalo en línea!Entradas y salidas de una lista de cadenas.
Esto aprovecha la decisión en los comentarios de que los espacios en blanco finales pueden eliminarse en líneas no vacías.
fuente
Vim,
139 bytes:v/\S/le↵
Ediciones:
Respuesta original:
:v/\S/d↵
(basada en esta pregunta vim sobre SO ).Elimina líneas vacías, que no es el comportamiento esperado.
Respuesta válida con vglobal :
:v/\S/norm D↵
Ahora usando el comando ex alinear a la izquierda en lugar de
normal D
fuente
C, 168 bytes
Detallado
fuente
C, 100 bytes
Véalo trabajar en línea .
fuente
QuadR , 5 bytes
Pruébalo en línea!
\s+
reemplazar uno o más espacios en blanco seguidos de$
final de la líneasin nada
fuente