अन्यथा खाली लाइनों पर व्हाट्सएप से छुटकारा पाएं


17

आह, अभी तक इस स्टैक का मेरा एक और स्वार्थी उपयोग है

Chrome बुक स्वामी होने के नाते, मैं ऐस आईडीई का लगातार उपयोगकर्ता हूं, जो क्लाउड 9 द्वारा उपयोग किया जाता है। इसके पास अतिरिक्त व्हाट्सएप से निपटने के लिए बहुत सारे उपकरण हैं, लेकिन इसमें विशेष रूप से एक की कमी है: खाली लाइनों को साफ करना।

आपका मिशन आज है, एक जगह से एक इनपुट दिया गया है जिसे मैं कॉपी-पेस्ट कर सकता हूं [ ;)], कुछ समान उत्पादन, अन्यथा खाली लाइनों पर सभी रिक्त स्थान और सारणी को सहेजें।

मैं कुछ उदाहरण दूंगा, जिसमें #व्हाट्सएप के चरित्रों का प्रतिनिधित्व किया जाएगा।


INPUT 1:

if (this.Color !== 'blue') {
##
  this.Color = 'blue';
}

उत्पादन:

if (this.Color !== 'blue') {
[empty line]
  this.Color = 'blue';
}

INPUT 2:

function outputSomething(times) {
  for (var iter = 0; iter < times; iter++) {
    console.log('"# # " represents a tabulator');
    // This is a comment
# # 
}}

उत्पादन:

function outputSomething(times) {
  for (var iter = 0; iter < times; iter++) {
    console.log('"# # " represents a tabulator');
    // This is a comment
[empty line]
}}

INPUT 3:

var x = 'Do you prefer spaces or tabs?';
var y = 'I\'m using both here. Sue me.';
# # ####
console.log(x + ' ' + y);

उत्पादन:

var x = 'Do you prefer spaces or tabs?';
var y = 'I\'m using both here. Sue me.';
[empty line]
console.log(x + ' ' + y);

आप जिस इनपुट को पसंद करते हैं, उसे प्रोसेस कर सकते हैं। कहीं भी आउटपुट, जब तक मैं इससे कॉपी-पेस्ट कर सकता हूं [ ;)]।

स्टैंडर्ड कमियां लागू, बाइट्स जीत में सबसे कम जवाब!


क्या हमें कोई खाली रेखा छोड़नी है जहाँ वह कहता है [empty line], या कोई रेखा नहीं है?
लीक नून

6
ओह, और, इससे पहले कि कोई ऐसा करता है, कोई 'रिक्त स्थान बनाम सारणीकारों' के पवित्र युद्ध में शामिल नहीं हो रहा है। ऐसा करने से आपके उत्तर 10,000 बाइट के दंड के साथ
समाप्त हो जाते हैं

1
और क्या ये सभी स्पष्टीकरण आवश्यक हैं? बस उन स्थानों पर न्यूक स्पेस और टेबुलेटर है जिनमें कोई अन्य वर्ण नहीं है।
Papayaman1000

1
क्या हम मान सकते हैं कि इनपुट में व्हाट्सएप को किसी भी लाइन पर नहीं रखा जाएगा (सभी व्हाट्सएप को छोड़कर, जाहिर है)? कोई भी उदाहरण नहीं देता।
ETHproductions

1
यदि गैर-व्हाट्सएप वाली लाइन में व्हॉट्सएप का पता चलता है, तो क्या उस व्हाट्सएप को स्ट्रिप करना ठीक है?
डिजिटल ट्रामा

जवाबों:


15

जाप , 10 8 6 5 4 बाइट्स

mx1R

इसे ऑनलाइन आज़माएं!

व्याख्या

(from the Japt docs)
.m(f,s=""):
Splits this with s, maps each item by f, then rejoins with s.

तो mx1Rस्ट्रिंग को विभाजित करता है Rजिसके द्वारा एक नई रेखा है, प्रत्येक पंक्ति के दाहिने हाथ की तरफ का उपयोग करके ट्रिम करता है x1और फिर से एक नई रेखा के साथ तार जुड़ता है।

सहेजे गए 2 बाइट्स ETHproductions के लिए धन्यवाद।


