ট্যাবগুলি বনাম মহাকাশ যুদ্ধ শেষ করুন


24

ট্যাবগুলি বনাম মহাকাশ যুদ্ধ শেষ করুন

সুতরাং, ইনডেন্ট / ফর্ম্যাট কোডের জন্য ট্যাব বা স্পেস ব্যবহার করতে হবে কিনা তা নিয়ে প্রচুর বিতর্ক হয়েছে। ফর্ম্যাটিংয়ের একটি অবিশ্বাস্য ক্রেজি অনন্য পদ্ধতিতে গিয়ে আপনি কি বিশ্ববিদ্যালয়টিকে বিরোধ নিষ্পত্তি করতে সহায়তা করতে পারেন ।


আপনার কাজ হ'ল একটি সম্পূর্ণ প্রোগ্রাম বা ফাংশন লিখুন যা সমস্ত ট্যাবকে চারটি স্থানে প্রসারিত করে। এবং তারপরে "/ (এন - এখানে দুটি তারা) /" দিয়ে এন নেতৃত্বাধীন স্পেসগুলির একটি রান প্রতিস্থাপন করে। আপনি যেকোন যুক্তিসঙ্গত বিন্যাসে একাধিক লাইনের উপর ইনপুট পাবেন (প্রতিটি নতুন লাইনের জন্য স্ট্রিংগুলির একক স্ট্রিং অ্যারে Col কলামার অ্যারে ইত্যাদি)

নমুনা ইনপুট নির্লজ্জভাবে চুরি হয়েছে । নোট করুন যেহেতু ট্যাবগুলি স্বয়ংক্রিয়ভাবে SE এর চারটি স্পেসে প্রসারিত হয় আমি এটিকে "^" চরিত্র হিসাবে উপস্থাপন করি তবে আপনাকে অবশ্যই ট্যাবগুলি হ্যান্ডেল করতে হবে (কোডপয়েন্ট 0x09)। সমস্ত "^" অক্ষর একটি সারণী উপস্থাপন করে।

Calculate the value 256 and test if it's zero
If the interpreter errors on overflow this is where it'll happen
++++++++[>++++++++<-]>[<++++>-]
+<[>-<
    Not zero so multiply by 256 again to get 65536
    [>++++<-]>[<++++++++>-]<[>++++++++<-]
    +>[>
        # Print "32"
        ++++++++++[>+++++<-]>+.-.[-]<
    <[-]<->] <[>>
        # Print "16"
        +++++++[>+++++++<-]>.+++++.[-]<
<<-]] >[>
    # Print "8"
    ++++++++[>+++++++<-]>.[-]<
<-]<
# Print " bit cells\n"
+++++++++++[>+++>+++++++++>+++++++++>+<<<<-]>-.>-.+++++++.+++++++++++.<.
>>.++.+++++++..<-.>>-
Clean up used cells.
[[-]<]l
^this is preceded by a tab
^^two tabs
^^^three tabs etcetera! 

নমুনা আউটপুট

Calculate the value 256 and test if it's zero
If the interpreter errors on overflow this is where it'll happen
++++++++[>++++++++<-]>[<++++>-]
+<[>-<
/**/Not zero so multiply by 256 again to get 65536
/**/[>++++<-]>[<++++++++>-]<[>++++++++<-]
/**/+>[>
/******/# Print "32"
/******/++++++++++[>+++++<-]>+.-.[-]<
/**/<[-]<->] <[>>
/******/# Print "16"
/******/+++++++[>+++++++<-]>.+++++.[-]<
<<-]] >[>
/**/# Print "8"
/**/++++++++[>+++++++<-]>.[-]<
<-]<
# Print " bit cells\n"
+++++++++++[>+++>+++++++++>+++++++++>+<<<<-]>-.>-.+++++++.+++++++++++.<.
>>.++.+++++++..<-.>>-
Clean up used cells.
[[-]<]l
/**/this is preceded by a tab
/******/two tabs
/**********/three tabs etcetera! 

