একটি হাইকু-ডব্লু ডিটেক্টর লিখুন


41

একটি হাইকু তিন লাইন দিয়ে একটি কবিতা, একটি 5/7/5 সঙ্গে শব্দাংশ যথাক্রমে গণনা।

একটি হাইকু-ওয়াট তিন লাইন দিয়ে কবিতা, একটি 5/7/5 সঙ্গে শব্দ যথাক্রমে গণনা।

চ্যালেঞ্জ

এমন একটি প্রোগ্রাম লিখুন যা ইনপুটটি হাইকু-ডাব্লু হলে সত্য হয় এবং যদি না হয় তবে এটি মিথ্যা

একটি বৈধ হাইকু-ডাব্লু ইনপুট অবশ্যই 3 টি লাইন সমন্বিত, একটি নতুন লাইন দ্বারা পৃথক করা আবশ্যক।

  • লাইন 1 অবশ্যই 5 টি শব্দ নিয়ে গঠিত, প্রতিটি শব্দ একটি স্পেস দ্বারা পৃথক করা উচিত।
  • লাইন 2 অবশ্যই 7 টি শব্দ নিয়ে গঠিত, প্রতিটি শব্দ একটি স্পেস দ্বারা পৃথক করা উচিত।
  • লাইন 3 অবশ্যই 5 টি শব্দ নিয়ে গঠিত, প্রতিটি শব্দ একটি স্পেস দ্বারা পৃথক করা উচিত।

উদাহরণ

The man in the suit
is the same man from the store.
He is a cool guy.

ফলাফল: সত্য

Whitecaps on the bay:
A broken signboard banging
In the April wind.

ফলাফল: মিথ্যা


বিধি

  • এটি , তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তর ins
  • স্ট্যান্ডার্ড কোড-গল্ফ লুফোলস প্রয়োগ হয়। প্রতারণা নিষিদ্ধ।
  • অন্যান্য বুলিয়ান রিটার্ন মান যেমন, 1এবং 0গ্রহণযোগ্য।
  • ইনপুট হিসাবে স্ট্রিংগুলির দৈর্ঘ্য -3 তালিকাটি গ্রহণযোগ্য।
  • বৈধ হাইকু-ডাব্লু ইনপুটগুলিতে নেতৃস্থানীয় বা পিছনের স্থানগুলি বা একাধিক স্পেস পৃথক করে শব্দ থাকা উচিত নয়।

1
হাইকু-ডাবলিতে সর্বদা 3 লাইন থাকবে?
ক্রিটিকি লিথোস

1
হ্যাঁ. যদি ইনপুটটিতে 3 টিরও বেশি বা কম লাইন থাকে তবে প্রোগ্রামটি মিথ্যা ফিরে পাওয়া উচিত ।
ডোম দ্য ডেভেলপার

5
কোনও লাইনে কখনও শীর্ষস্থানীয় বা পিছনের স্থান থাকবে? বা একাধিক স্পেস শব্দ আলাদা করে?
গ্রেগ মার্টিন

8
যাইহোক, এর মতো স্পষ্টকরণ প্রথমে স্যান্ডবক্সে প্রস্তাবিত প্রশ্নগুলি পোস্ট করার প্রাথমিক কারণ । :)
গ্রেগ মার্টিন

11
জমা দেওয়ার জন্য বোনাস পয়েন্ট যেখানে কোড নিজেই হাইকু-ডাব্লু।
গ্লোরফাইন্ডেল

উত্তর:


25

জাভাস্ক্রিপ্ট (ES6), 73 72 64 63 54 42 39 বাইট

13 বাইট সংরক্ষণ করার জন্য নীলকে ধন্যবাদ

a=>a.map(b=>b.split` `.length)=='5,7,5'

ব্যাখ্যা

এটি একটি ফ্যাট-এ্যার ফাংশন যা আর্গুমেন্ট হিসাবে স্ট্রিংগুলির অ্যারে নেয়। এটি প্রতিটি লাইনকে তার শব্দের সংখ্যা দ্বারা প্রতিস্থাপন করে। যদি এটি হাইকু-ডাব্লু হয় তবে aএখন আবার পাঁচ, একটি সাত এবং পাঁচ একটি অ্যারে রয়েছে। যেহেতু জাভাস্ক্রিপ্ট আমাদের একই সাথে ২ টি অ্যারে তুলনা করতে দেয় না, তাই অ্যারে প্রথমে একটি স্ট্রিংয়ে রূপান্তরিত হয় এবং তারপরে তুলনা করা হয়। এটি ফিরিয়ে দেওয়া একটি বুলিয়ানের ফলস্বরূপ।


