Ach, jeszcze jedno z moich samolubnych zastosowań tego Stosu .
Będąc właścicielem Chromebooka, jestem częstym użytkownikiem Ace IDE, edytora używanego przez Cloud9. Ma wiele narzędzi do radzenia sobie z nadmiarem białych znaków, ale brakuje mu jednego: usuwania pustych linii.
Twoja dzisiejsza misja polega na tym, że biorąc pod uwagę dane z miejsca, które mogę skopiować i wkleić do [ ;)
], wypisać coś identycznego, zapisać wszystkie spacje i tabulatory na pustych liniach.
Podam kilka przykładów, gdzie #
s oznacza białe znaki do usunięcia.
WEJŚCIE 1:
if (this.Color !== 'blue') {
##
this.Color = 'blue';
}
WYNIK:
if (this.Color !== 'blue') {
[empty line]
this.Color = 'blue';
}
WEJŚCIE 2:
function outputSomething(times) {
for (var iter = 0; iter < times; iter++) {
console.log('"# # " represents a tabulator');
// This is a comment
# #
}}
WYNIK:
function outputSomething(times) {
for (var iter = 0; iter < times; iter++) {
console.log('"# # " represents a tabulator');
// This is a comment
[empty line]
}}
WEJŚCIE 3:
var x = 'Do you prefer spaces or tabs?';
var y = 'I\'m using both here. Sue me.';
# # ####
console.log(x + ' ' + y);
WYNIK:
var x = 'Do you prefer spaces or tabs?';
var y = 'I\'m using both here. Sue me.';
[empty line]
console.log(x + ' ' + y);
Możesz przetwarzać dane wejściowe w dowolny sposób. Wyjście gdziekolwiek, o ile mogę z niego skopiować i wkleić [ ;)
].
Obowiązują standardowe luki, wygrywa najkrótsza odpowiedź w bajtach!
code-golf
string
whitespace
Papayaman1000
źródło
źródło
[empty line]
, czy w ogóle żadnej linii?Odpowiedzi:
Japt ,
10 8 6 54 bajtówWypróbuj online!
Wyjaśnienie
Więc
mx1R
dzieli ciąg, przezR
który jest nowy wiersz, przycina prawą stronę każdej linii za pomocąx1
i ponownie łączy ciągi z nową linią.Zaoszczędzono 2 bajty dzięki produktom ETH.
źródło
®x1}R
.mx1R
aby rozwiązać cały problem w 4 bajtach ASCII :-) (Tox1
jest automatycznie interpretowanem
jako_x1}
mx1R
miałoby działać, ale fajnie, że działa!Siatkówka , 5 bajtów
Wypróbuj online!
Nie tak oczywiste podejście nagradza nas lepszym wynikiem :)
Wyjaśnienie
G
wskazuje to jako etap Grepa, zachowując tylko te wiersze, w których można znaleźć dopasowanie do podanego wyrażenia regularnego (\S
, pasuje do znaków spacji). Gdyby nie było na początku%
, całkowicie usunęłoby to linie zamiast po prostu je „opróżniło”.%
To modyfikator, który odnosi się do stadium po każdym wierszu, a następnie dołącza do wyników z nowymi liniami: W naszym przypadku oznacza to, że pusty ciąg zwracany przez Grep dla białych linii tylko stanie się pusta linia w wyniku.źródło
sed , 6 bajtów
Wypróbuj online!
źródło
s
użyłbym upstytucji. Używanie zwykłego dopasowania ig
był sprytnym sposobem na zaoszczędzenie kilku bajtów.sed
że nie ma\S
lub „coś, co nie jest spacją”. A może to?/\S/!g
V ,
5, 4 bajtyWypróbuj online!
Wyjaśnienie:
Hexdump:
źródło
JavaScript (ES6), 26 bajtów
Nie rozumiem, dlaczego jest tak dużo entuzjastów!
Spróbuj
źródło
Python 3 ,
635536 bajtówDane wejściowe i wyjściowe są tablicami ciągów. Dołącz
'\n'
.W przypadku oryginalnego programu, który ciągi We / Wy:
Wypróbuj online!
Zaoszczędź 8 bajtów dzięki @Rod!
Zaoszczędź 19 bajtów dzięki @LeakyNun!
źródło
CJam ,
1816 bajtówZauważ, że ciąg zawiera 1 spację i 1 tabulator.
Wypróbuj online!
Wyjaśnienie
źródło
Retina, 8 bytes
A really pointless challenge.
m
makes it multiline (ignores newline).\s
matches both space and tab.Try it online!
źródło
Vim,
2018161310 bytesI am by no means a Vim expert, but this question needs a Vim answer.
:%s/^\s*$<cr>
<cr>
is a carriage return.Changelog:
:norm
instead of:normal
(-2 bytes)*
instead of+
means we will match already empty lines, but that doesn't matter. And now we can get rid of\v
(very magic option) (-2 bytes)źródło
:%s/^\s*$<cr>
AWK,
1211 bytesTry it online!
I was just feeling like AWK should have an answer too
It works by:
źródło
APL (Dyalog),
1110 bytes⎕R
is an operator which derives a function which replaces stuff. In this case, anything matched by the RegEx is replaced with an empty string.źródło
Ruby, 22 bytes
Straightforward regex solution
źródło
Java 7, 57 bytes
Explanation:
Test code:
Try it here.
źródło
Groovy, 31 bytes
źródło
Perl 6,
1512 bytes15
Try it
11+1
Largely the same as above.
-p
runs the code for every line of input, putting the line into$_
and printing whatever is left in$_
.s
replaces in-place, whereasS
returns the result.:g
/:global
as-p
takes care of that.źródło
Python 2, 26 bytes
Try it online! Inputs and outputs a list of strings.
This takes advantage of the ruling in the comments that trailing whitespace may be removed on non-empty lines.
źródło
Vim,
139 bytes:v/\S/le↵
Edits:
Original answer:
:v/\S/d↵
(based on this vim question on SO).It deletes empty lines, which isn't the expected behavior.
Valid answer using vglobal:
:v/\S/norm D↵
Now using the left-align ex command instead of
normal D
źródło
C, 168 bytes
Detailed
źródło
C, 100 bytes
See it work online.
źródło
QuadR, 5 bytes
Try it online!
\s+
replace one or more whitespace chars followed by$
end of linewith nothing
źródło