না থ্যাং! …অথবা এটা?


24

ভূমিকা

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

আমাদের সকলকে শহুরে পরিবেশে টিকে থাকার জন্য একটি দোভাষী তৈরি করা আপনার কাজ।

চ্যালেঞ্জ

ইনপুট হিসাবে একটি ইংরেজী বাক্য দেওয়া, এমন একটি প্রোগ্রাম বা একটি ফাংশন তৈরি করুন যা বাক্যটির ফলাফল ইতিবাচক বা নেতিবাচক কিনা তা নির্ধারণ করে।

বাক্য উপস্থিত থাকবে 0করার 2নেতিবাচক শব্দ। যে কোনও প্রোগ্রামার জানেন, একটি ডাবল নেতিবাচক ফলাফল ইতিবাচক হয়। অতএব, আপনার কোড অবশ্যই নিম্নলিখিত নিয়ম অনুসারে একটি সত্যবাদী / মিথ্যা মান প্রদান করতে হবে:

No negative words  -> truthy
One negative word  -> falsey
Two negative words -> truthy

নেতিবাচক শব্দের তালিকা:

  • no, not,none
  • কিছুতেই শেষ হচ্ছে n't
  • never, neither,nor
  • nobody, nothing,nowhere

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

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

পরীক্ষার মামলা

Truthy:

Yes.
It's noon.
Hello, World!
What is this?
Ain't no thang!
Never say never.
No, it's noon now.
Neither me nor you.
I didn't do nothing!
No, I am your father.
A non-alcoholic drink.
I can't get no satisfaction.
All your base are belong to us.

Falsey:

No.
No, no!
Not today.
Neither am I.
Don't do that!
That's no moon!
And none survived.
Is this not my car?
No man is an island.
Nosebleeds are no fun.
Nothing compares to you.
That's a no, I'm afraid.
No, I am not your mother.

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

বিধি

স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ। এটি , তাই সংক্ষিপ্ত হতে!


1
কেউ কখনও কোথাও বা কিছু ছিল না।
ম্যাজিক অক্টোপাস উরান

1
@MagicOctopusUrn: আপনি হারাতে পারেন been100% নেতিবাচক বাক্য জন্য!
এন্টি 29

উত্তর:


10

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

No,

Mi`\bn(e(ith|v)er|o(|body|ne|r|t|thing|where))\b|n't\b
0|2

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

ব্যাখ্যা

No,

No,ইনপুট থেকে সরান । মূলধন বিধিগুলির কারণে, এটি কেবল ইনপুটটির শুরুতে উপস্থিত হতে পারে, সুতরাং আমাদের সুস্পষ্ট প্রয়োজন নেই ^

Mi`\bn(e(ith|v)er|o(|body|ne|r|t|thing|where))\b|n't\b

এর পরে কেস-সংবেদনশীল রেজেক্সের ম্যাচের সংখ্যা গণনা করুন `। এটি কেবলমাত্র সমস্ত প্রাসঙ্গিক শব্দের সাথে মেলে, যেখানে আমি বিকল্পগুলির সাথে সাধারণ উপসর্গ / প্রত্যয়গুলি বের করেছি।

0|2

গণনা 0বা 2গুলি, সুতরাং আমরা এমনকি গণনাগুলিকে 1এবং বিজোড় সংখ্যাগুলিতে রূপান্তর করি 0


আপনি সাধারণ হাতে চিঠির এক্সট্রাকশনটি নিজেই করেন বা এমন কোনও প্রোগ্রাম ব্যবহার করেন যা আপনার জন্য সর্বোত্তম সমাধান খুঁজে পায়?
জোনা

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

3
একটি আকর্ষণীয় চ্যালেঞ্জ তৈরি করতে পারে ...
জোনাহ

শব্দগুলির অর্থ একটি অভিধান থেকে আসতে হবে n'tবলে আপনার অনুমান করা দরকার যে এর \bপরে এর দরকার নেই । এছাড়াও, আমারও একই জিনিস ছিল, তবে উত্তরটির গোশত আমার কাছে সংক্ষিপ্তভাবে ছিল না, আরও কয়েকটা বাইট ব্যবহার করে।
mbomb007

8

বাশ, 115 107 99 98 97 95 85 বাইট

প্যাকেজগুলি কোর ইউটিলিটিস (এর জন্য wc) এবং ব্যবহার করে grep। ধরুন বাক্যটি স্ট্যান্ডার্ড ইনপুট দিয়ে দেওয়া হয়েছে। ইতিহাস সম্প্রসারণ দ্বারা অক্ষম করা আছে set +o histexpand

((~`grep -Pio "(?!^no,)\b(no(|t|r|ne|body|thing|where)|ne(v|ith)er|.*n't)\b"|wc -l`%2))

ফলাফলটি দেখুন: বাশে 0 টি সত্যের জন্য, 1 টি মিথ্যা for

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

((                       )) # Logical evaluation: non-zero to TRUE, zero to FALSE
  ~                    %2   # C-style arithmetic: Bit-Negate and Modulus 2
   $(                 )     # Output of the program chain
     grep -Pio "regex"      # PCRE match, ignore case, output matching part one-per-line
     | wc -l                # Pipe to `wc` and count number of lines

18 বাইট (115 99) থেকে অনুপ্রেরণা দ্বারা সংরক্ষিত Qwertiy এর উত্তর এবং মার্টিন Ender এর উত্তর । 1 বাইট ধন্যবাদ Nahuel Fouilleul


রেজেক্স সঠিক নয়: ম্যাচগুলি noonএবং নাThat's a no, I'm afraid.
নাহুয়েল ফিউইলুল

পুনঃটুইট
iBug

চেক করতে: টিও অবশ্য পরীক্ষাগুলি আটকাতে পারেনি কারণ মন্তব্যের দৈর্ঘ্যের সীমা
নাহুয়েল ফিউইলুল

এটি সঠিক ফলাফল দেয়((~$(grep -Pio "(?!^no,)\b(no(|t|r|ne|body|thing|where)|ne(v|ith)er)\b|.*n't\b"|wc -l)%2))
নাহুয়েল ফিউইলুল

$(..)1 বাইট সংরক্ষণের পরিবর্তে ফিরে উদ্ধৃতিগুলি
নাহুয়েল ফিউইলুল

5

জাভাস্ক্রিপ্ট ES6, 89 87 86 অক্ষর

s=>s.match(/(?!^no,)\bn(o(|t|r|ne|body|thing|where)|e(v|ith)er)\b|n't\b|$/ig).length&1

টেস্ট:

f=s=>s.match(/(?!^no,)\bn(o(|t|r|ne|body|thing|where)|e(v|ith)er)\b|n't\b|$/ig).length&1

console.log(`Yes.
It's noon.
Hello, World!
Never say never.
Ain't no thang!
No, it's noon now.
Neither me nor you.
I didn't do nothing!
No, I am your father.
A non-alcoholic drink.
I can't get no satisfaction.
All your base are belong to us.`.split`
`.every(f))

console.log(`No.
No, no!
Not today.
Neither am I.
Don't do that!
That's no moon!
And none survived.
No man is an island.
Nosebleeds are no fun.
Nothing compares to you.
That's a no, I'm afraid.
No, I am not your mother.`.split`
`.every(s=>!f(s)))


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