অন্যথায় ফাঁকা লাইনে হোয়াইটস্পেস থেকে মুক্তি পান


17

আহ, এই স্ট্যাকের আমার আরও স্বার্থপর ব্যবহার

ক্রোমবুকের মালিক হওয়ার কারণে, আমি ক্লাউড 9 দ্বারা ব্যবহৃত সম্পাদক এস আইডিই এর ঘন ঘন ব্যবহারকারী। অতিরিক্ত শ্বেত স্পেস মোকাবেলার জন্য এটিতে প্রচুর সরঞ্জাম রয়েছে তবে এটিতে উল্লেখযোগ্যভাবে একটির অভাব রয়েছে: খালি লাইন সাফ করা।

আপনার মিশনটি হ'ল, এমন কোনও জায়গা থেকে ইনপুট দেওয়া হয়েছে যা আমি [ ;)] তে অনুলিপি করতে পারি , অনুরূপ কিছু আউটপুট দিতে পারি, অন্যথায় ফাঁকা লাইনে সমস্ত স্থান এবং ট্যাবলেটর সংরক্ষণ করতে পারি।

আমি কয়েকটি উদাহরণ দেব, যার সাথে #সাদা বর্ণের অক্ষরগুলি সরানো হবে।


ইনপুট 1:

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

আউটপুট:

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

ইনপুট 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]
}}

ইনপুট 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
এবং এই সমস্ত ব্যাখ্যা কি প্রয়োজনীয়? কেবলমাত্র লাইনে শূন্যস্থান এবং ট্যাবলেটরগুলিতে এমন কোনও অক্ষর নেই lines
পাপায়মান1000

1
আমরা কি ধরে নিতে পারি যে ইনপুটটিতে কোনও লাইনে (স্পষ্টতই সমস্ত শ্বেতস্থান বাদে) শ্বেত স্পেস থাকবে না? উদাহরণগুলির কোনওটিই করেন না।
ইটিএইচ প্রডাকশনগুলি

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করে আবার একটি নতুন লাইনের সাথে স্ট্রিংগুলিতে যোগ দেয়।

ETH প্রডাকশনগুলির জন্য 2 বাইট সংরক্ষণ করা হয়েছে।


1
অভিনন্দন! আপনি আউট-গল্ফ রেটিনা!
লিকি নুন

খুব সুন্দর! আপনি এর সাথে অন্য একটি বাইট সংরক্ষণ করতে পারেন ®x1}R
ইটিএইচ প্রডাকশনস

স্ক্র্যাচ করুন যে, আপনি mx1Rকেবল এএসসিআইআই :-) এর 4 বাইটে পুরো সমস্যাটি সমাধান করার জন্য করতে পারেন ( x1এটি স্বয়ংক্রিয়ভাবে এর দ্বারা ব্যাখ্যা করা mহয়_x1}
ইটিএইচ প্রডাকশনস

@ এথ প্রডাকশন ওহ ওহ, টিপসের জন্য ধন্যবাদ। কেন mx1Rকাজ করবে তা দেখতে পাচ্ছেন না তবে এটি দুর্দান্ত যে এটি কার্যকর!
টম


23

রেটিনা , 5 বাইট