1
बधाई हो! आप रेटिना बाहर गोल्फ!
लीक नून

बहुत अच्छा! आप के साथ एक और बाइट बचा सकते हैं ®x1}R
ETHproductions

स्क्रैच कि, आप सिर्फ mx1RASCII के 4 बाइट्स में पूरी समस्या को हल करने के लिए कर सकते हैं :-) ( x1स्वचालित रूप से इस रूप में व्याख्या की जाती mहै_x1}
ETHproductions

@ETHproductions ओह वाह, सुझावों के लिए धन्यवाद। देख नहीं सकते कि क्यों mx1Rकाम करेगा, लेकिन यह अच्छा है कि यह करता है!
टॉम


23

रेटिना , 5 बाइट्स

%G`\S

इसे ऑनलाइन आज़माएं!

इतना स्पष्ट दृष्टिकोण बेहतर स्कोर के साथ हमें पुरस्कृत नहीं करता है :)

व्याख्या

Gयह एक ग्रेप चरण के रूप में इंगित करता है, केवल उन पंक्तियों को रखते हुए जहां दिए गए रेगेक्स के लिए एक मैच (और \S, गैर-अंतरिक्ष पात्रों से मेल खाता है) पाया जा सकता है। यदि यह शुरू करने के लिए नहीं था, तो यह %पूरी तरह से केवल "खाली" करने के बजाय लाइनों को हटा देगा।

%हमारे मामले में इसका मतलब है कि रिक्त स्ट्रिंग खाली स्थान के-केवल लाइनों के लिए Grep द्वारा लौटाए गए परिणाम में एक खाली पंक्ति बन जाएगा: प्रत्येक पंक्ति के लिए एक बार मंच पर लागू होता है जो और फिर नई-पंक्तियों के साथ परिणाम मिलती है एक संशोधक है।


बस के बारे में यह पोस्ट करने के लिए अच्छा था। :)
मार्टिन एंडर

मुझे लगता है कि रेटिना के बारे में जानने के लिए मेरे पास अभी भी बहुत कुछ है।
लीकेई नून

17

sed , 6 बाइट्स

/\S/!g

इसे ऑनलाइन आज़माएं!

/  /!  # If the line doesn't contain...
 \S    # anything non-whitespace (i.e. the entire line is whitespace)
     g #   replace the pattern space with the hold space which is empty

2
मैंने शायद एक sउबटन का प्रयोग किया होगा । एक सादे मैच का उपयोग करना और gकुछ बाइट्स को बचाने का एक चतुर तरीका था।
डिजिटल ट्रॉमा

1
@DigitalTrauma यह मेरा पहला उपाय था। इससे 1 बाइट बच गई।
रिले

1
बहुत बुरा sedनहीं है \Sया "कुछ है जो व्हाट्सएप नहीं है"। या करता है? /\S/!g
अर्ग २

@रागैर है! अच्छा!
रिले

9

वी , 5 , 4 बाइट्स

ÇÓ/D

इसे ऑनलाइन आज़माएं!

स्पष्टीकरण:

Ç       " On every line not matching the following regex:
 Ó/     "   a non-whitespace character...
   D    "   Delete the whole line

Hexdump:

00000000: c7d3 2f44                                ../D

क्या आप सुनिश्चित हैं कि यह केवल 5 है? V अक्सर प्रति वर्ण 1 बाइट से अधिक का उपयोग करता है।
पापायमान 1000

1
@ papayamam1000 V कभी भी एक से अधिक बाइट प्रति वर्ण का उपयोग नहीं करता है। यहाँ यह लैटिन 1 एन्कोडिंग का उपयोग करता है, जहाँ सभी गैर-एएससीआईआई प्रतीक एक बाइट हैं। मैं एक hexdump जोड़ दिया है
DJMcMayhem

बहुत अच्छी तरह से, तो यह है।
Papayaman1000

"एक गैर-व्हाट्सएप चरित्र" यह विलोपन से कई व्हाट्सएप चार्ट के साथ लाइनव को कैसे छूट नहीं देता है?
अदाम

9

जावास्क्रिप्ट (ईएस 6), 26 बाइट्स

मुझे समझ नहीं आ रहा है कि यह बहुत सारे बदलाव क्यों हो रहे हैं!

s=>s.replace(/^\s+$/gm,``)

कोशिश करो

f=
s=>s.replace(/^\s+$/gm,``)
i.addEventListener("input",_=>o.innerText=f(i.value))
<textarea id=i></textarea><pre id=o>


7

पायथन 3 , 63 55 36 बाइट्स

lambda s:[x.strip()and x for x in s]

इनपुट और आउटपुट स्ट्रिंग्स के ऐरे हैं। पर सम्मिलित हों '\n'

मूल कार्यक्रम के लिए जो I / O के तार हैं:

lambda s:'\n'.join(x.strip()and x for x in s.split('\n'))

इसे ऑनलाइन आज़माएं!

@Rod की बदौलत 8 बाइट्स बचाए!
@LeakyNun की बदौलत 19 बाइट्स बचाए!


@LeakyNun ओह हम, भूल गए कि मैं ऐसा कर सकता था। धन्यवाद!
HyperNeutrino

2
मुझे लगता है कि आपका मूल कोड चुनौती के अनुरूप था। यह आपसे एक इनपुट में पेस्ट टेक्स्ट को कॉपी करने में सक्षम होने के लिए कहता है, इसलिए वास्तव में आपके कोड को एक स्ट्रिंग लेना चाहिए, न कि सरणी, और इसे विभाजित करना चाहिए।
नॉट्स 90 कोडेक्सैक्ट.ऑर्क

6

सीजेएम , 18 16 बाइट्स

qN/{_" 	"-\e&N}%

ध्यान दें कि स्ट्रिंग में 1 स्थान और 1 टैब है।

इसे ऑनलाइन आज़माएं!

व्याख्या

q                 e# Read the input
 N/               e# Split it on newlines
   {              e# Apply this block to each line:
    _             e#  Copy the line
     "  "-        e#  Remove all spaces and tabs from the copy
          \       e#  Bring the original to the top of the stack
           e&     e#  Logical AND; returns the original line if the copy is truthy 
                  e#    (non-empty), otherwise returns the copy line
             N    e#  Push a newline after the line
              }%  e# (end of block)

5

रेटिना , 8 बाइट्स

m`^\s+$

