সর্বনাম অপারেশন


24

চ্যালেঞ্জ

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

অবশ্যই, আপনি অবশ্যই উপস্থিত উপস্থিত ব্যাকরণগত ত্রুটিগুলি সংশোধন করতে ইচ্ছুক হিসাবে সম্পাদনা করতে দ্বিধা বোধ করবেন;)

এটি একটি কোড-গল্ফ চ্যালেঞ্জ, তাই সংক্ষিপ্ততম কোডটি জয়ী।

সম্পর্ক

এই কাজের লক্ষ্য হ'ল আমরা প্রতিদিন ব্যবহার করি এমন কিছু "গণিত-বক্তৃতা" তে অনুবাদ করা। আমরা কীভাবে "আপনি এবং আমি" ভাবব? আচ্ছা, "আমরা", তাই না? সুতরাং, ইনপুট You+Iহলে আউটপুটটি স্ট্রিং হওয়া উচিত We। দুটিরও বেশি সর্বনাম সহ, এটি দেখতে হবে: You+He+They->You

সম্পর্কটি এই টেবিল হিসাবে সংজ্ঞায়িত করা হয়েছে:

      I  You    He   We   You   They
I     I  We     We   We   We    We
You      You    You  We   You   You
He              He   We   You   They
We                   We   We    We
You                       You   You
They                            They

'আপনি' সমস্যা

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

ইনপুট সম্পর্কে

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

বোনাস

প্রোগ্রামটি দুটি নতুন সর্বনাম পরিচালনা করবে যদি 15% এর একটি সামান্য বোনাস: সে এবং এটি । তারা তাঁর মতোই, স্পষ্টতই। মনে রাখবেন যে এই সম্পর্কটি প্রতিবিম্বিত, তাই তিনি -> তিনি এবং এটি -> এটি। অতএব, যে কোনও সংমিশ্রণে কেবলমাত্র তিনি, তিনি বা এটি এতে অন্তর্ভুক্ত হওয়া উচিত output

উদাহরণ

You+I          -> We
You+He+They    -> You
I+You+He+They  -> We
They           -> They
They+You       -> You
You+You+I+You  -> We

For Bonus
She            -> She
She+He         -> They
I+It+He        -> We
It+You         -> You

@ টিমভি, আপনি যদি সঠিক উদাহরণগুলির কথা বলছেন তবে আমি কয়েকটি যুক্ত করব। যাইহোক, এই "প্লাস" সম্পর্কটি প্রতিচ্ছবিযুক্ত, সুতরাং তিনি + তিনি তিনি, আমি + আমিই আমি ....
সিমোন চেলো

5
আমি " I+I=I" পেয়েছি , যেহেতু Iপ্রদত্ত স্পিকার থেকে কেবল একটি " " থাকতে পারে । কিন্তু " He+He=They" পারিনি ? সাধারণত যদি আপনি Heএই নির্মাণে দুবার " " বলেন , আপনি দুটি পৃথক পুরুষ বিষয়কে উল্লেখ করছেন , দু'বার একই নয়।
ড্যারাল হফম্যান

ইংরেজির অনেক উপভাষায় ভয়ের সমতুল্য রয়েছে । আমার মধ্যে, এটা সব , এবং আনুষ্ঠানিক রেজিস্টারে ব্যবহৃত হয়। আর একটি সাধারণ হ'ল আপনি , যদিও আমি মনে করি না যে কোনওটি সত্যিকারের বক্তৃতায় ব্যবহৃত হয়। প্রথাগতভাবে, আপনার কাছে আছে তোমরা , ভাল অনেক পরিচিত কারণ নির্দিষ্ট বাইবেলের অনুবাদে এটা সাধারণ। আপনি এই এক যোগ করতে অথবা মধ্যে শিরসঁচালন উচিত তুমি পাশাপাশি সত্যিই জিনিষ আপ ঝাঁকান।
user0721090601

উত্তর:


9

রেটিনা, 62 61 56 53 52 বাইট

