একটি সিওবিএল প্রোগ্রাম আনকমেন্ট করুন!


64

কোবল একটি খুব পুরানো ভাষা, লেখার সময় এটি 58 ​​বছরের পুরানো। এটি এত পুরনো, বাস্তবে, এটির একটি খুব আকর্ষণীয় গণ্ডগোল রয়েছে: প্রতিটি লাইনের প্রথম ছয়টি অক্ষর মন্তব্য।

তুমি কেন জিজ্ঞাসা করছ? ঠিক আছে, সেই 6 টি অক্ষর লাইন নম্বর হিসাবে ব্যবহার করার উদ্দেশ্যে ছিল, সেই দিনেই যেখানে প্রোগ্রামগুলি সম্পূর্ণ ডিজিটাল ছিল না এবং কোনও কম্পিউটারে টাইপ করা হয়নি।

তদুপরি, সপ্তম অক্ষরটি কেবলমাত্র একটি খুব সামান্য সেটের অংশ হতে পারে (সাধারণত *লাইনের বাইরে মন্তব্য করা বা কোড থেকে লাইন নম্বর পৃথক করার জন্য একটি স্থান)

তবে আপনি যদি আরও ডিজিটাল সিস্টেমে থাকেন এবং আপনি কেবল কাঁচা প্রোগ্রাম চান?

মন্তব্য সিস্টেম

সিওবিএলে দুই ধরণের মন্তব্য রয়েছে: লাইন মন্তব্য এবং পূর্বোক্ত "লাইন নম্বর" মন্তব্যসমূহ।

অনিয়ন্ত্রিত লাইন নম্বরগুলি সহজ: প্রতিটি লাইন থেকে কেবল প্রথম সাতটি (ছয়টি প্লাস একটি একক স্থান) অক্ষর নিন।

000000 apple
000001 banana
celery donuts

হবে:

apple
banana
donuts

লাইন মন্তব্যগুলি এটিকে কিছুটা আরও কঠিন করে তোলে। একটি লাইনের মন্তব্য লাইনের *সপ্তম অক্ষরের অবস্থানে স্থাপন করা একটি নক্ষত্র দিয়ে শুরু করা হয়েছে:

000323* this is a comment

এটি কোনও লাইন মন্তব্য নয়:

*00000 this isn't a comment

কোনও লাইনের মন্তব্যকে অস্বচ্ছল করতে কেবল পুরো লাইনটি সরিয়ে ফেলুন।

একটি উদাহরণ মন্তব্য করেছে "প্রোগ্রাম":

000000 blah blah
000001* apples
000002 oranges?
000003* yeah, oranges.
000*04 love me some oranges

নিরক্ষিত সংস্করণ:

blah blah
oranges?
love me some oranges

অন্য কথায়, একটি স্ট্রিংকে অসন্তুষ্ট করতে প্রতিটি লাইনের প্রথম ছয়টি অক্ষর মুছে ফেলুন, তারপরে স্টার দিয়ে শুরু না হওয়া প্রতিটি লাইনের প্রথম অক্ষর বাদে সমস্তটি ফিরিয়ে দিন।

চ্যালেঞ্জ

এমন একটি প্রোগ্রাম বা ফাংশন তৈরি করুন যা একটি মন্তব্য করা প্রোগ্রাম গ্রহণ করে এবং এর অনিয়ন্ত্রিত রূপটি প্রদান করে।

ব্যাখ্যা

  • তারকাচিহ্ন ( *) কোনও লাইনের প্রথম সাতটি অক্ষরের বাইরে আর কোথাও পাওয়া যাবে না (আমরা আপনাকে সিনট্যাক্স যাচাই করতে বলছি না)
  • প্রতিটি লাইনে সর্বদা কমপক্ষে 7 টি অক্ষর থাকবে।
  • আপনি ধরে নিতে পারেন সপ্তম অক্ষরটি সর্বদা একটি নক্ষত্র বা একটি স্থান।
  • ইনপুট বা আউটপুট একটি ম্যাট্রিক্স বা তালিকা হতে পারে।
  • কেবল প্রিন্টযোগ্য এএসসিআইআই অক্ষর (প্লাস নিউলাইন) অবশ্যই পরিচালনা করতে হবে।
  • আপনি একটি পেছনের নিউলাইন দিয়ে আউটপুট করতে পারেন। আপনি যদি ধরেও নিতে পারেন তবে ইনপুটটির একটি পেছনের নতুন লাইন থাকবে।

স্কোরিং

যেহেতু এটি , তাই কমপক্ষে বাইটস সহ উত্তরটি জিতবে!

অস্বীকৃতি: আমি আসলে কোবোল জানি না এবং দাবিও করি না। এই প্রশ্নে আমি করা সিওবিওএল সম্পর্কে যে কোনও দাবিই যদি ভুল হয় তবে আমি কোনও দায় নেব না।


23
লাইন নম্বর মন্তব্য নয়। তারা একটি কলাম। পরিভাষা দয়া করে।
ব্যবহারকারী 207421

1
আপনার উদাহরণগুলির সকলের পরে একটি স্থান আছে *। এটা কি কাকতালীয় ঘটনা?
নিল