वास्तव में एक निरर्थक चुनौती। mइसे मल्टीलाइन बनाता है (न्यूलाइन को अनदेखा करता है)। \sस्पेस और टैब दोनों से मेल खाता है।

इसे ऑनलाइन आज़माएं!


रेटिना हमेशा पहले होता है। भले ही इसका पोस्टर टिप्पणियों में [संदिग्ध रूप से आवश्यक] स्पष्टीकरण के लिए पूछ रहा हो।
पापायमान 1000

@ Papayaman1000 लोग हर समय ऐसा करते हैं। तब वे अपने उत्तरों को बदल सकते हैं यदि नियम अपेक्षा से भिन्न हो।
HyperNeutrino

6
Tha चुनौती बहुत दिलचस्प नहीं हो सकती है, लेकिन इसे वास्तव में बेकार कहना अत्यधिक लगता है
लुइस मेंडो

5
यह आपका शब्द है, और केवल आप अपने शब्दों का आशय जानते हैं। इसे संपादित करना या नहीं करना, और कौन सा नया शब्द प्रयोग करना है, यह पूरी तरह से आपका निर्णय है
लुइस मेंडो

3
@HyperNeutrino कार्रवाई का सही पाठ्यक्रम चुनौती को बंद करने के रूप में अस्पष्ट है और इसे फिर से खोलना है क्योंकि उन स्पष्टीकरणों को जोड़ा गया है।
मार्टिन एंडर

5

विम, २० १ 18 16 13 10 बाइट्स

मैं किसी भी तरह से एक विम विशेषज्ञ नहीं हूं, लेकिन इस सवाल के लिए एक विम जवाब की जरूरत है।

:%s/^\s*$<cr>

<cr> एक गाड़ी वापसी है।