1
%এবং *একই নজির রয়েছে, সুতরাং আপনার প্রয়োজন নেই (), যদিও আমি মনে করি (d*2|5)এটিও কার্যকর হতে পারে। এছাড়াও আপনি একটি একক সঙ্গে পালাতে পারেন &, যদিও আমি মনে করি আপনি এমনকি এটি ব্যবহার করে উন্নতি করতে পারেন (b...).length==3>b.some(...length-...)
নীল

প্রথম বন্ধনী সম্পর্কে পরামর্শ দেওয়ার জন্য ধন্যবাদ। এছাড়াও, আমি আমার পদ্ধতির পরিবর্তন করেছি, তাই আমি স্পষ্টভাবে আর দৈর্ঘ্যের জন্য পরীক্ষা করি না।
লুক

1
আহ, সেক্ষেত্রে গণনা নিয়ে বিরক্ত করবেন না, কেবল ব্যবহার করুন a=>a.map(c=>c.split .length)=='5,7,5'
নীল

হেই, আপনি ঠিক বলেছেন। আমার এই কথাটি ভাবা উচিত ছিল ...
লূক

আপনি এখনও প্রয়োজন হবে না +''- ==stringifies হলে অন্য যুক্তি স্ট্রিং।
নীল

12

এডাব্লুকে (জিএনইউ আওক), 24, 30, 28, 20 বাইট

Golfed

517253==$0=q=q NF NR

উইল আউটপুট জন্য "517253" ট্রু , এবং খালি স্ট্রিং মিথ্যা

অজস্রতে, কোনও ননজারো সংখ্যাসূচক মান বা কোনও অজানা স্ট্রিংয়ের মান সত্য। অন্য কোনও মান (শূন্য বা নাল স্ট্রিং, "") মিথ্যা

জিএনইউ অ্যাওক ব্যবহারকারীর গাইড

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

প্রতিটি অ্যাজক স্টেটমেন্ট (নিয়ম) এর সাথে সম্পর্কিত ক্রিয়া সহ একটি প্যাটার্ন (বা প্রকাশ) থাকে:

pattern {action}

আওক লাইন বাই ইনপুট লাইনটি পড়বে (রেকর্ড অনুসারে রেকর্ড করুন) এবং কোনও সংশ্লিষ্ট ক্রিয়াটি চালিত করতে হবে কিনা তা দেখতে প্যাটার্ন এক্সপ্রেশনটিকে মূল্যায়ন করবে।

উপরের কোডটি স্ট্যান্ডএলোন আউক এক্সপ্রেশন (প্যাটার্ন) ডাব্লু / ও অ্যাকশন ব্লক, যা {print $0}সেই ক্ষেত্রেই বোঝানো হয়েছে ।

এটি ডান থেকে বামে পড়তে হবে:

q=q NF NR

পরিশেষে একটি এন এর আমভের এফ ields (শব্দ) এবং এন এর আমভের আর ecords (অর্থাত বর্তমান লাইন সংখ্যা), পরিবর্তনশীল কুই

এই ভাবে, যখন একটি সঠিক হাইকু-ওয়াট, প্রসেসিং কুই সেট করা হবে:

  • 51 - লাইনে # 1 (5 শব্দ)
  • 5172 - লাইনে # 2 (5 শব্দ + 7 শব্দ)
  • 517253 - লাইনে # 3 (5 শব্দ + 7 শব্দ + 5 শব্দ)

$0=q

সদ্য নির্ণিত মান নির্ধারণ কুই করতে $ 0 (যা ডিফল্টভাবে পুরো বর্তমান লাইন / রেকর্ড)।

517253==$0