6
পুরানো স্বয়ংক্রিয়ভাবে খারাপ বোঝায় না। আমি একটি অ্যাজিলে সিবুল শপটিতে কাজ করেছি। এএস / 400 এ তারা জাভাতে করতে পারিনি things
থরবজর্ন রাভন অ্যান্ডারসন

1
হি ... আমি আসলে একটি সিওবিওএল কপিবুক পার্সার লিখেছি যা কেবল ক্ষেত্রগুলি প্যাক না করা হলে কাজ করে। কেবল এটি JSON এ রূপান্তরিত করুন key:{key:{key:length,key:length}}। যদিও সমস্ত ফর্ম্যাটিং ডেটা এবং টাইপিং ডেটা স্ট্রিপ করে।
ম্যাজিক অক্টোপাস উরন

4
প্রথম 6 টি অক্ষরে স্থান থাকতে পারে?

উত্তর:


104

কোবল (জ্ঞানকোবোল), 191 + 17 = 208 বাইট

আমি এই উত্তরের জন্য কোবল "শিখেছি", সুতরাং এটি সম্ভবত পুরোপুরি গল্ফ হয় না।

এটি একটি সম্পূর্ণ প্রোগ্রাম, আমি স্ট্যান্ডার্ড ইনপুট বলে ধরে নিয়েছি এবং ইনপুট গ্রহণ করে আমি স্ট্যান্ডার্ড আউটপুট বলে মনে করি তা লিখছি। সম্ভবত একদিন আমি এটিতে ফিরে আসব এবং (1) সিওবিএল এর কার্যকারিতা রয়েছে কিনা তা নির্ধারণ করুন এবং যদি তা হয় তবে (2) কোনও ফাংশন সমাধান আরও কম হবে কিনা তা দেখুন।

বাইট গণনায় প্রোগ্রাম এবং সংকলক পতাকা ( -freeএবং -frelax-syntax) অন্তর্ভুক্ত।

program-id.c.select i assign keyboard line sequential.fd i. 1 l pic X(80). 88 e value 0.open input i perform until e read i end set e to true end-read if not e and l(7:1)<>'*'display l(8:73).

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

অসমাপ্ত প্রোগ্রাম

program-id. c.

select i assign to keyboard organization line sequential.

fd i.
    1 l pic X(80).
    88 e value 0.

open input i
perform until e
    read i
        end set e to true
    end-read
    if not e and l(7:1) <> '*'
        display l(8:73).

সীমাবদ্ধতা

প্রযুক্তিগতভাবে আউটপুটটি সঠিক নয়। আমার অভিশাপ গবেষণা থেকে মনে হচ্ছে, সিওবিএল-এ স্ট্রিং সঞ্চয় করার একমাত্র ব্যবহারিক উপায় হ'ল স্থির আকারের বাফারে। আমি ৮০ টি অক্ষরের বাফার আকার বেছে নিয়েছি, কারণ এটি স্থির-বিন্যাসের প্রোগ্রামগুলির জন্য লাইন দৈর্ঘ্যের সীমা। এটি দুটি সীমাবদ্ধতা উপস্থাপন করে:

  • ৮০ টির বেশি অক্ষরের রেখা কেটে দেওয়া হয়েছে।
  • 80 টির চেয়ে কম অক্ষরের রেখাগুলি ফাঁকা স্থান সহ ডান-প্যাডযুক্ত।

আমি অনুমান করছি যেহেতু এটি গ্রহণযোগ্য, ভাল, এটি কোবল। যদি তা না হয় তবে আমি বিকল্পগুলি সন্ধান করতে চাই।

প্রাপ্তি স্বীকার

  • -166 বাইটস এডওয়ার্ড এইচ ধন্যবাদ
  • -2 বাইট শৃঙ্গা ধন্যবাদ

10
অ্যাসিরিস্টস (*) কোনও লাইনে প্রথম সাত অক্ষরের বাইরে আর কোথাও খুঁজে পাওয়া যাবে না ... এবং এখনও ...;)
সিউর

@ করুর হাহা হ্যাঁ ... তবে আমার সমাধান সেই অনুমানটি ব্যবহার করে না, তাই সম্ভবত এটি উপযুক্ত!
জাকব

8
আপনি একটি ইন্টারনেট জয়।
জোশুয়া

একটি কম্পিউটার বিবৃতি ব্যতীত @ সিউর
ClickRick

1
আপনার সোনার ব্যাজ অভিনন্দন!
কেয়ারড কোইনরিঙ্গিংহিং

20

পাইথন 2 , 39 38 37 বাইট

-1 বাইট লাইরিকলিকে ধন্যবাদ। -1 বাইট মেগোকে ধন্যবাদ

lambda s:[i[7:]for i in s if'*'>i[6]]

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

স্ট্রিংয়ের তালিকা হিসাবে I / O।


2
প্রতিস্থাপন দ্বারা একটি বাইট সংরক্ষণ !=সঙ্গে <, যেহেতু একটি স্থান এর কোড বিন্দু একটি তারকা এর এক কম হয়, এবং সপ্তম চরিত্র সবসময় একটি স্থান বা একটি তারকা হতে হবে।
লিরিকলি