(.+)\+(?=\1)

.*(W|.I|I.).*
We
.*Y.*
You
.{4,}
They

আরও গল্ফিং এবং ব্যাখ্যা পরে আসে।

চারটি প্রতিস্থাপনের পদক্ষেপগুলি নিম্নলিখিতগুলি করে:

  • একাধিক বার নিজেই হয়
  • যদি আমরা বা আমি + কোনও হয় তবে ফলাফলটি আমাদেরই হয়
  • আপনাকে ধারণ করে এমন অন্য কোনও কিছুর জন্য ফলাফল আপনি
  • আমাদের যদি এখনও একাধিক অংশ বা একমাত্র থাকে তবে সেগুলি কেবলমাত্র তিনিই হ'ল এবং সেগুলি বাকি থাকতে পারে

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

3 বাইট সংরক্ষণ করেছেন মার্টিন বাটনারকে ধন্যবাদ।


শেষ পর্যায়ে ছাড়া আপনি ব্যবহার করতে পারেন .পরিবর্তে \+, যেহেতু যে শুধুমাত্র অক্ষর একটি বড় হাতের অক্ষর অথবা পরে সামনে এর অনুমোদিত I
মার্টিন এন্ডার

6

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

s=>(a=",I,You,He,We,They".split`,`,m="012345014444042242042345044444042545",r=0,s.split`+`.map(p=>r=m[+m[a.indexOf(p)]+r*6]),a[r])

ব্যাখ্যা

s=>(

  // a = array of each pronoun (including an empty string at index 0)
  a=",I,You,He,We,They".split`,`,

  // m = 6 x 6 map of pronoun indices for each combination of pronouns
  m="012345014444042242042345044444042545",

  r=0,                        // r = index of result pronoun
  s.split`+`.map(p=>          // for each pronoun in the input string
    r=m[+m[a.indexOf(p)]+r*6] // combine each pronoun with the previous one
  ),
  a[r]                        // return the resulting pronoun
)

পরীক্ষা


বাহ, আমি এই পদ্ধতির পছন্দ! আমার মনে হয় আমি খুব খারাপ বোনাস দিয়েছি, এটি এখানে পৌঁছানোর কারণ হিসাবে আপনাকে অ্যারে (", সে, এটি") এবং ম্যাট্রিক্সে 28 বাইট যোগ করতে হবে, 165 -15% = 140 এ পৌঁছাতে হবে ...
সিমোন চেলো

2

পার্ল 5, 67 বাইট

Really৯ বাইট সত্যিই, তবে একটি 15% বোনাস আছে।

$a{$_}=""for split/[+\s]/,<>;@_=%a;say@_<3?@_:I~~@_||We~~@_?We:You~~@_?You:They

2

পাইথন 159 153 বাইট

সম্পাদনা : ধন্যবাদ @ পিটু 1998 8

এটি জাভাস্ক্রিপ্ট ES6 উত্তরের প্রত্যক্ষ অনুবাদ:

a=",I,You,He,We,They".split(',')
m="012345014444042242042345044444042545"
r=0
for p in raw_input().split('+'):r=int(m[int(m[a.index(p)])+r*6])
print a[r]

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


sভেরিয়েবল হওয়ার দরকার নেই এবং আপনি forএবং r=লাইনগুলির মধ্যে অতিরিক্ত লাইন এবং স্থান সরাতে পারেন । এছাড়াও, আপনি এটি কোনও ফাংশন হিসাবে সংক্ষিপ্ত হতে পারে কিনা তা পরীক্ষা করতে চাইতে পারেন।
পুরক্কাডুডারী

1

রুবি, 150 136 131 119 111 বাইট

ARGV.each{|a|puts %w[We You I He They][a.bytes.inject(0){|m,c|m|({87=>15,73=>7,89=>11,84=>9,72=>8}[c]||0)}%5]}

বোনাস বৈশিষ্ট্য: একই কমান্ড লাইনে একাধিক অভিব্যক্তি পরিচালনা করে।

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