এটি একটি যথাযথ হাইকু-ডাব্লু (517253) এর জন্য "স্বাক্ষর" এর সাথে তুলনা করুন, যদি কোনও মিল থাকে তবে পুরো এক্সপ্রেশনটি "সত্য" এর সাথে মূল্যায়ন করে এবং সংশ্লিষ্ট ক্রিয়া (অন্তর্নিহিত print $0) চালিত হয়, "517253" প্রেরণকে স্টাডাউটে (সত্য) অন্যথায় আউটপুট খালি হবে (মিথ্যা)।

নোট করুন যে এটি একটি হাইকু-ডব্লুটিকে যথাযথভাবে স্বীকৃতি দেবে, এমনকি যদি এটি নির্বিচারে আবর্জনা লাইন অনুসরণ করে তবে আমি বিশ্বাস করি যে এটি ঠিক আছে, যেমন:

ইনপুট হিসাবে স্ট্রিংগুলির দৈর্ঘ্য -3 তালিকাটি গ্রহণযোগ্য।

(যেমন আমরা ইনপুটটি 3 লাইন দীর্ঘ ধরে ধরে নিতে পারি)

পরীক্ষা

>awk '517253==$0=q=q NF NR'<<EOF
The man in the suit
is the same man from the store.
He is a cool guy.
EOF

517253

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


2
ইনপুটটিতে 575 শব্দের সমন্বিত একটি লাইন বা 57 এবং 5 শব্দ ইত্যাদির দুটি লাইন থাকে তবে এটি ব্যর্থ হয়
লিন

@ লিন, সত্য, যতক্ষণ না এটি স্থির হয়ে থাকে hold
জেপেলিন

@Lynn, এখন সংশোধন করা উচিত
জেপেলীন্

1
খুব চালাক ফিক্স! :)
লিন

9

পাইথন , 42 বাইট

lambda l:[s.count(' ')for s in l]==[4,6,4]

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

একক স্পেস দ্বারা পৃথক শব্দের সাথে লাইনগুলির তালিকা হিসাবে ইনপুট নেয়।

যেহেতু আমাদের গ্যারান্টিযুক্ত রয়েছে যে কোনও নেতৃস্থানীয় বা পিছনে স্থান নেই, এবং কেবলমাত্র একক স্পেস প্রতিটি শব্দ পৃথক করবে, আমরা কেবল প্রতিটি লাইনের ফাঁকা স্থান গণনা করে একটি ডাব্লু-হাইকু যাচাই করতে পারি।

স্থান-গণনার তালিকা তৈরি করতে আমরা একটি তালিকা বোধগম্যতে এটি করি। যদি এটি সঠিক হাইকু হয় তবে এটি দেখতে দেখতে ভাল লাগবে [4, 6, 4], সুতরাং আমরা এটির সাথে এটির তুলনা করব এবং ফলাফলটি ফিরিয়ে দেব।


আপনি শুধুমাত্র পাইথন 2 সমর্থন ঠিক আছে হন, তাহলে আপনি দুই বাইট সংরক্ষণ করতে পারেন: map(str.count,l,' ')
ভোল্টাহ

8

জেলি , 10 9 বাইট

ċ€⁶⁼“¥©¥‘

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

ব্যাখ্যা

ċ€⁶⁼“¥©¥‘  Input: length-3 list of strings
 €         For each string
ċ ⁶          Count the number of spaces
    “¥©¥‘  Convert string to code page indices, makes [4, 6, 4]
   ⁼       Match

এছাড়াও ċ€⁶⁼4,6,4এবং ċ€⁶⁼464D¤… যদিও আমি ছোট কিছু পাই না। (ওহ, আপনি এটিও সরিয়ে ফেলতে পারেন 464D⁼ċ€⁶$:)
লিন

ċ€⁶Ḍ=4648 এর জন্য জরিমানা কাজ করে
জোনাথন অ্যালান

আসলে, না , না , দুঃখিত।
জোনাথন অ্যালান

7

ব্যাচ, 102 বাইট

@echo off
call:c&&call:c 2||exit/b
:c
set/an=%1+5
set/ps=
for %%W in (%s%)do set/an-=1
exit/b%n%

শব্দের ভুল সংখ্যার সাথে একটি লাইন পড়ার সাথে সাথে অ-শূন্য ত্রুটিবিহীন প্রস্থানটি প্রস্থান করে।