সুতরাং, 7 তম চরিত্রটি সর্বদা একটি স্থান বা একটি তারকা হিসাবে থাকবে?
সম্পূর্ণরূপে

হ্যাঁ. You may assume the seventh character is always an asterisk or a space.
লিরিকলি

1
সাথে 1 বাইট সংরক্ষণ করুনif'*'!=i[6]
মেগো

13

পার্ল 5 , 19 + 1 (-পি) = 20 16 বাইট

পাভেলের পরামর্শ সহ -4 বাইটস

s/.{6}( |.*)//s

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


2
আপনি তিনটি বাইট সংরক্ষণ করতে পারবেন যদি আপনি প্রতিস্থাপন (\*.*$| )সঙ্গে( |.*)
পাভেল

@ পাভেলের মন্তব্যের মতো সংক্ষিপ্ত নয়, তবে / /;$_=/\* /?$,:$'অন্য বিকল্প
ডম হেস্টিংস

এছাড়াও আপনি প্রয়োজন হবে না ^
পাভেল

11

ভি , 13 11 10 বাইট

Î6x<<
çª/d

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

ব্যাখ্যা

Î       ' On every line
  x     ' delete the first...
 6      ' 6 characters
   <<   ' and unindent the line (removes the leading space)
ç /     ' on every line
 ª      ' matching \*
   d    ' delete the line

Hexdump:

00000000: ce36 783c 3c0a e7aa 2f64                 .6x<<.../d

আপনি কি এর 7xবদলে করতে পারছেন না 6x<<?
DJMcMayhem

1
তারপরে এটি*
nmjcman101