बदलाव का:

  • :normके बजाय :normal(-2 बाइट्स)
  • पर स्विच किया जा *के बजाय +साधन हम पहले से ही खाली लाइनों से मेल खाएगा, लेकिन उस बात नहीं करता है। और अब हम छुटकारा पा सकते हैं \v( बहुत जादू विकल्प) (-2 बाइट्स)
  • नया तरीका: खाली लाइन के साथ मेल खाने वाली हर लाइन को बदलने के बजाय, हम हर उस लाइन को रिप्लेस करते हैं, जिसमें खाली लाइन के साथ नॉन-व्हाट्सएप कैरेक्टर नहीं होते। (-3 बाइट्स)
  • वास्तव में, एक सामान्य प्रतिस्थापन कम होता है (धन्यवाद, @DJMcMayhem) (-3 बाइट्स)

1
: यह एक विकल्प के आदेश के रूप में कम है:%s/^\s*$<cr>
DJMcMayhem

5

AWK , 12 11 बाइट्स

!NF{$0=""}1

इसे ऑनलाइन आज़माएं!

मुझे लग रहा था जैसे AWK के पास भी कोई जवाब होना चाहिए

यह इसके द्वारा काम करता है:

  1. यदि इनपुट में कोई फ़ील्ड नहीं है, तो जाँच करना। डिफ़ॉल्ट रूप से AWK खेतों के बीच विभाजक के रूप में सभी व्हाट्सएप का उपयोग करता है
  2. यदि कोई फ़ील्ड नहीं हैं, तो इनपुट लाइन को रिक्त स्ट्रिंग में बदलें
  3. लाइन प्रिंट करें। जैसा कि 1 एक सत्य मान है, यह डिफ़ॉल्ट कमांड चलाता है जो लाइन को प्रिंट कर रहा है

घुंघराले ब्रैकेट के बाद अर्धविराम के रूप में एक बाइट हटाया जाना आवश्यक नहीं है
jmriego

आपने मुझे एक विचार दिया ... ^ ^ मैंने इसे वापस किया और 2 बाइट्स के साथ समाप्त हुआ: 'एनएफ'
ओलिवियर दुलैक

ओउ ... मुझे लगा कि हमें खाली लाइनों से छुटकारा पाना था ...:
ओलिवियर दुलक

1
मैंने अपनी पहली कोशिश और उसी कारण से बिल्कुल वैसा ही किया। मुझे पता है कि लगता है :)
jmriego

अच्छी खबर यह है: अब मुझे पता है कि कैसे मुझे अपने खुद के कार्यक्रमों (या जब एक फ़ाइल प्रदर्शित करना) से छुटकारा पाना है तो एक बहुत ही अजीब awel oneliner ^^ के साथ। आपका जवाब अच्छा और चुस्त है, वैसे। बहुत बढ़िया।
ओलिवियर दुलैक

5

एपीएल (डायलॉग) , 11 10 बाइट्स

'\s+$'R''

⎕Rएक ऑपरेटर है जो एक फ़ंक्शन को निकालता है जो सामान को बदलता है। इस मामले में, RegEx द्वारा मिलान की गई किसी भी चीज़ को खाली स्ट्रिंग के साथ बदल दिया जाता है।


4

रूबी, 22 बाइट्स

->s{s.gsub /^\s+$/,''}

सीधा रेगेक्स समाधान


3

जावा 7, 57 बाइट्स

String c(String s){return s.replaceAll("(?m)^\\s+$","");}

स्पष्टीकरण:

String c(String s){     // Method with String parameter and String return-type
  return s.replaceAll(  //  Return the input String after we've replaced
    "(?m)^\\s+$",       //  all lines only containing whitespaces
    "");                //  with empty Strings
                        //    (NOTE: `(?m)` enables multiline regex)
}                       // End of method

टेस्ट कोड:

इसे यहाँ आज़माएँ।

class M{
  static String c(String s){return s.replaceAll("(?m)^\\s+$","");}

  public static void main(String[]a){
    System.out.println(c("if (this.Color !== 'blue') {\n \t\n  this.Color = 'blue';\n}"));
    System.out.println();
    System.out.println(c("function outputSomething(times) {\n  for (var iter = 0; iter < times; iter++) {\n    console.log('\"# # \" represents a tabulator');\n    // This is a comment\n  \t\n}}"));
    System.out.println();
    System.out.println(c("var x = 'Do you prefer spaces or tabs?';\nvar y = 'I\'m using both here. Sue me.';\n    \t\t\t \nconsole.log(x + ' ' + y);"));
  }
}


1

