রিয়েল লাইফে কনজুগেশন


14

ইন @ আদমের Dyalog APL সম্প্রসারিত , (অধীনে) অপারেটর উপায়ে সংশ্লেষ: এক ফাংশন, তারপর একটি দ্বিতীয় ফাংশন, তারপর প্রথম বিপরীত প্রযোজ্য। বাস্তব জীবনের ক্রিয়াগুলি বিবাহের ক্ষেত্রে বিবেচনা করা মজাদার:

একটি সমস্যা জি দ্বারা অন্য ডোমেনে রূপান্তরিত হয় যেখানে এফ দ্বারা আরও সহজেই সমাধান করা হয় এবং তারপরে আবার মূল ডোমেনে রূপান্তরিত হয়। বাস্তব জীবনের একটি উদাহরণ হ'ল "অ্যানাস্থেটিক্সের আওতায়":

apply anesthetics
    perform surgery
wake up from anesthetics

চ্যালেঞ্জ

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

  • যদি fএবং এর বিপরীত উভয়ই ঘটে থাকে তবে কিছুই করবেন না
  • যদি f"এর অধীনে" অন্য কোন কর্ম, মুদ্রণ করা হয়f
  • যদি fকোনও রেখার "নীচে" থাকে তবে ছদ্মবেশটি কোথায় রয়েছে তা gমুদ্রণ করুন ।f + " under " + g+

ইনপুট

শূন্যস্থান এবং ছোট হাতের অক্ষরের সমন্বয়ে একটি মজাদার মাল্টলাইন স্ট্রিং বা স্ট্রিংগুলির তালিকা ইত্যাদি (আপনি পরিবর্তে বড় হাতের অক্ষর ব্যবহার করতে পারেন)। ঠিক এক লাইন "আন" দিয়ে শুরু হবে; এবং এটি অন্য কোনও লাইনের বিপরীত হবে। কোনও লাইন ফাঁকা থাকবে না।

আউটপুট

আপনি যে ফর্ম্যাটটিতে ইনপুট নিয়েছিলেন, বা স্ট্যান্ডার্ড আই / ও দ্বারা অনুমোদিত হিসাবে আউটপুট।

পরীক্ষার কেস:

Input:
apply anesthetics
perform surgery
unapply anesthetics

Output:
perform surgery under apply anesthetics


Input:
unite asia
establish the silk road
ite asia

Output:
establish the silk road under unite asia


Input:
desire a book
walk to store
take the book
pay for the book
unwalk to store
read the book

Output:
desire a book
take the book under walk to store
pay for the book under walk to store
read the book


Input:
drink excessively
undrink excessively

Output:
[empty string]

1
আমি যখন অতিরিক্ত
মাত্রায়

1
এটি কি "বইটি নেবে এবং ওয়াক টু স্টোরের নীচে বইটির জন্য অর্থ প্রদান করা" হবে না? অন্যথায় এটি পরিষ্কার নয় যে রূপান্তরটি আসলটির সমান ...
জোনা

1
@ জোনাঃ ধারণাটি আদর্শ বিশ্বের ডাব্লু = "স্টোর টু স্টোর" এবং ডাব্লু ^ -1 = "স্টোর অব আনলক" বিপরীত, সুতরাং গাণিতিকভাবে ডাব্লুএফডব্লু ^ -1wg ^ -1 = wfgw ^ -1।
lirtosiast

আহা যথেষ্ট, @ লিরিটোসিয়াস্ত।
জোনাহ

উত্তর:


3

ব্র্যাচল্যাগ , 90 বাইট

;Ṡ{hhH↰₂gB&hb~c[A,B,C]&tT;C↔↰U∧" under ",H,T;A↔↰,U|tT&hh,TgJ&hb;T↰Q∧J,Q|h}
~↰₃|↰₃
∧"un";?c

আমি এটি তৈরি করেছি যখন এই ধারণাটি ছিল যে এটি পুনরাবৃত্ত হতে পারে এবং একাধিক আন্ডার স্ট্যাক করা যেতে পারে। সম্ভবত অনুকূলিত হয় নি। এটি যেমন ব্রেসিলগ, নদীর গভীরতানির্ণয় বেশ কিছু বাইট লাগে

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