এটি *প্রথমে লিনগুলি মুছতে এবং তারপরে কাজ করবে Î7x? (ধরে নেওয়া * একটি
অক্ষরে

@ 12431234123412341234123 দুর্ভাগ্যক্রমে না, কারণ *প্রথম 6 টি অক্ষরে একটি থাকতে পারে ।
nmjcman101

9

প্যারাডোক (v0.2.8 +), 8 বাইট (সিপি-1252)

µ6>(7#;x

লাইনগুলির একটি তালিকা নেয়, এবং অনাকাঙ্ক্ষিত লাইনের তালিকায় ফলাফল দেয়।

ব্যাখ্যা:

μ        .. Map the following block over each line (the block is terminated
         .. by }, but that doesn't exist, so it's until EOF)
 6>      .. Slice everything after the first six characters
   (     .. Uncons, so now the stack has the 6th character on top
         .. and the rest of the line second
    7#   .. Count the multiplicity of factors of 7 in the character
         .. (treated as an integer, so '*' is 42 and ' ' is 32)
      ;  .. Pop the top element of the stack (the rest of the line)...
       x .. ...that many times (so, don't pop if the 6th character was a
         .. space, and do pop if it was an asterisk)

হাই, আমি একটি গল্ফ প্রোগ্রামিং ভাষা লিখেছিলাম। :)

আমি এখনও এটি বিকাশ করছি এবং এটি লেখার চেষ্টা করার পরে অনেকগুলি বিল্ট-ইনগুলি যুক্ত / টুইট করেছি যাতে " 7#" চেয়ে একটি স্থান এবং একটি নক্ষত্রের মধ্যে পার্থক্য করার আরও যুক্তিসঙ্গত উপায় থাকতে পারে , তবে আমার মনে হয় যে এই অ-প্রতিযোগিতাটি তৈরি করে দেবে । এটি ভাগ্যবান যে এটি এখনও কার্যকর হয়েছিল (এটি কেবল v0.2.8 এর বৈশিষ্ট্যগুলি ব্যবহার করে, যা আমি তিন দিন আগে প্রতিশ্রুতি দিয়েছিলাম)।


"হাই, আমি একটি গল্ফ প্রোগ্রামিং ভাষা লিখেছিলাম।" এই চ্যালেঞ্জটি পোস্ট হওয়ার আগে বা পরে আপনি যে সংস্করণটি ব্যবহার করছেন তা কি প্রকাশিত হয়েছিল?
মাস্ত্ত

1
এটি এই সংস্করণে তিন দিন আগে থেকে কাজ করে: github.com/betaveros/paradoc/releases/tag/v0.2.8
বিটাওরোস

ঠিক আছে, আপনি এটি উল্লেখ করেছেন, তবে কোনওভাবে এটি স্পষ্টভাবে নিবন্ধন করেনি ...
মাস্তে


7

অক্টাভা, 23 বাইট

@(s)s(s(:,7)~=42,8:end)

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


4
আমি কখনই জানতাম না অক্টাভা এর মতো স্ট্রিংগুলি করতে পারে ... তাও, ম্যাটল্যাব। এক্সডি
সান্চাইজস

যেহেতু স্ট্রিং অ্যারে R2016b এর সূচনার , আমি নিশ্চিত এই ম্যাটল্যাব খুব @Sanchises মধ্যে কাজ করবে আছি! আমার কাছে বর্তমানে কেবল R2015b এ অ্যাক্সেস রয়েছে তাই নিশ্চিত করতে পারছি না। ম্যাটল্যাব এটি 74 বাইটে করতে পারে, সম্ভবত কম @(s)cellfun(@(r)r(8:end),s(cellfun(@(r)r(7)~=42,s)),'uniformoutput',false), যেখানে sঘর অ্যারে রয়েছে, কোনও স্ট্রিং অ্যারে নয়। রিজএক্সপক্স বা অন্য কিছু ব্যবহার করা সম্ভবত সংক্ষিপ্ত হবে, তবে আমি যে পদ্ধতিটি লিখেছি তা এই উত্তরের পদ্ধতির সাথে কেবল পুরানো ম্যাটল্যাবের সাথে তুলনাযোগ্য
ওল্ফি

6

জেলি , 11 9 বাইট

ṫ€7Ḣ⁼¥Ðf⁶

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

লাইনগুলির তালিকা হিসাবে ইনপুট এবং আউটপুট।

-2 বাইটস @ এরিকথ আউটগলফার এবং @ জোনাথান অ্যালানকে ধন্যবাদ thanks

কিভাবে এটা কাজ করে

ṫ€7Ḣ=¥Ðf⁶
 €           On each line:
ṫ 7            Replace the line with line[7:]
      Ðf     Keep all lines that meet condition:
     ¥         Dyad:
   Ḣ             First Element (modifies line)
    =            Equals
        ⁶    Space

7$€হতে পারে€7
এরিক দি আউটগল্ফার

এটি এটিকে 9 এর মতো নেমে যান:ṫ€7Ḣ⁼¥Ðf⁶
জোনাথন অ্যালান

5

পাওয়ারশেল , 32 বাইট

$input-replace'^.{6}( |.*)'-ne''

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

পাইপলাইন ইনপুটটি স্ট্রিংগুলির অ্যারের হিসাবে আসে, -replaceপ্রতিটি স্ট্রিংয়ের উপর কাজ করে এবং -ne ''(ফাঁকা স্ট্রিংয়ের সমান নয়) একটি অ্যারেতে প্রয়োগ করা হয়, ফাঁকা লাইনগুলি ফিল্টার করার জন্য কাজ করে।


4

সি, 63 59 55 48 47 46 বাইট

" বেনামে ব্যবহারকারী " কে আরও একটি বাইট ছাড়ার জন্য ধন্যবাদ ।

" আপনি সপ্তম চরিত্রটি সর্বদা একটি নক্ষত্র বা স্থান " হিসাবে মনে করিয়ে দেওয়ার জন্য ফেলিক্স প্যালমেনকে ধন্যবাদ জানায় , যা আরও একটি বাইট বন্ধ করে দিয়েছে।

f(char**a){for(;*a;++a)(*a)[6]&2||puts(*a+7);}

ব্যবহার করুন:

char** program = { "000000 apple", "000001 banana", "celery donuts", 0 };
f(program);

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


3

আসলে , 13 বাইট

⌠6@tp' =*⌡M;░

ইনপুট এবং আউটপুট স্ট্রিংগুলির তালিকা হিসাবে সম্পন্ন হয়।

ব্যাখ্যা:

⌠6@tp' =*⌡M;░
⌠6@tp' =*⌡M    for each line:
 6@t             discard the first 6 characters
    p            pop the first character of the remainder
     ' =         is it a space?
        *        multiply the string by the boolean - returns the string if true, and an empty string if false
           ;░  filter out empty strings

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


3

গাইয়া , 9 বাইট

6>¦'*«⁈ḥ¦

একটি ফাংশন স্ট্রিংগুলির একটি তালিকা গ্রহণ করে এবং স্ট্রিংগুলির একটি তালিকা ফেরত দেয়।

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

ব্যাখ্যা

6>¦        Remove the first 6 characters of each string
   '*«⁈    Filter out ones that start with *
       ḥ¦  Remove the initial space from each

আমি দশটি অক্ষর গণনা করি, এবং যেহেতু তিনটি নন-এএসসিআইআই, তারা কি বাইটের চেয়ে বেশি নেয় না?
ডাব্লুগ্রোলাও

@WGrolau এবং «উভয়ই 1 টি চরিত্র। গল্ফিং ল্যাঙ্গুয়েজগুলি যে অ-এস্কি অক্ষর ব্যবহার করে (সম্ভবত নিম ব্যতীত) কাস্টম এনকোডিংগুলি ব্যবহার করে, যা সমস্ত অ-এএসসিআইআইকে একক বাইট হিসাবে গণ্য করতে দেয়। এখানে গাইয়ার কোড পৃষ্ঠা
মিঃ এক্সকোডার

@ মিঃ এক্সকোডার নিমের একটি এনকোডিংও রয়েছে।
এরিক দি আউটগল্ফার

3

পাইথ , 9 বাইট

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

-২ বাইটসকে @ পিজ্জাকমেমে ধন্যবাদ !

m>d7.m@b6

এখানে চেষ্টা করুন!

ব্যাখ্যা

m>d7.m@b6     - Full program with implicit input. Takes input as a list of Strings.

m>d7          - All but the first 7 letters of 
    .m   (Q)  - The input, filtered for its minimal value using the < operator on
      @b6     - the 7th character -- note that "*" is greater than " "
              - Implicitly Output the result.

পাইথ , 11 বাইট

tMfqhTdm>d6

এখানে চেষ্টা করুন!

ব্যাখ্যা

tMfqhTdm> d6 - অন্তর্নিহিত ইনপুট সহ সম্পূর্ণ প্রোগ্রাম। স্ট্রিংগুলির তালিকা হিসাবে ইনপুট নেয়।

       m> d6 - প্রতিটি লাইনের প্রথম 6 টি অক্ষর সরান।
    এইচটি - প্রত্যেকের প্রথম চরিত্রটি পান।
  এফকিউ ডি - প্রথম অক্ষরটি তাদেরকে একটি নক্ষত্র হিসাবে রাখুন।
tM - প্রত্যেকের প্রথম চরিত্রটি সরান।
            - সুস্পষ্টভাবে আউটপুট।

পাইথ , 11 বাইট

m>d7fqd@T6Q

এখানে চেষ্টা করুন!

ব্যাখ্যা

m> d7fq @ T6dQ - সম্পূর্ণ প্রোগ্রাম। স্ট্রিংগুলির তালিকা হিসাবে ইনপুট নেয়।

      @ টি 6 - প্রত্যেকের ষষ্ঠ চরিত্র।
    fq dQ - যে রেখাগুলি space হিসাবে স্থান থাকে তেমন রাখুন ^
m> d7 - প্রথম 7 টি অক্ষর ক্রপ করুন।
             - স্পষ্টভাবে আউটপুট।

পাইথ , 12 বাইট

tMfnhT\*m>d6

এখানে চেষ্টা করুন!

ব্যাখ্যা

tMfnhT \ * m> d6 - অন্তর্নিহিত ইনপুট সহ সম্পূর্ণ প্রোগ্রাম। স্ট্রিংগুলির তালিকা হিসাবে ইনপুট নেয়।

        m> d6 - প্রতিটি লাইনের প্রথম 6 টি অক্ষর সরান।
    এইচটি - প্রত্যেকের প্রথম চরিত্রটি পান।
  fn \ * - তারাগুলি যেগুলি একটি তারাটির সাথে সমান নয় ফিল্টার করুন।
tM - প্রত্যেকের প্রথম চরিত্রটি সরান।
             - সুস্পষ্টভাবে আউটপুট।

পাইথ , 12 বাইট

m>d7fn@T6\*Q

এখানে চেষ্টা করুন!

ব্যাখ্যা

m> d7fn @ T6 \ * প্রশ্ন - সম্পূর্ণ প্রোগ্রাম। স্ট্রিংগুলির তালিকা হিসাবে ইনপুট নেয়।

      @ টি 6 - প্রতিটি স্ট্রিংয়ের ষষ্ঠ অক্ষর পান
    fn \ * Q - এবং তারাগুলি যেগুলি একটি তারাটির সাথে সমান নয়।
m> d7 - প্রথম 7 টি অক্ষর ক্রপ করুন।
              - স্পষ্টভাবে আউটপুট।

" প্রথম অক্ষরটি তারা একটি তারকাচিহ্নে রাখুন I" আমার মনে হয় আপনি বোঝাতে চেয়েছিলেন "প্রথম চরিত্রটি একটি নক্ষত্র নয় those"
কেভিন ক্রুইজসেন

m>d7.m@b69 বাইটে কাজ করা উচিত, অপব্যবহারের যে *
ডেভ

আমি চাইলে এটিকে ব্যাখ্যা / পরীক্ষার লিঙ্ক দিয়ে সম্পাদনা করতে পারি!
ডেভ

@ পিজ্জাকিংমে আপনি যদি এডিট করতে চান তবে আমি খুশি হব, কারণ আমি মোবাইলে আছি। অনেক ধন্যবাদ এবং নিজেকে নতুন সমাধানের জন্য কৃতিত্ব দিতে ভুলবেন না!
মিঃ এক্সকোডার

সমস্ত লাইন লাইন মন্তব্য হলে এই কাজ করে? (আপনি যদি এই
কেসটি


3

জাভা 8, 40 বাইট

নিয়মিত অভিব্যক্তি: কাজের জন্য ভুল সরঞ্জামটি প্রায়, তবে বেশ নয়। ল্যামডা থেকে Stringথেকে String(নির্ধারিত Function<String, String>)। ইনপুটটিতে অবশ্যই একটি চলন্ত নিউলাইন থাকতে হবে।

s->s.replaceAll("(?m)^.{6}( |.*\\n)","")

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

প্রাপ্তি স্বীকার


সঠিক সরঞ্জাম! :)
অলিভিয়ার

3

হাস্কেল , 27 25 বাইট

লাইকোনির সংস্করণটি আমার চেয়ে খাটো:

f n=[x|' ':x<-drop 6<$>n]

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

আমার সংস্করণ:

f n=[drop 7x|x<-n,x!!6<'*']

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


25 বাইট: f n=[x|' ':x<-drop 6<$>n]
লাইকনি

@ লাইকনি ভাল লাগছে !! আমি জানতাম না যে কোনও তালিকা বোঝার জেনারেটরে প্যাটার্নগুলি মেলে এটি সম্ভব।
jferard

3

সি (জিসিসি) , 53 48 46 বাইট

x;main(y){for(y=&x;gets(y-6);x&2||puts(y+1));}

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

-৫ বাইট: এই " পুরো প্রোগ্রামটি " গুরকার ফাংশন হিসাবে একই আকারে নামানো খুব জটিল ছিল । এটি এখন ভুল ধরণের অ্যারের সীমানার বাইরে (উভয় দিকের দিকে) লিখছে এবং ছোটটি এন্ডিয়ান এবং 4 টি বাইট পূর্ণসংখ্যার উপর নির্ভর করে তারাটি আবিষ্কার করতে ... তবে ওহে, এটি কাজ করে;)