पर्ल 6 ,  15  12 बाइट्स

15

{S:g/^^\h+$$//}

कोशिश करो

{         # bare block lambda with implicit parameter 「$_」

  S       # string replace (implicitly against 「$_」)
  :global # globally
  /
    ^^    # match beginning of line
      \h+ # match at least one horizontal whitespace
    $$    # match end of line

  //      # replace with nothing
}

11 + 1

perl6 -pe 's/^^\h+$$//'

शायद ही ऊपर जैसा हो।

  • -pइनपुट की प्रत्येक पंक्ति के लिए कोड चलाता है, $_जो कुछ भी बचा है उसमें लाइन को प्रिंट करना और प्रिंट करना $_
  • sजगह में जगह है, जबकि Sपरिणाम देता है।
  • के लिए कोई ज़रूरत नहीं :g/ :globalके रूप में -pइस बात का ख्याल रखता है।

1

पायथन 2 , 26 बाइट्स

lambda l:map(str.rstrip,l)

इसे ऑनलाइन आज़माएं!इनपुट और आउटपुट स्ट्रिंग्स की एक सूची।

यह टिप्पणियों में सत्तारूढ़ का लाभ उठाता है कि गैर-खाली लाइनों पर व्हाट्सएप को पीछे छोड़ दिया जा सकता है।


1

विम, १३ ९ बाइट्स

:v/\S/le↵

संपादन:

  • मूल उत्तर: :v/\S/d↵( SO पर इस विम प्रश्न पर आधारित) )।
    यह खाली लाइनों को हटा देता है, जो अपेक्षित व्यवहार नहीं है।

  • Vglobal का उपयोग करते हुए मान्य उत्तर ::v/\S/norm D↵

  • अब इसके बजाय बाएँ-संरेखित पूर्व आदेश का उपयोग कर रहे हैंnormal D


PPCG में आपका स्वागत है! मुझे वास्तव में यकीन नहीं है कि आपने माफी क्यों मांगी, क्योंकि यह अपने आप में एक मान्य उत्तर है।
मेगो

धन्यवाद! यह @ L3viathan के उत्तर पर फैलता है और उसी "भाषा" का उपयोग करता है, इसलिए मैंने जवाब देने के लिए (पहले से ही बड़ी) संख्या को सीमित करने के लिए उसके समाधान पर टिप्पणी की होगी।
मॉर्गन

हम बहुत सारे उत्तर देने, या एक ही भाषा में कई समाधान होने से बहुत चिंतित नहीं हैं। यद्यपि हम मौजूदा उत्तरों पर छोटे सुधारों के लिए नए उत्तरों के बजाय टिप्पणियों को प्रोत्साहित करते हैं, फिर भी एक नया उत्तर पोस्ट करना ठीक है (विशेषकर यह देखते हुए कि आप टिप्पणी नहीं कर सकते)।
मेगो

0

सी, 168 बाइट्स

#define P putchar(*t++)
s;e(char*t){s=0;while(*t>10)if(*t!=32|*t!=9)return 0;else t++,s++;return s;}
r(char*t){while(*t==10)P;if(!*t)return;if(!e(t))while(*t)P;t+=e(t);}

विस्तृत

#include <stdio.h>

int e (char * t)
{
    int s = 0;

    // till the end of the line
    while (*t!='\0' && *t!='\n')
        // if it's not a space
        if (*t!=' ' || *t!='    ')
            // ignore the line
            return 0;
        else
            // count the space
            t++, s++;

    // return number of spaces
    return s;
}

void r (char * t)
{
    // skip to empty lines
    while (*t != '\0' && *t == '\n') putchar('\n'), t++;

    // stop at end of string
    if (*t == '\0') return;

    // if there is contnet print it
    if (!e(t)) while(*t != '\0') putchar(*t), t++;

    // skip to the end of line
    t += e(t);
}

int main (int argc, char**argv)
{
    if (argc > 1) r(argv[1]);
    putchar('\n');
    return 0;
}

0

सी, 100 बाइट्स

c,i,j;f(char*s){for(i=j=c=0;s[i];s[++j]^10?c=s[j]^32:(printf(!c?"\n":"%.*s",j-i+1,s+i),c=0,i=j+1));}

इसे ऑनलाइन देखें ।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.