2

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

m{A`^(un)?(.+)¶(?(1)|un)\2$
^((un)?(.+)¶)(.+)¶((.+¶)*(?(2)|un)\3)$
$4 under $1$1$5

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। ব্যাখ্যা:

m{

পুরো প্রোগ্রাম একাধিক লাইন মোডে চালনা করুন (যাতে ^এবং $শুরুতে এবং পৃথক লাইনের শেষ মেলে) এবং পুনরাবৃত্তি না হওয়া পর্যন্ত সেখানে কোনো পরিবর্তন হয়।

A`^(un)?(.+)¶(?(1)|un)\2$

এমন রেখাগুলি সন্ধান করুন যা দিয়ে শুরু হতে পারে unএবং তার পরে একটি রেখা শুরু হয় unকেবল তখনই শুরু হয় যখন পূর্ববর্তী রেখাটি বাকী রেখাটি একই না থাকলে এবং উভয় লাইন মুছুন। (এটি রেটিনা ০.০.২.২ এর আচরণের পরিবর্তন, যা ম্যাচ করার চেষ্টা করার আগে লাইনগুলি বিভক্ত করে এবং তাই ম্যাচটি একবারে একাধিক লাইনের বিস্তৃত প্রয়োজন হলে লাইনগুলি কখনই মুছতে পারে না))

^((un)?(.+)¶)(.+)¶((.+¶)*(?(2)|un)\3)$

unকমপক্ষে একটি লাইন দিয়ে শুরু হতে পারে এমন রেখাগুলি সন্ধান করুন , তারপরে একটি রেখা শুরু হবে যা unকেবল তখনই শুরু হয় যখন মূল রেখাটি না থাকে যখন বাকী রেখাটি একই থাকে।

$4 under $1$1$5

মূল লাইনটি এক লাইনের নীচে সরান এবং এটিকে underকেবল ট্র্যাশ করা লাইনে যুক্ত করুন। (অতিরিক্ত লাইনগুলি পুনরাবৃত্তি করে পরিচালনা করা হবে))


2

পাইথন 2 , 106 বাইট

s=input()
x=''
l=[]
for i in s:
 if'un'==i[:2]or'un'+i in s:x=(' under '+i)*(not x)
 else:l+=[i+x]
print l

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

যদি ইনপুটটি STDIN থেকে একটি তালিকা হতে পারে এবং আউটপুটটি নতুন লাইন দ্বারা পৃথক করা যায়, তবে আমাদের তখন এই 94-বাইট সমাধান রয়েছে:

s=input()
x=''
for i in s:
 if'un'==i[:2]or'un'+i in s:x=(' under '+i)*(not x)
 else:print i+x

1

জাভাস্ক্রিপ্ট (ব্যাবেল নোড) , 91 বাইট

লোয়ারকেসে স্ট্রিংগুলির অ্যারের হিসাবে ইনপুট নেয় input স্ট্রিংয়ের আরেকটি অ্যারে প্রদান করে।

a=>a.flatMap(s=>s==r|'un'+s==r?(u=u?'':' under '+s,[]):s+u,u='',r=a.find(s=>/^un/.test(s)))

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

মন্তব্য

a =>                     // a[] = input array
  a.flatMap(s =>         // for each string s in a[]:
    s == r |             //   if s matches the reference string
    'un' + s == r ? (    //   or its opposite:
      u =                //     update u:
        u ?              //       if u is not an empty string:
          ''             //         turn it to an empty string
        :                //       else:
          ' under ' + s, //         set it to s with the ' under ' prefix
      []                 //     yield an empty array so that this entry is removed
    ) :                  //   else:
      s + u,             //     yield s followed by u
    u = '',              //   initialize u to an empty string
    r = a.find(s =>      //   initialize r ...
      /^un/.test(s)      //     ... to the string beginning with 'un'
    )                    //
  )                      // end of flatMap()


@ l4m2 সত্যিই ব্যর্থ। এখন স্থির।
আর্নল্ড

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