-২ বাইট: আচ্ছা, আমরা যদি ইতিমধ্যে কিছু "এলোমেলো" .bssস্থানে লিখি তবে কেন অ্যারে ঘোষণা করা মোটেই বিরক্ত করবেন না! তাই এখানে স্ট্রিং হ্যান্ডলিং প্রোগ্রাম ব্যবহার করে আসে তন্ন তন্নchar টাইপ না একটি অ্যারের।


নিস! এবং *x&2আমাকে স্মরণ করিয়েছে "আপনি সপ্তম চরিত্রটি সর্বদা একটি তারকাচিহ্ন বা স্থান হিসাবে ধরে নিতে পারেন।", সুতরাং আমার উত্তরটি বন্ধ করে দিতে হবে :-)
সাইমন

@ গুরকা ধন্যবাদ: ডি -২, হেহে
ফেলিক্স প্যালম্যান

3

আর, 47 45 বাইট

function(x)gsub("(?m)^.{6}( |.*\\n)","",x,,T)

আপনি যদি স্ট্রিংগুলির তালিকা হিসাবে ইনপুট নেন তবে আমার মনে হয় আপনি রেগেক্সকে "^।। 6} (|। * 6)" -6 এর জন্য সংক্ষিপ্ত করতে পারবেন।
অপরাধমূলকভাবে