1
...... ভাল
বকাবকি

7

গণিত, 21 বাইট

{4,6,4}==Count@" "/@#&

নামহীন ফাংশন অক্ষরের তালিকার একটি তালিকা ইনপুট হিসাবে হিসাবে এবং প্রত্যাবর্তন Trueবা False। প্রতিটি অক্ষরের তালিকায় কতগুলি স্পেস রয়েছে তা কেবল গণনা করে, যা চ্যালেঞ্জের নিয়মের অধীনে প্রতিটি লাইনের শব্দের সংখ্যার সাথে নিখুঁতভাবে সম্পর্কযুক্ত।

পূর্ববর্তী জমা:

গণিত, 31 বাইট

Length/@StringSplit/@#=={5,7,5}&

নামহীন ফাংশন স্ট্রিংগুলির একটি তালিকা ইনপুট হিসাবে এবং রিটার্ন হিসাবে নেওয়া Trueবা False



6

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

M%` 
^4¶6¶4$

(প্রথম লাইনের পরে পিছনে স্থান রয়েছে)

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

  • M%`  - প্রতিটি লাইনের ফাঁকের সংখ্যা গণনা করুন।

    • M - ম্যাচ মোড - ম্যাচের সংখ্যা মুদ্রণ করুন।
    • % - প্রতিটি লাইনের জন্য
    • ` - পৃথক কনফিগারেশন এবং রেজেক্স প্যাটার্ন
    • - শুধু একটি জায়গা।
  • ^4¶6¶4$ - 4, 6 এবং 4 টি স্পেস এবং ঠিক তিনটি লাইন থাকা উচিত।

    • নতুন লাইনের সাথে মেলে। বাকিটি একটি সাধারণ নিয়মিত প্রকাশ expression

1বৈধ ইনপুট জন্য মুদ্রণ , 0অবৈধ।


4

পাইথন, 58 44 বাইট

lambda h:[len(l.split())for l in h]==[5,7,5]

Tbodt দ্বারা -14


আপনাকে স্ট্রিংয়ের দৈর্ঘ্যের 3 টি তালিকা হিসাবে ইনপুট নেওয়ার অনুমতি দেওয়া হয়েছে। ব্যবহার করে ব্যয় করা বাইট সংরক্ষণ করতে পারেন split("\n")
মাইল মাইল

44 বাইট:lambda h:[len(l.split())for l in h]==[5,7,5]
tbodt

কেউ এই সংক্ষিপ্ততরটিকে 44
চার্লি 20


4

পাইথ, 9 বাইট

qj464T/R;

এমন একটি প্রোগ্রাম যা একটি তালিকার ইনপুট নেয় "quoted strings"এবং প্রিন্ট করে Trueবা Falseযথাযথ হিসাবে।

পরীক্ষা স্যুট

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

qj464T/R;   Program. Input: Q
qj464T/R;Q  Implicit variable fill
     T      Are the base-10
 j          digits
  464       of 464
q           equal
      /     to the number
        ;   of spaces
       R    in each string
         Q  in the input?
            Implicitly print


4

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

"$args"-replace'\S'-match'^(    )
\1  
\1$'

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

ব্যাখ্যা

একটি নতুন লাইন পৃথক স্ট্রিং হিসাবে ইনপুট নেয়।

সমস্ত অ-হোয়াইটস্পেস সরিয়ে দেয়, তারপরে এটি একটি রেজেক্স ব্যবহার করে "4 স্পেস, নিউলাইন, 6 স্পেস, নিউলাইন, 4 স্পেসস নিউলাইন" ঠিক মেলে তা পরীক্ষা করে দেখুন see

ক্যাপচার গ্রুপটি 4 টি স্পেসের সাথে মেলে, পিছনের বিষয়টি সেইটিকে \1বোঝায়। নিউলাইনগুলি স্ট্রিংটিতে এমবেড করা আছে। দ্রষ্টব্য রেগেক্সের দ্বিতীয় লাইনে পিছনের পরে দুটি স্থান রয়েছে।


1
এটি একটি আকর্ষণীয় অ্যাপ্রোচ!
ইসমাইল মিগুয়েল


3

জে, 12 বাইট

4 6 4=#@;:@>

ইনপুটটি স্ট্রিংগুলির একটি বক্সযুক্ত তালিকা।

ব্যাখ্যা

এটি একটি ধ্রুবক বাম টাইন সঙ্গে একটি কাঁটাচামচ। এটি #@;:@>সমানতার জন্য , সঠিক টাইনটির ফলাফলটি পরীক্ষা করে 4 6 4। সঠিক সময় প্রতিটি ( >) কে আনবক্স করে , তারপরে ( @) প্রতিটি স্ট্রিংকে কথায় ( ;:) রূপান্তর করে , তারপরে ( @) প্রতিটি ( #) এর দৈর্ঘ্য নেয় ।


3

আর, 48 বাইট

all(stringr::str_count(scan(,"")," ")==c(4,6,4))

স্টিডিন থেকে একটি 3-দৈর্ঘ্যের অক্ষর ভেক্টর পড়ে এবং স্পেস সংখ্যা গণনা করে কাজ করে। আমরা যে জায়গাগুলি str_countথেকে ব্যবহার করি তার সংখ্যা গণনা করতে Tostringrরিজেক্স প্যাটার্নের উপর ভিত্তি করে প্যাকেজটি গণনা করতে পারি।

প্যাকেজ ব্যবহার না করে একটি বিকল্প পদ্ধতি হতে পারে:

all(sapply(scan(,""),function(x)length(el(strsplit(x," "))))==c(5,7,5))

আমি এর elআগে প্রথমবার দেখেছি , এর জন্য ধন্যবাদ।
বিএলটি

3

সি 142 বাইট

void f(){char *c;l=3;s[3]={0};while(l>0){if(*c==' ')s[l-1]++;if((*c=getchar())=='\n'){l--;}}printf("%d",(s[0]==4 && s[1]==6 && s[2]==4)?1:0);}

অবরুদ্ধ সংস্করণ:

void f()
{
  char *c;
  c = (char *)malloc(sizeof(char)); 
  int l=3;
  int s[3]= {0};


  while(l>0)
  {  
    if(*c==' ')
    s[l-1]++;

    if( (*c=getchar())=='\n')
    {    
      l--;
    }   
  }
  printf("%d",(s[0]==4 && s[1]==6 && s[2]==4)?1:0);
}

5/7/5 ক্রমানুসারে অন্য 0 এ 1 প্রদান করে।

একটি ইতিবাচক টেস্টকেস:

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


3

সি ++, 357 বাইট

কোড গল্ফ এ নতুন সাজানোর, তবে আমি দ্রুত করতে পারেন এটি সেরা

#include <iostream>
using namespace std;
int n(std::string s)
{
    int b = 0;
    for(char c: s)
        if(c == ' ') b++;
    cout << "C = " << b;
    return b;
}
int main()
{
    string a, b, c;
    getline(cin, a);
    getline(cin, b);
    getline(cin, c);
    if(n(a)==4 && n(b)==6 && n(c)==4)
        cout<<'1';
    else cout << '0';
    return 0;
}

4
পিপিসিজিতে আপনাকে স্বাগতম! কোড গল্ফের লক্ষ্যটি আপনার কোডটি যতটা সম্ভব সংক্ষিপ্ত করে তোলা; একটি ভাল প্রথম পদক্ষেপ হ'ল সমস্ত অপ্রয়োজনীয় সাদা স্থান সরিয়ে ফেলা।
ETH প্রোডাকশনগুলি

3

রুবি ১.৯.৩

গল্ফড নয়, এটি নিজেই হাইকু-ডাব্লু

def haiku_w(input)
  lines = input.split("\n")
  lengths = lines.map(&:split).map(&:length)
  lengths.eql?([5,7,5])
end

বা ...

lines equals input split (newlines)
lengths equals lines map split map length
lengths equals five seven five?

দুর্ভাগ্যক্রমে কোনও লাইনে শীর্ষস্থানীয় হোয়াইটস্পেসের সাথে কাজ করে না, তবে পিছনে পড়ার সাথে লড়াই করে।


2

পাইথন 2 , 57 64 বাইট

@ দাদার প্রতিক্রিয়ার পরে 7 বাইট যোগ করার সাথে সম্পাদনা করুন । ধন্যবাদ!

i,j=input,''
for x in i():j+=`len(x.split())`+' '
i(j=='5 7 5 ')

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

খুব দীর্ঘতম পাইথন উত্তর দীর্ঘ পথ দিয়ে নয়, তবে সম্প্রতি input()আউটপুট প্রদর্শন করতে এবং একটি printবিবৃতি সংরক্ষণ করতে ব্যবহার করে আমি নতুন কৌশলটি ব্যবহার করতে চেয়েছিলাম use ইনপুট হিসাবে লাইনগুলির একটি তালিকা নেয়। টার্মিনালে প্রোগ্রামটি (একটি ব্যতিক্রম সহ) শেষ করতে সিটিআরএল সি (বা অন্য কোনও কী-প্রেস) প্রয়োজন তবে টিআইও ছাড়াই সূক্ষ্ম কাজ করে।


4
এই মত ক্ষেত্রে ব্যর্থ হবে এই এক
দাদা

আমি আপনাকে @ দাদা দেব। এটি একটি গুরুতর পরীক্ষার কেস :)
এলপেড্রো

আপনার পরীক্ষার কেসটি সংশোধন করে পরীক্ষা করা হয়েছে।
এলপেড্রো

2

এমএটিএল, 16 বাইট

"@Y:Ybn&h][ACA]=

ইনপুটটি স্ট্রিংগুলির একটি সেল অ্যারে এবং সত্যবাদী বা মিথ্যা অ্যারে প্রদান করে

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

ব্যাখ্যা

        % Implicitly grab input
"       % For each element in the cell array
@Y:Yb   % Split it on spaces
n       % Count the number of elements
&h      % Horizontally concatenate everything on the stack
[ACA]   % Create the array [5 7 5]
=       % Perform an element-wise equality
        % Implicitly display the truthy/falsey array

2

ম্যাটল্যাব / অক্টোবায়, 38 বাইট

@(x)cellfun(@(y)sum(y==32),x)==[4 6 4]

এই সমাধানটি স্ট্রিংয়ের একটি সেল অ্যারেটিকে ইনপুট হিসাবে গ্রহণ করে, প্রতিটি লাইনের [4 6 4]ফাঁকের সংখ্যা গণনা করে এবং তারপরে ফলাফলটিকে অ্যারের সাথে তুলনা করে একটি সত্যবাদী (সমস্ত মান 1 হয়) বা মিথ্যা (যে কোনও মান শূন্য হয়) পাওয়া যায়।

অনলাইন ডেমো



2

Clojure, 44 বাইট

#(=(for[l %](count(filter #{\ }l)))'(4 6 4))

ইনপুট স্ট্রিংগুলির তালিকা। ফাংশনটি কেবলমাত্র ফাঁকা জায়গা খুঁজে বের করে। এই ব্যাখ্যা হাইকু। :)


2

জাভা 7, 154 বাইট

class M{public static void main(String[]a){System.out.print(a.length==3&&a[0].split(" ").length==5&a[1].split(" ").length==7&a[2].split(" ").length==5);}}

প্রোগ্রামের প্রয়োজনীয়তা এবং তিনটি লাইন কম বা বেশি হওয়ার সম্ভাবনা, খুব নিজের জাভাটির ভারবোসিটির কথা উল্লেখ না করে এই 'গল্ফড' কোডটি বেশ বড় হতে পারে ..

Ungolfed:

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

class M{
  public static void main(String[] a){
    System.out.print(a.length == 3
        && a[0].split(" ").length == 5
         & a[1].split(" ").length == 7
         & a[2].split(" ").length == 5);
  }
}

2

সিম্পিম্পেল্পলেট, 77 বাইট

দুঃখের বিষয়, নিয়মিত অভিব্যক্তিটি স্বল্পতম।

{@if"@^([^\s]+ ?){5}\s([^\s]+ ?){7}\s([^\s]+ ?){5}+$@"is matchesargv}{@echo1}

* NIX- স্টাইলের নতুন লাইনের সাথে পাঠ্যটিকে প্রথম যুক্তি হিসাবে দেওয়া দরকার। এটি উইন্ডোজ-স্টাইলের নতুন লাইনের সাথে কাজ করবে না।

Ungolfed:

{@if "@^([^\s]+ ?){5}\s([^\s]+ ?){7}\s([^\s]+ ?){5}+$@"is matches argv}
    {@echo 1}
{@/}

নন-রেজেক্স ভিত্তিক, 114 বাই

{@setR 1}{@eachargv asL keyK}{@php$DATA[L]=count(explode(' ',$DATA[L]))!=5+2*($DATA[K]&1)}{@set*R R,L}{@/}{@echoR}

এটির জন্য প্রতিটি লাইনটিকে কার্যকারিতা হিসাবে যুক্তি হিসাবে দেওয়া দরকার as

Ungolfed:

{@set result 1}
{@each argv as line key k}
    {@php $DATA['line'] = count(explode(' ', $DATA['line'])) != 5+2*( $DATA['k'] & 1 )}
    {@set* result result, line}
{@/}
{@echo result}

2

স্ট্যাকড, 22 বাইট

[' 'eq sum]map(4 6 4)=

স্ট্যাকের শীর্ষ থেকে অক্ষরের স্ট্রিংগুলির তালিকা হিসাবে ইনপুট নেয়:

($'The man in the suit' $'is the same man from the store.' $'He is a cool guy.')

ব্যাখ্যা

[' 'eq sum]map(4 6 4)=
[         ]map          map the following function over each item
 ' 'eq                  vectorized equality with ' '
       sum              summed
              (4 6 4)=  is equal to (4 6 4)

2

জাভা (ওপেনজেডিকে) , 82 বাইট

-2 বাইটস @ করভাস_192 এর জন্য ধন্যবাদ!

s->s[0].split(" ").length==5&s[2].split(" ").length==5&s[1].split(" ").length==7

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

এটি দেখতে খুব গল্ফযোগ্য তবে একটি বিল্টিন মানচিত্রের কাজ ছাড়া আমি ভাল উপায় খুঁজে পাচ্ছি না। স্ট্রিম ব্যবহার করে মানচিত্রের ফাংশনটি লেখার সাথে সাথে অ্যারের মাধ্যমে আইট্রেট করা কয়েক বাইট দীর্ঘ হয়।

লাম্বদা এক্সপ্রেশন স্ট্রিংগুলির একটি অ্যারে নেয় এবং একটি বুলিয়ান দেয়।


আপনার যদি ইনপুট হিসাবে কেবল দুটি লাইন থাকে বা চারটি?
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন এই বিকল্প হিসাবে বলেছেন, "একটি ইনপুট হিসাবে স্ট্রিংগুলির দৈর্ঘ্য -3 তালিকাটি গ্রহণযোগ্য"। আমার প্রোগ্রামটি লাইনগুলির দৈর্ঘ্য -3 তালিকায় নিয়েছে।
পাভেল

আপনি ফোন করলে আপনি একটি মানচিত্রের ফাংশন পেতে পারেন Arrays.stream, তবে এটি এত দীর্ঘ যে এটি ব্যবহারের জন্য উপযুক্ত নাও হতে পারে (বিশেষত আপনার যদি আমদানির প্রয়োজন হয় Arrays)
পোকেচু 22

@ পোকেচু 22 হ্যাঁ আমি চেষ্টা করেছিলাম, এখনও লম্বা হওয়া পর্যন্ত শেষ হয়েছে।
পাভেল

আপনি দুটি বাইট সংরক্ষণের &পরিবর্তে ব্যবহার করতে পারেন&&
করভাস_192

2

স্মাইলব্যাসিক, 96 94 বাইট

INPUT A$,B$,C$?C(A$,4)*C(B$,6)*C(C$,4)DEF C(S,E)WHILE""<S
INC N,POP(S)<"!
WEND
RETURN N==E
END

1

আর, 100 বাইট

f<-function(a){all(sapply(a,function(x){length(grep(" ",as.list(strsplit(x,"")[[1]])))})==c(4,6,4))}

আর্গুমেন্ট হিসাবে স্ট্রিংগুলির দৈর্ঘ্য -3 তালিকা হিসাবে নেয়। সম্ভবত আরও গল্ফ করা হবে না যেহেতু আরও গল্ফিং এটি @ বিলিউব এর উত্তরে রূপান্তরিত করে।

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