Ah, encore une autre de mes utilisations égoïstes de cette pile .
En tant que propriétaire de Chromebook, je suis un utilisateur fréquent de l'Ace IDE, l'éditeur utilisé par Cloud9. Il dispose de nombreux outils pour gérer les espaces blancs excédentaires, mais il en manque notamment un: effacer les lignes vides.
Votre mission aujourd'hui est, étant donné une entrée d'un endroit où je peux copier-coller dans [ ;)
], produire quelque chose d'identique, enregistrer tous les espaces et tabulateurs sur des lignes autrement vides.
Je vais donner quelques exemples, avec #
s représentant des espaces à supprimer.
ENTRÉE 1:
if (this.Color !== 'blue') {
##
this.Color = 'blue';
}
PRODUCTION:
if (this.Color !== 'blue') {
[empty line]
this.Color = 'blue';
}
ENTRÉE 2:
function outputSomething(times) {
for (var iter = 0; iter < times; iter++) {
console.log('"# # " represents a tabulator');
// This is a comment
# #
}}
PRODUCTION:
function outputSomething(times) {
for (var iter = 0; iter < times; iter++) {
console.log('"# # " represents a tabulator');
// This is a comment
[empty line]
}}
ENTRÉE 3:
var x = 'Do you prefer spaces or tabs?';
var y = 'I\'m using both here. Sue me.';
# # ####
console.log(x + ' ' + y);
PRODUCTION:
var x = 'Do you prefer spaces or tabs?';
var y = 'I\'m using both here. Sue me.';
[empty line]
console.log(x + ' ' + y);
Vous pouvez traiter l'entrée comme bon vous semble. Sortez n'importe où, tant que je peux copier-coller à partir de celui-ci [ ;)
].
Les lacunes standard s'appliquent, la réponse la plus courte en octets gagne!
la source
[empty line]
, ou pas de ligne du tout?Réponses:
Japt ,
10 8 6 54 octetsEssayez-le en ligne!
Explication
mx1R
Divise donc la chaîne parR
laquelle se trouve une nouvelle ligne, coupe le côté droit de chaque ligne en utilisantx1
et joint à nouveau les chaînes avec une nouvelle ligne.Sauvegardé 2 octets grâce à ETHproductions.
la source
®x1}R
.mx1R
pour résoudre le problème en 4 octets ASCII :-) (Lex1
est interprété automatiquement parm
que_x1}
mx1R
ça marcherait, mais c'est cool que ça marche!Rétine , 5 octets
Essayez-le en ligne!
Une approche pas si évidente nous récompense avec un meilleur score :)
Explication
G
indique cela comme une étape Grep, ne conservant que les lignes où une correspondance avec l'expression régulière donnée (\S
, correspond aux caractères non-espace) peut être trouvée. Si ce n'était pas pour le démarrage,%
cela supprimerait complètement les lignes au lieu de simplement les "vider".Le
%
est un modificateur qui applique l'étape une fois à chaque ligne et joint ensuite les résultats aux sauts de ligne: dans notre cas, cela signifie que la chaîne vide renvoyée par Grep pour les lignes contenant uniquement des espaces blancs deviendra une ligne vide dans le résultat.la source
sed , 6 octets
Essayez-le en ligne!
la source
s
substitution. Utiliser une correspondance simple etg
était un moyen intelligent d'économiser quelques octets.sed
qu'il n'y ait pas\S
ou "quelque chose qui n'est pas un espace". Ou alors?/\S/!g
V ,
5, 4 octetsEssayez-le en ligne!
Explication:
Hexdump:
la source
JavaScript (ES6), 26 octets
Je ne comprends pas pourquoi cela fait autant de votes positifs!
Essayez-le
la source
Python 3 ,
635536 octetsL'entrée et la sortie sont des tableaux de chaînes. Rejoignez-nous
'\n'
.Pour le programme d'origine que les chaînes d'E / S:
Essayez-le en ligne!
8 octets enregistrés grâce à @Rod!
19 octets enregistrés grâce à @LeakyNun!
la source
CJam ,
1816 octetsNotez que la chaîne contient 1 espace et 1 tabulation.
Essayez-le en ligne!
Explication
la source
Rétine , 8 octets
Un défi vraiment inutile.
m
le rend multiligne (ignore la nouvelle ligne).\s
correspond à la fois à l'espace et à la tabulation.Essayez-le en ligne!
la source
Vim,
2018161310 octetsJe ne suis en aucun cas un expert Vim, mais cette question nécessite une réponse Vim.
:%s/^\s*$<cr>
<cr>
est un retour chariot.Journal des modifications:
:norm
au lieu de:normal
(-2 octets)*
place de+
signifie que nous associerons des lignes déjà vides, mais cela n'a pas d'importance. Et maintenant, nous pouvons nous débarrasser de\v
( option très magique ) (-2 octets)la source
:%s/^\s*$<cr>
AWK ,
1211 octetsEssayez-le en ligne!
Je me sentais juste comme AWK devrait aussi avoir une réponse
Il fonctionne par:
la source
APL (Dyalog) ,
1110 octets⎕R
est un opérateur qui dérive une fonction qui remplace les éléments. Dans ce cas, tout ce qui correspond au RegEx est remplacé par une chaîne vide.la source
Rubis, 22 octets
Solution regex simple
la source
Java 7, 57 octets
Explication:
Code de test:
Essayez-le ici.
la source
Groovy, 31 octets
la source
Perl 6 ,
1512 octets15
Essayez-le
11 + 1
Largement les mêmes que ci-dessus.
-p
exécute le code pour chaque ligne d'entrée, en insérant la ligne$_
et en imprimant tout ce qui reste$_
.s
remplace in-place, alors queS
renvoie le résultat.:g
/:global
as s'en-p
occupe.la source
Python 2 , 26 octets
Essayez-le en ligne! Entrées et sorties une liste de chaînes.
Cela profite de la décision dans les commentaires que les espaces de fin peuvent être supprimés sur les lignes non vides.
la source
Vim,
139 octets:v/\S/le↵
Modifications:
Réponse originale:
:v/\S/d↵
(basée sur cette question vim sur SO ).Il supprime les lignes vides, ce qui n'est pas le comportement attendu.
Réponse valide en utilisant vglobal :
:v/\S/norm D↵
Maintenant, en utilisant la commande ex alignement à gauche au lieu de
normal D
la source
C, 168 octets
Détaillé
la source
C, 100 octets
Voyez-le fonctionner en ligne .
la source
QuadR , 5 octets
Essayez-le en ligne!
\s+
remplacer un ou plusieurs caractères d'espacement, suivi de la$
fin de la ligneavec rien
la source