পুনঃটুইট এই ক্ষেত্রে, আমি pe=Tযুক্তিটিও ফেলে দিতে পারি । তবে, আমি নিশ্চিত নই যে স্ট্রিংগুলির তালিকা হিসাবে ইনপুট অনুমোদিত কিনা।
সোভেন হোহেনস্টাইন

ওপি থেকে:Input or output may be a matrix or list.
সম্পূর্ণরূপে

@ ক্রিমিনালিভালগার সমস্যা হ'ল আউটপুটটিতে খালি স্ট্রিং উপস্থিতি।
সোভেন হোহেনস্টেইন

@ সেভেনহেনস্টেইন আহ অবশ্যই, আমি তা বিবেচনা করি নি।
অপরাধমূলকভাবে

3

SNOBOL4 (CSNOBOL4) , 72 70 66 50 বাইট

R	INPUT POS(6) (' '  REM . OUTPUT | '*') :S(R)
END

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

এসএনওবিএলে প্যাটার্নের মিলটি রেইগেক্সের থেকে একেবারে আলাদা তবে এখানে ধারণাটি এখনও একই the যদি কোনও লাইন "ছয় অক্ষর এবং তারপরে একটি নক্ষত্রের সাথে" মেলে, এটি সরিয়ে ফেলুন, অন্যথায়, লাইনটির প্রথম সাতটি অক্ষর মুছে ফেলুন এবং ফলাফলটি মুদ্রণ করুন।

এটি এখন SNOBOL এর শর্তসাপেক্ষ অ্যাসাইনমেন্ট অপারেটরের আরও ভাল সুবিধা নেয়।

প্যাটার্নটি POS(6) (' ' REM . OUTPUT | '*')যা ব্যাখ্যা করা হয়:

Position অবস্থানে থেকে শুরু করে কোনও স্থান বা একটি নক্ষত্রের সাথে মেলে, এবং যদি আপনি কোনও স্থানের সাথে মেলে থাকেন তবে বাকী রেখাটি নির্ধারণ করুন OUTPUT


3

Vim, 14 বাইট

Ctrl-VG5ld:%g/\*/dEnter

সম্পাদনা করতে বাফার হিসাবে ইনপুট ফাইলটি লোড করা হচ্ছে, তারপরে উপরের কমান্ডগুলি প্রবেশ করান। আউটপুট হল নতুন বাফার।


2

রুবি , 39 38 36 29 23 22 20 + 1 = 21 বাইট

$_[/.{6}( |.*
)/]=''

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

-pপতাকা ব্যবহার করে ।

ব্যাখ্যা:

-pপতাকা কোড চারপাশে অন্তর্নিহিত ব্লক যোগ করে, তাই কোড যে আসলে চালানোর পরার ভালো দেখায়:

while gets
    $_[/.{6}( |.*
)/]=''

    puts $_
end

getsপাঠ্যের একটি লাইন পড়ে এবং এর ফলাফল সংরক্ষণ করে $_