%G`\S

এটি অনলাইন চেষ্টা করুন!

একটি খুব স্পষ্ট না পদ্ধতির আমাদের একটি ভাল স্কোর পুরষ্কার :)

ব্যাখ্যা

Gএটি গ্রেপ পর্যায় হিসাবে ইঙ্গিত করে, কেবল সেই রেখাগুলি রেখে যেখানে রেগেক্সের সাথে কোনও \Sমিল পাওয়া যায় ( , স্পেসহীন অক্ষরের সাথে মেলে) পাওয়া যায়। এটি শুরু করার জন্য না হলে এটি %কেবল "ফাঁকা" না রেখে সম্পূর্ণরূপে লাইনগুলি সরিয়ে ফেলবে।

এটি %এমন একটি সংশোধক যা প্রতিটি লাইনে একবারে মঞ্চটি প্রয়োগ করে এবং তারপরে নিউলাইনগুলি সহ ফলাফলগুলিতে যোগদান করে: আমাদের ক্ষেত্রে এর অর্থ হ'ল হোয়াইটস্পেস-কেবল লাইনের জন্য গ্রেপ দ্বারা ফিরে আসা খালি স্ট্রিং ফলাফলের খালি রেখায় পরিণত হবে।


এটি পোস্ট করার কথা ছিল, দুর্দান্ত। :)
মার্টিন এন্ডার

আমার ধারণা রেটিনা সম্পর্কে আমার এখনও অনেক কিছু শেখার আছে।
লিকি নুন

17

সেড , 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
@ ডিজিটাল ট্রুমা এটি আমার প্রথম সমাধান ছিল। এটি 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? ভি প্রায়শই অক্ষরে 1 বাইটের বেশি ব্যবহার করে।
পাপায়মান1000

1
@ পাপায়ামাম 1000 ভি কখনও কোনও চরিত্রের জন্য একাধিক বাইট ব্যবহার করে না। এই মুহুর্তে এটি ল্যাটিন 1 এনকোডিংটি ব্যবহার করে, যেখানে those সমস্ত অ-ASCII চিহ্নগুলির মধ্যে একটি বাইট। আমি একটি hexdump জুড়েছেন
DJMcMayhem

খুব ভাল, তাই এটি।
পাপায়মান1000

"একটি অ-শ্বেতস্পেস অক্ষর" কীভাবে এটি মুছে ফেলা থেকে একাধিক সাদা স্থানের অক্ষরের সাথে রেখাকে ছাড় দেয় না?
অ্যাডম

9

জাভাস্ক্রিপ্ট (ES6), 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'))

এটি অনলাইন চেষ্টা করুন!

@ রডকে 8 টি বাইট সংরক্ষণ করা হয়েছে!
সংরক্ষিত 19 বাইট @ লিক্যুনকে ধন্যবাদ!


@ লেকিউন ওহ এইচএম, ভুলে গেছি যে আমি এটি করতে পারি। ধন্যবাদ!
হাইপারনিউটারিনো

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

@ পাপায়ামান 1000 হাজার লোক সর্বদা তা করে। তারপরে বিধিগুলি প্রত্যাশার চেয়ে আলাদা হয়ে গেলে তারা তাদের উত্তর পরিবর্তন করতে পারে।
হাইপারনিউটারিনো

6
থা চ্যালেঞ্জ খুব আকর্ষণীয় নাও হতে পারে, তবে এটিকে সত্যই অর্থহীন বলা অতিরিক্ত বলে মনে হচ্ছে
লুইস মেন্ডো

5
এটি আপনার শব্দবন্ধ, এবং আপনি কেবল আপনার শব্দের উদ্দেশ্য জানেন। এটি সম্পাদনা করুন বা না করুন এবং কোন নতুন শব্দটি ব্যবহার করবেন তা সম্পূর্ণ আপনার সিদ্ধান্ত
লুইস মেন্ডো

3
@ হাইপার নিউট্রিনো সঠিক পদক্ষেপটি হ'ল চ্যালেঞ্জটিকে অস্পষ্ট হিসাবে বন্ধ করে দেওয়া এবং এই স্পষ্টতা যুক্ত হওয়ার পরে এটি আবার খোলা।
মার্টিন এন্ডার

5

ভিম, 20 18 16 13 10 বাইট

আমি কোনওভাবেই ভিম বিশেষজ্ঞ নই, তবে এই প্রশ্নের একটি ভিম উত্তর দরকার।

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

<cr> একটি গাড়ী চালনা।

পরিবর্তণের:

  • :norm পরিবর্তে :normal(-2 বাইট) এর
  • *পরিবর্তে স্যুইচ করা +মানে আমরা ইতিমধ্যে খালি লাইনের সাথে মেলে যাব, তবে এতে কিছু আসে যায় না। এবং এখন আমরা পরিত্রাণ পেতে পারি \v( খুব যাদু) বিকল্প) (-২ বাইট)
  • নতুন পদ্ধতির: খালি লাইনের সাথে মেলে এমন প্রতিটি লাইন প্রতিস্থাপনের পরিবর্তে, আমরা এমন প্রতিটি লাইন প্রতিস্থাপন করব যেখানে শূন্যরেখার সাথে কোনও শ্বেতস্থান অক্ষর নেই। (-3 বাইট)
  • আসলে, একটি সাধারণ প্রতিস্থাপনটি সংক্ষিপ্ত (ধন্যবাদ, @ ডিজেএমসিএমহেম) (-৩ বাইট)

1
এই একটি বিকল্প কমান্ড যেমন খাটো:%s/^\s*$<cr>
DJMcMayhem

5

এডাব্লুকে , 12 11 বাইট

!NF{$0=""}1

এটি অনলাইন চেষ্টা করুন!

আমি ঠিক মনে হচ্ছিলাম এডব্লিউকে এরও উত্তর থাকা উচিত

এটি এর দ্বারা কাজ করে:

  1. ইনপুটটিতে কোনও ক্ষেত্র নেই কিনা তা পরীক্ষা করা হচ্ছে। AWK ডিফল্টরূপে ক্ষেত্রের মধ্যে বিভাজক হিসাবে সমস্ত সাদা স্থান ব্যবহার করে
  2. যদি ক্ষেত্র না থাকে তবে ইনপুট লাইনটি খালি স্ট্রিংয়ে পরিবর্তন করুন
  3. লাইনটি মুদ্রণ করুন। যেহেতু 1 সত্যবাদী মান, এটি ডিফল্ট কমান্ডটি চালায় যা লাইনটি প্রিন্ট করছে


আপনি আমাকে একটি ধারণা দিয়েছেন ... this আমি এটিকে ফিরিয়ে দিয়েছি এবং 2 বাইট দিয়ে শেষ করেছি: 'এনএফ'
অলিভিয়ার ডুলাক

বাহ ... আমি ভেবেছিলাম আমাদের খালি লাইনগুলি থেকে মুক্তি দিতে হবে ... :(
অলিভিয়ার ডুলাক

1
আমি আমার প্রথম চেষ্টা হিসাবে একই কাজ এবং একই কারণে। আমি সে
অনুভবটি

সুসংবাদটি হ'ল: এখন আমি জানি কীভাবে খুব সহজেই আমার নিজস্ব প্রোগ্রামগুলিতে (বা কোনও ফাইল প্রদর্শনের সময়) সত্যিই একটি ছোট্ট অজানা অনেলাইনার rid দিয়ে মুক্তি পেতে পারি ^^ আপনার উত্তর ভাল এবং আঁট, উপায় দ্বারা। সাবাশ.
অলিভিয়ার ডুলাক

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

ভিম, 13 9 বাইট

:v/\S/le↵

সম্পাদনা:

  • আসল উত্তর: :v/\S/d↵( এসও- তে এই ভিম প্রশ্নের উপর ভিত্তি করে )।
    এটি খালি লাইনগুলি মুছে দেয়, যা প্রত্যাশিত আচরণ নয়।

  • Valid answer using vglobal: :v/\S/norm D↵

  • Now using the left-align ex command instead of normal D


Welcome to PPCG! I'm not really sure why you apologized, because this is a valid answer on its own.
Mego

Thank you! It expands on @L3viathan's answer and uses the same "language", so i'd have commented on his solution to limit the (already large) number of answers if I could.
Morgan

We aren't terribly concerned with having a lot of answers, or having multiple solutions in the same language. While we do encourage comments instead of new answers for small improvements upon existing answers, it's still OK to post a new answer (especially given that you can't comment yet).
Mego

0

C, 168 bytes

#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);}

Detailed

#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

C, 100 bytes

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));}

See it work online.


0

QuadR, 5 bytes

\s+$

Try it online!

\s+ এক বা একাধিক হোয়াইটস্পেসের অক্ষর প্রতিস্থাপন করুন তারপরে
$ লাইনের শেষে

 কিছুর সাথে না

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.