যেহেতু বিশ্ববিদ্যালয়ের ভিম এবং ইমাস উভয়ই ডাউনলোড করার জন্য জায়গার প্রয়োজন, আপনার কোডের জন্য আপনাকে খুব অল্প সঞ্চয় করার অনুমতি দেওয়া হচ্ছে। অতএব এটি এবং সংক্ষিপ্ততম কোডের জয়। আপনি ধরে নিতে পারেন যে ইনপুটটি ভালভাবে গঠন করেছে এবং চারটিরও কম স্পেস (ট্যাব প্রতিস্থাপনের পরে) এর সাথে রেখাগুলি অনির্ধারিত আচরণের ফলে আসতে পারে।

দাবি পরিত্যাগী

এই "দুর্দান্ত" ফর্ম্যাটিং কৌশলটি জিওবিটসের সৌজন্যে এসেছিল এবং তার অনুমতি নিয়ে পুনরুত্পাদন করা হয়। এই চ্যালেঞ্জটি তৈরির সময় কোনও প্রোগ্রামার ক্ষতিগ্রস্থ হয়নি।


1
ট্যাবগুলি কি কেবল রেখাগুলির শুরুতে (যেমন ইন্ডেন্টেশন হিসাবে) প্রদর্শিত হবে? লাইনে কি মিশ্র ইন্ডেন্টেশন (ট্যাব + স্পেস) থাকতে পারে?
লিন

20
কেউ দয়া করে হোয়াইটস্পেসে লিখিত উত্তর জমা দিন ।
গিটারপিকার

2
আমাদের কী দিয়ে শুরু হওয়া লাইনগুলি বিবেচনা করা উচিত /*, বা এটি কি "সুগঠিত ইনপুট" হিসাবে ধরে নেওয়া যায় না? একটি সি ++ উত্স ফাইলটি আরও ভাল পরীক্ষা /* */হতে পারে , কারণ এর মাল্টলাইন মন্তব্যটি সম্ভবত এমন কিছু উত্তর ভেঙে ফেলবে যা প্রথম এবং শেষের স্থানটি একটি এর সাথে প্রতিস্থাপন করে /এবং এরপরে শূন্যস্থান পূরণ করতে এগিয়ে যায় *
সেশোমারা