$_[/.../]=''...ইন রেজেক্সের প্রথম উপস্থিতিকে সরিয়ে দেয় $_

/.{6}( |.*\n)/একটি রেখার শুরুতে যে কোনও বর্ণের 6 টির সাথে মেলে, তারপরে একটি স্থান বা বাকী রেখাটি অনুসরণ করে। স্থানটি প্রথম প্রদর্শিত হওয়ার কারণে এটি পুরো প্রথমটি সরাতে চেষ্টা করার আগে কেবল প্রথম 6 টি অক্ষর এবং একটি স্থান সরিয়ে নেওয়ার চেষ্টা করবে।

$_ এরপরে মুদ্রিত হয় এবং প্রতিটি লাইনের জন্য এই প্রক্রিয়াটি পুনরাবৃত্তি হয়।


1
রুবির মধ্যে পদ্ধতি কলগুলির জন্য প্রথম বন্ধনী প্রয়োজন নেই, সেগুলি সরিয়ে ফেললে আপনি একটি বাইট সংরক্ষণ করবেন।
এম-ক্রিজান



2

জাভাস্ক্রিপ্ট (ES6), 48 বাইট

s=>s.map(c=>c[6]<"*"?console.log(c.substr(7)):1)

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


1
এটি কোনও ফাংশন নয় বা একটি সম্পূর্ণ প্রোগ্রাম নয় যেমন এটি ধরে নেয় ইনপুটটি সঞ্চিত আছে z, যা এখানে অনুমোদিত নয়। তবে আপনি এটিকে বৈধ করার জন্য এটি একটি বেনামে তীর ফাংশনে পরিণত করতে পারেন।

1
নিখুঁত সমাধানটি আপডেট করেছে - এফএন এর আশেপাশে (এবং )আশেপাশের নিয়মগুলি কী তা নিশ্চিত নয় , সেগুলি নিশ্চিত হতে যুক্ত করেছে।
স্যাডডডাক

1
আপনার ()চারপাশের ফাংশনটির দরকার নেই তবে অন্যথায় এটি দুর্দান্ত দেখাচ্ছে।
২air

2

> <>, 57 53 বাইট

>i~i~i~i~i~i~i67*=\
<o$/?:$/?=a:;?(0:i<
\~$/~\ $
/  <o\?/

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

ব্যাখ্যা

>i~i~i~i~i~i~i67*=    Read in the first seven bytes of the line
 i~i~i~i~i~i~         Read, and discard 6 characters
             i        Read the seventh
              67*=    Check if the seventh character was an 
                      asterisk (and leave that value on the stack );

<o$/?:$/?=a:;?(0:i<    Read characters until a newline or eof
                 i     Read the next character of the line
            ;?(0:      If it's a -1, terminate the program
       /?=a:           If it's a newline, break out of the loop
   /?:$                If the seventh character was not an asterisk
<o$                    Output this character
\~$/                   otherwise discard it

   /~\ $    Having reached the end of the line, output
/  <o\?/    the newline only if it was not a comment

সম্পাদনা করুন: 53 বাইট

>   i~i~i~i~i~i~i67*=\
/?=a<o/?$@:$@:$;?(0:i<
~   \~/

মূলত আগের মতো একই জিনিস, তবে কিছুটা পুনর্গঠন

পার্শ্ব নোট হিসাবে: আমি এখনও কোবলে কারও কাজটি করাতে নিরাশ।


2

সি #, 160 145 90 89 বাইট

t=>{var o="";foreach(var s in i.Split('\n'))if(s[6]!=42)o+=s.Substring(7)+"\n";return o;}

আকার হ্রাস করার জন্য পাভেল ও অহমানকে ধন্যবাদ।


পিপিসিজিতে আপনাকে স্বাগতম! আমি আপনার উত্তরে এটি চেষ্টা করে অনলাইনে যুক্ত করার পরামর্শ দিচ্ছি যাতে অন্যরা আপনার কোডটি পরীক্ষা করতে পারে। তা ছাড়া, দুর্দান্ত প্রথম (ভাল, দ্বিতীয়) উত্তর!
লিরিকলি

আপনি ফর্মটিতে ল্যাম্বদা লিখে এই খাটোটি তৈরি করতে পারেনt=>{...}
পাভেল

@ লিরিকলাই আমি চেষ্টা করেছিলাম বাস্তবে, কিন্তু কোনও কারণে, এটি সেখানে কাজ করে না। যদিও এটি কোনও ভিএস কনসোল অ্যাপে পুরোপুরি সূক্ষ্মভাবে কাজ করে।
13:57 এ snorepion

@ পাভেল তাই পছন্দ? আমি এটি পুরোপুরি সঠিকভাবে সম্পাদন করেছি কিনা তা নিশ্চিত নই; আমি এর আগে কখনও ল্যাম্বডা এক্সপ্রেশন ব্যবহার করার দরকার পড়েনি।
13:58 এ snorepion

হ্যাঁ অবশ্যই. আপনি এটিকে নিয়োগ দিয়ে এটি পরীক্ষা করতে পারেন func<string, string>
পাভেল

2

পাইথন 3, 71 বাইট (কোনও রেজিপ্সপ নেই)

def f(s):
 for w in s.split('\n'):
  t=w[6:]
  if t[0]!='*':print(t[1:])

এটি কাজ করে!

>>> s="""000000 blah blah
000001* apples
000002 oranges?
000003* yeah, oranges.
000*04 love me some oranges"""
>>> f(s)
blah blah
oranges?
love me some oranges


1

জাভাস্ক্রিপ্ট, 44 34 বাইট

ক্রসড আউট 44 এখনও নিয়মিত 44।

6 টি বাইট সাশ্রয় করে tsh ধন্যবাদ

a=>a.replace(/^.{6}( |.*\n)/gm,'')

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


s=>s.replace(/^.{6}( |\*.*\s)?/mg,'')
tsh


@tsh। কোনও স্থির দোভাষী না থাকলে যতক্ষণ না এটি অনুমতি দেয়, আমি মনে করি এটি একটি বৈধ প্রোগ্রামিং ভাষা হিসাবে গণনা করা হচ্ছে না।

দেখে মনে হচ্ছে না যদি শেষ লাইনের একটি মন্তব্য লাইনের মতো এটি সঠিক আউটপুট দেয়।
লিরিকলি

@LyricLy। কারণ আমি ধরে নিয়েছি যে ইনপুটটিতে সর্বদা একটি নতুন লাইন থাকবে। আপনি দেখতে পাবেন যে এটি কাজ করে ইনপুট পরে একটি খালি লাইন আছে। আমার যদি এটি ধরে না নেওয়া উচিত তবে ফিক্সের জন্য 1 বাইট ( ?পরে যুক্ত করা \n) লাগবে ।

1

সি ++ (জিসিসি), 121 112 বাইট

9 বাইট সংরক্ষণ করার জন্য @ গুরকা ধন্যবাদ!

#import<bits/stdc++.h>
void f(std::list<std::string>l){for(auto s:l)if(s[6]-42)std::cout<<s.substr(7,s.size());}

লাইনের তালিকা হিসাবে ইনপুট নেয়।

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


#import? এছাড়াও, আমি মনে করি যে এটি মানক বাদ দেওয়া ঠিক আছে includes
সাইমন

#importমানক সি ++ নয়, তবে কমপক্ষে জিসিসি এবং এমএসভিসি এটি সমর্থন করে। কিছু বাদ দেওয়া সি এর সাথে কাজ করে তবে সি ++ এর সাথে নয়। কোডগুলি অন্তর্ভুক্ত ব্যতীত কাজ করে না, সুতরাং এগুলিকে মোট বাইটাউন্টে গণনা করতে হবে।
স্টেডিবক্স

আহা, আমি ভেবেছিলাম আপনি importপাইথন জবাব বা usingসি # উত্তরগুলিতে কোনও দেখতে পান না তাই আপনি কেবল এড়িয়ে যেতে পারেন । এছাড়াও, #include <bits/stdc++.h>আপনার উত্তরের জন্য সংক্ষিপ্ত হবে না ?
সাইমন 14

@ গুরকা হ্যাঁ, এটি আরও কম হবে। ধন্যবাদ!
স্টেডিবক্স

@ গুরকা আমদানিগুলি পাইথন উত্তরে গণনা করা হচ্ছে , পাইথনের এমন অনেকগুলি কার্যকারিতা রয়েছে যা আমদানির প্রয়োজন হয় না need সি # এর বিবৃতি ব্যবহার না করা হয়েছে কারণ এটি সাধারণত লেখার system.foo()চেয়ে খাটোusing system;foo()
পাভেল

1

জাভা 8, 95 54 53 বাইট

s->s.filter(x->x.charAt(6)<33).map(x->x.substring(7))

থেকে -42 বাইট ধন্যবাদ @ OliverGrégoire , ব্যবহার করে একটি দ্বারা Stream<String>পরিবর্তে Stringযেমন ইন এবং আউটপুট।

ব্যাখ্যা:

এখানে চেষ্টা করুন।

s->                          // Method with Stream<String> as parameter and return-type
  s.filter(x->x.charAt(6)<33)//  Filter out all lines containing an asterisk as 7th char
   .map(x->x.substring(7))   //  And remove the first 7 characters from the remaining lines
                             // End of method (implicit / single-line body)

দেখে মনে হচ্ছে আপনি -12 বাইটের জন্য একটি String[]বা List<String>ইনপুট হিসাবে ব্যবহার করতে পারেন ।
Jakob

বা Stream<String>যদি এটি সাহায্য করতে পারে। উদাহরণ:s->s.map(x->x.charAt(6)!=42?x.substring(7):"")
অলিভিয়ার গ্রাগোয়ার

1
ওহ, ফিল্টার করা দরকার ... তারপরে s->s.filter(x->x.charAt(6)!=42).map(x->x.substring(7))54 বাইটের জন্য।
অলিভিয়ার

1
<42পরিবর্তে ব্যবহার করুন !=42কারণ "আপনি ধরে নিতে পারেন সপ্তম অক্ষরটি সর্বদা একটি তারকাচিহ্ন বা স্থান is"
অলিভিয়ার

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