1
যুদ্ধ শেষ হয়েছে: মাঝারি.com / @hoffa/… (আপনি যদি সি তে প্রোগ্রামিং না করেন, দৃশ্যত
বেকার

1
@ রোহানঝুনঝুনওয়ালা তাই এখন আমি আমার প্রথম প্রশ্নটি জিজ্ঞাসা করছি, কারণ এটি সংকলনযোগ্য কোড সম্পর্কে নয়। একই /* */সি ++ কোডটি কল্পনা করুন তবে এবার লাইনের শুরুতে। আপনার অনুমান অনুসারে এটি যেমন আছে তেমন ছেড়ে দেওয়া উচিত। এখানে ফাঁদ, এবং ইতিমধ্যে ভুল উত্তর বিক্ষোভ, অর্থাৎ মত একটি Regex /\** /সঙ্গে // মধ্যে আস্টেরিক্স মধ্যে লাইন আবর্তিত হবে সেই শূণ্যস্থান পূরণ করতে ব্যবহৃত /***/। আমি এই রূপান্তরটিও দেখেছি /*//*/। আমি ধরে নিলাম দুটোই ভুল
শৈশুমারা

উত্তর:


2

ভি , 21 , 20 বাইট

Íô/    
Î^hr/hv0r*r/

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

এটি আক্ষরিক অর্থে আমার ভিএম উত্তরের প্রত্যক্ষ বন্দর। উল্লেখযোগ্য পার্থক্য:

  • Íকমান্ড (গ্লোবাল বিকল্প) স্বয়ংক্রিয়ভাবে পূরণ /gপতাকা, যা দুই বাইট সংরক্ষণ

  • ô অনুরূপ \t

  • Îএটি একটি স্মৃতিচারণকারী :%norm, এবং এটি :%normকী-স্ট্রোকের সেট এবং এর মধ্যে প্রয়োজনীয় স্থান পূরণ করে ।

  • শেষের দিকে ট্র্যাজিং ক্যারেজ ফিরতি সুস্পষ্টভাবে যুক্ত করা হয়েছে।


27

ভিম, 37, 34, 33, 32 বাইট

:%s/\t/    /g|%norm ^hr/hv0r*r/

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

নোট করুন যে এর জন্য ভিএম-এ ট্রেলিং ক্যারেজ রিটার্ন (প্রবেশ) প্রয়োজন, যদিও অনলাইন দোভাষীতে নেই।

এটি ভি ইন্টারপ্রেটার ব্যবহার করে কারণ এটি পিছনের দিকে সামঞ্জস্যপূর্ণ। খুব সোজা সমাধান।

এখানে এমন একটি জিআইএফ যা আপনাকে রিয়েল টাইমে সমাধানটি দেখতে দেয়। এটি কিছুটা পুরানো সংস্করণ ব্যবহার করে এবং আমি এটি আরও ধীরে ধীরে চালিত করতে কিছু অতিরিক্ত কীস্ট্রোক যুক্ত করেছি যাতে আপনি কী দেখতে পান তা দেখতে:

এখানে চিত্র বর্ণনা লিখুন

এবং এখানে এটি কীভাবে কাজ করে তার ব্যাখ্যা:

:%s/\t/    /g           "Replace every tab with 4 spaces
|                       "AND
%norm                   "On every line:
      ^                 "  Move to the first non-whitespace char
       h                "  Move one character to the left. If there is none, the command will end here.
         r/             "  Replace it with a slash
           h            "  Move to the left
            v0          "  Visually select everything until the first column
              r*        "  Replace this selection with asterisks
                r/      "  Replace the first character with a slash

আমি ব্যবহারের জন্য +1 করছিলাম gতবে তারপরে আপনি g: / +1 1 ব্যবহার না করার জন্য সম্পাদনা করেছেন: ডি
ডাউনগোট

@ ডাউনগোয়াত হাহাহা, ধন্যবাদ! আমি ছাড়া সংস্করণটির প্রকৃতপক্ষে অনেক বেশি ছাপিয়েছি :gকারণ এটি একটি কম পরিচিত বৈশিষ্ট্যটিকে অপমান করে: ব্যর্থ হলে normকমান্ডটি বাতিল হয়ে যায় ^F<space>। তাই মজাদার ভিম হ্যাক্স :%norm ^F<space>fooহিসাবে মূলত একই জিনিস :g/^ /norm foo। : ডি
ডিজেএমসিহেম

হু, আমি ভেবেছিলাম ^ F স্ক্রিন পোস্ট করার জন্য ব্যবহৃত হয়েছিল। এর ভিতরে normকি আলাদা আচরণ আছে ?
ডাউনগোট

1
@ ডাউনগোয়াত হাহা, না এটি ^F, <C-f>সিলি ভিম কী স্বরলিপি নয়। এই ক্ষেত্রে এটি ^প্রথম অ হোয়াইটস্পেস গৃহস্থালির কাজ তিড়িং লাফ, এবং F<space>কার্সার পিছনে প্রথম স্থান খুঁজে কোনটি।
ডিজেএমসিএমহেম

ওহহ, এটি এখন আরও বেশি বোঝায়> _>
ডাউনগোট

11

পার্ল, 41 বাইট

s,␉,    ,g;s,^  ( +),/@{[$1=~y| |*|r]}/,

-pপতাকা সহ দৌড়াতে, যেমন:

perl -pe 's,␉,    ,g;s,^  ( +),/@{[$1=~y| |*|r]}/,'
#     ↑   └───────────────────┬───────────────────┘
#     1 byte               40 bytes

একটি ট্যাব দ্বারা প্রতিস্থাপন (বাশ এ, টাইপ করার চেষ্টা করুন Control-V Tab।)


1
পথ perlপ্রতিস্থাপিত ঘটনাস্থলেই যে backreference, আমি আশা করি sedযে খুব ছিল।
শৈশুমারা

7

চেডার , 60 57 56 বাইট

@ কনর ও ব্রায়েনকে 3 বাইট সংরক্ষণ করা হয়েছে

@.sub(/\t/g," "*4).sub(/^ +/gm,i->"/"+"*"*(i.len-2)+"/")

আমি আশা করি চেদার আরও ভাল স্ট্রিং ফর্ম্যাটিং ছিল।

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

ব্যাখ্যা

এটি একটি ফাংশন। @এটি একটি কার্যকরী সম্পত্তি (যেমন &:রুবির) প্রতিনিধিত্ব করে যা আপনাকে এই জাতীয় জিনিসগুলি করতে দেয়:। আর.ম্যাপ (@। মাথা (-1))

@                      // Input
 .sub( /\t/g, " "*4)   // Replace tabs with four spaces
 .sub(
   /^ +/gm,            // Regex matches leading spaces
   i ->                // i is the matched leading spaces
     "/"+              // The / at the beginning
     "*"*(i.len-2)+    // Repeat *s i-2 times
     "/"                // The / at the end
 )

আপনি যদি রেজেক্সের সাথে পরিচিত না হন তবে:

/^ +/gm

এটি প্রতিটি ( ) রেখার ( ) লাইনের শুরুতে ( ) শুরুর দিকে এক বা একাধিক ( +) স্পেস ( ) এর সাথে মিলছে ।^gm


আক্ষরিক ট্যাবগুলি কি চেডার রেজিজেসে কাজ করে? এছাড়াও, /^ +/একটি রেজেক্স হিসাবে যথেষ্ট, কারণ আমরা ধরে নিতে পারি যে শীর্ষস্থানীয় স্থানগুলি দৈর্ঘ্যে কমপক্ষে 4 হবে।
কনর ও'ব্রায়ান

@ কনরও'ব্রায়েন আমি বিশ্বাস করি তারা করে তবে আমি পরীক্ষা
করিনি

রূপান্তরকালে ট্যাবগুলি প্রতিস্থাপনের কথা রয়েছে।
কনর ও'ব্রায়েন

@ কনরও'ব্রায়েন ওহ> _> আমার কাছে প্রাথমিকভাবে এটি ছিল এবং তারপরে আমি এটি পরিবর্তন করেছি
ডাউনগোট

6

গণিত, 97 বাইট

a=StringReplace;a[a[#,"\t"->"    "],StartOfLine~~b:" "..:>"/"<>Table["*",StringLength@b-2]<>"/"]&

বেনামে ফাংশন। ইনপুট হিসাবে একটি স্ট্রিং নেয় এবং আউটপুট হিসাবে একটি স্ট্রিং প্রদান করে।



4

জাভা 210 207 বাইট

এটি রেফারেন্স সমাধান যা এটিকে নির্লজ্জভাবে প্রয়োগ করে।

void a(String[]a){for(String s:a){s=s.replaceAll("\t", "    ");String x,y="";int j,i=s.length()-(x=s.replaceAll("^\\s+", "")).length();if(i>3){y="/";for(j=0;j++<i-1;)y+="*";y+="/";}System.out.println(y+x);}}

6
ভিম: ৩ by বাইট, চেডার: by৫ বাইট, জাভাস্ক্রিপ্ট:
by৫

1
জাভাতে খুব সংক্ষিপ্ত কোড: পি
রোহান ঝুনঝুনওয়ালা

আপনি 1 বাইট সংরক্ষণ করার জন্য লুপ গত পরিবর্তন করতে পারেন: for(int j=0;++j<i-1;)। এছাড়াও, আপনি এর int আগে মুছে ফেলতে jএবং ইতিমধ্যে উপস্থিত পূর্বে এটি রাখতে পারেন:int i=s.length()-(x=s.replaceAll("^\\s+", "")).length(),j;
কেভিন ক্রুইজসেন

(ক) -> {... using ব্যবহার করে বাইট শেভ করা ল্যাম্বডা হতে পারে না?
বানিয়াক্লোভেন

কমপক্ষে এটি এখনও পঠনযোগ্য এবং আরও মন্তব্যগুলির দরকার নেই: ও)
রেনি

3

জাভাস্ক্রিপ্ট ES6, 75 বাইট

s=>s.replace(/\t/g,"    ").replace(/^ +/gm,k=>`/${"*".repeat(k.length-2)}/`)

\tআপনার কোডে একটি আক্ষরিক ট্যাব দিয়ে প্রতিস্থাপন করুন ।


3

জাভা, 185 184 167 152 বাইট

S->S.map(s->{s=s.replace("\t","    ");String t=s.replaceAll("^ +","");int n=s.length()-t.length();if(n>3){s="/";for(;n-->2;)s+="*";s+="/"+t;}return s;})

প্রাথমিক পোস্টে দেওয়া স্ট্রিং অ্যারের খুব শিথিল সংজ্ঞা দেওয়া, আমি ব্যবহার করেছি Stream<String>যা কিছু ফলস বাইট সঞ্চয় করার অনুমতি দেয় allows

একই লক্ষ্য অর্জনের জন্য আমি আরআইয়ের চেয়ে আলাদা কৌশল ব্যবহার করেছি। অ্যালগরিদম নিজেই বরং একই।

পরীক্ষা এবং নিরবচ্ছিন্ন :

import java.util.Arrays;
import java.util.stream.Stream;

public class Main {

  public static void main(String[] args) {
    StringStreamTransformer sst = lines -> lines.map(line -> {
      line = line.replace("\t","    ");
      String trimmed = line.replaceAll("^ +", "");
      int startingSpaces = line.length() - trimmed.length();
      if (startingSpaces > 3) {
        line = "/";
        for(;startingSpaces > 2; startingSpaces--) {
          line += "*";
        }
        line += "/" + trimmed;
      }
      return line;
    });


    Stream<String> lines = Arrays.stream(new String[]{
      "lots of spaces and tabs after\t\t    \t\t         \t\t\t\t\t",
      "no space",
      " 1 space",
      "  2 spaces",
      "   3 spaces",
      "    4 spaces",
      "     5 spaces",
      "      6 spaces",
      "       7 spaces",
      "        8 spaces",
      "\t1 tab",
      "\t\t2 tabs",
      "\t\t\t3 tabs"
    });
    sst.map(lines).map(s -> s.replace(" ", ".").replace("\t","-")).forEach(System.out::println);


  }
}

2

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

\tপ্রকৃত ট্যাব অক্ষর (0x09) দিয়ে প্রতিস্থাপিত হবে।

\t
4$* 
%`^  ( +)
/$.1$**/

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

ব্যাখ্যা

\t
4$* 

প্রতিটি ট্যাবকে চারটি স্পেস দিয়ে প্রতিস্থাপন করুন।

%`^  ( +)
/$.1$**/

প্রতিটি লাইনের আলাদাভাবে রূপান্তর করুন ( %) লাইনের 2+Nশুরুতে ফাঁকা জায়গাগুলির সাথে এবং এটির প্রতিস্থাপন করুন /.../যেখানে ...এর Nঅনুলিপি রয়েছে *



2

এসইডি (56 বছরের জন্য +1) 57

s/⇥/    /g;tr;:r;s,^ ( *) ,/\1/,;T;:l;s,^(/\**) ,\1*,;tl

কোথায় একটি ট্যাব
1 ফাঁকা স্থান সহ ট্যাব প্রতিস্থাপন।
2. প্রথম এবং শেষের সাথে প্রথম স্থানটি প্রতিস্থাপন করে /
৩. প্রথম স্থান /এবং 0+ *এর পরে *কোনও ম্যাচ না হওয়া পর্যন্ত প্রতিস্থাপন করে ।


যেহেতু সেড নির্দিষ্ট করা হয়েছে, কোডের চারপাশে কোনও একক উক্তিগুলির প্রয়োজন নেই, আপনার অন্যান্য সেড উত্তরগুলি থেকে -r 'মুছে ফেলার মতো, কারণ আপনি স্ক্রিপ্টটিকে কোনও উত্স ফাইলটিতে সঞ্চিত বলে মনে করতে পারেন যা আপনি চালাচ্ছেন -f। এন বা আর এর মতো ব্যবহৃত যে কোনও অতিরিক্ত পতাকাগুলি প্রতিটি বাইট হিসাবে গণনা করা উচিত। এইভাবে, আপনি 2 বাইট সংরক্ষণ করুন।
শৈশুমারা

এটাই আমি ভেবেছিলাম, তবে আমি নিশ্চিত চাই। ধন্যবাদ।
রিলি

;T কমান্ড পর পারেন প্রয়োজন হয় না। কোড নিজেই, আপনার তৃতীয় sকমান্ডের শুরুতে একটি need প্রয়োজন , অন্যথায় "3/5" এর মতো একটি ইনপুট "3 / * 5" তে রূপান্তরিত হয়। প্রথম sকমান্ডটিতে আপনার আসলে একটি ট্যাব রয়েছে তবে এটি সঠিকভাবে প্রদর্শিত এবং বিভ্রান্তিকর নয়, সুতরাং either t ব্যবহার করুন বা পরে উল্লেখ করুন, সেই চরটি একটি ট্যাব ছিল।
শৈশুমারা

@ সেশৌমারা ধন্যবাদ, আমি আমার ফোন থেকে পোস্ট করার চেষ্টা করছি ... এটি করা সবচেয়ে সহজ কাজ নয়।
রিলে

আমি মনে করি আমি এই উত্তরটির সম্পাদনায় অন্য সমস্ত সংযুক্তের চেয়ে বেশি সময় ব্যয় করেছি। সাহায্যের জন্য ধন্যবাদ!
রিলে

1

বিশ্ববিদ্যালয়ের ইমাস লিস্পে প্রোগ্রামের জন্য (বা একা ডিফল্ট tabifyএবং untabifyএকা) আরও কিছু জায়গা দেওয়ার কথা বিবেচনা করা উচিত , কারণ তারা জাবার চেয়ে আরও বেশি ভার্বোস পেয়েছেন। এটির শিক্ষার্থীদের (বা শিক্ষকদের) যাদের পরিচয়ের আকার চারের চেয়ে ছোট বা কিছু-সি-জাতীয় ভাষায় কোডে ঘটে তাদের দিকেও মনোযোগ দেওয়া উচিত।

নিম্নলিখিত সমাধানটিতে 206 বাইট রয়েছে

(lambda (b e)(let((tab-width 4))(untabify b e)(goto-char b)(while(re-search-forward"^ +"e t)(replace-match(format"/%s/"(apply'concat(mapcar(lambda(x)"*")(number-sequence 1(-(length(match-string 0))2)))))))))

ধরে tab-widthনিই যে এগুলি স্পষ্টভাবে সেট করা দরকার নেই, আমরা তাদের মধ্যে 20 টি সংরক্ষণ করতে পারি।

(lambda(b e)(untabify b e)(goto-char b)(while(re-search-forward"^ +"e t)(replace-match(format"/%s/"(apply'concat(mapcar(lambda(x)"*")(number-sequence 1(-(length(match-string 0))2))))))))

এবং ungolfed সংস্করণ এর মত দেখতে হবে

(defun end-tab-war (beg end)
  (let ((tab-width 4))
    (untabify beg end)
    (goto-char beg)
    (while (re-search-forward "^ +" end t)
      (replace-match
       (format
        "/%s/"
        (apply 'concat
               (mapcar (lambda(x) "*")
                       (number-sequence 1
                                        (- (length (match-string 0))
                                           2)))))))))

আমরা প্রথমে untabifyঅঞ্চলটির শুরুতে ঝাঁপ দেওয়ার আগে। তারপরে, আমরা যখন কোনও লাইনের শুরুতে সাদা স্থান দেখি, আমরা এটিকে একটি মন্তব্য দিয়ে প্রতিস্থাপন করি যা যতক্ষণ সাদা বলার অপেক্ষা রাখে। ঠিক বলতে গেলে, প্রবেশ করাতে হবে মন্তব্য দ্বারা নির্মিত

 (format"/%s/"(apply'concat(mapcar(lambda(x)"*")(number-sequence 1(-(length(match-string 0))2)))))

যা নিজেই 97 বাইট নেয়। কিছু স্ট্রিং এন টাইম অনুলিপি করার একটি সংক্ষিপ্ত সমাধান অত্যন্ত প্রশংসা করা হয়।


1

রুবি, 52 47 + 1 (পি পতাকা) = 48 বাইট

সম্পাদনা করুন : পুরো 5 বাইট সংরক্ষণ করা হয়েছে, মান কালি ধন্যবাদ

ruby -pe 'gsub ?\t," "*4;sub(/^ +/){?/+?**($&.size-2)+?/}'

1
p(ছ) সাব $_পরিবর্তিত হয় এবং এইভাবে মুদ্রিত মান পরিবর্তন করে যে এই সুবিধাটি ব্যবহার করতে আপনি পতাকাটি ব্যবহার করতে পারেন ? ruby -pe 'gsub ?\t," "*4;sub(/^ +/){?/+?**($&.size-2)+?/}'
মান কালি

ধন্যবাদ, আমি জানি (g)subনা ঠ্যাং ছাড়া $_এখানে পরিবর্তন করতে পারে ।
মিচাউ

1

জিএনইউ সেড, 66 64 + 1 (আর পতাকা) = 65 বাইট

সম্পাদনা: রাইলির পরামর্শে 1 বাইট কম ধন্যবাদ less

s/\t/    /g
s,^ ( *) ,/\1\n,
:
s,^(/\**) ( *\n),\1*\2,
t
s,\n,/,

চালান: sed -rf formatter.sed ইনপুট_ফাইল

\nসেই লাইনের বাকী পাঠ্য থেকে শীর্ষস্থানীয় স্পেসগুলির সাথে পৃথক হওয়ার কারণ, অন্যথায় এটির মত একটি মন্তব্য দিয়ে শুরু হওয়া একটি সি ++ লাইনটি একটি সহজ লাইন 4 এর মত বা এমনকি দ্বারা /* */রূপান্তরিত হবে । যেহেতু সেড প্রতিটি ইনপুট লাইনের জন্য স্ক্রিপ্টটি কার্যকর করে, তাই পড়ার ক্ষেত্রে প্যাটার্ন স্পেসে কোনও পরিচয় হয় না।/*****/s,^(/\**) ,\1*,s,^(/\**) ( */),\1*\2,\n


আপনি /প্রতিস্থাপন না করা অবধি ক্লোজিং না রেখে আপনি একটি বাইট সংরক্ষণ করতে পারেন \n। এটি আপনার সাথে লাইন 4 এর সাথে মিল রাখতে বাঁচায়
রাইলি

পছন্দ করুন কোড আপডেট করেছে।
শৈশুমারা

আপনি \tট্যাব অক্ষরের পরিবর্তে অন্যকে সংরক্ষণ করতে পারেন ।
রাইলে

@ রিলে এটি সত্য, তবে যেহেতু এটি এখানে কোনও ট্যাব হিসাবে মুদ্রিত হবে না, আমি সন্দেহ করছি। বাইট গণনাগুলি আরও প্রতিযোগিতামূলক সহ ভবিষ্যতের সেড উত্তরের জন্য আমি এটি মনে রাখব।
শৈশুমারা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.