প্রসঙ্গে শিরোনাম কীওয়ার্ড


10

এই চ্যালেঞ্জটি ডি পার্নাসে বর্ণিত সমস্যার উপর ভিত্তি করে , মডিউলগুলিতে সংক্রামিতকরণ ব্যবস্থার জন্য ব্যবহৃত মানদণ্ড অনুসারে এবং জে। মরিস, ফাংশনাল ল্যাঙ্গুয়েজে রিয়েল প্রোগ্রামিংয়ে বর্ণনা করা হয়েছে

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

Green Sleeves
Time Was Lost

অথবা

("Green Sleeves";"Time Was Lost")

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

<Green> Sleeves
Time Was <Lost>
Green <Sleeves>
<Time> Was Lost
Time <Was> Lost

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

A Dugong
A Proboscis

একটি বৈধ আউটপুট হবে:

<A> Proboscis
<A> Dugong
A <Dugong>
A <Proboscis>

বা:

<A> Dugong
<A> Proboscis
A <Dugong>
A <Proboscis>

এটি - বিজয়ী হ'ল বাইটগুলির মধ্যে সংক্ষিপ্ততম সমাধান। স্ট্যান্ডার্ড লুফোলগুলি অনুমোদিত নয়।


একই কীওয়ার্ডটি যদি শিরোনামে একাধিকবার ঘটে থাকে তবে কী হবে? ঘটনাগুলি চেহারা অনুসারে হওয়া উচিত, বা নির্বিচারে আদেশের অনুমতি দেওয়া উচিত?
পিটার টেলর

1
@ পিটারটেলর: অনুমান থেকে, "শিরোনামগুলি অনন্য হয়ে উঠবে এবং প্রতিটি শিরোনামের মধ্যে কীওয়ার্ডগুলি অনন্য হয়ে
উঠবে

উত্তর:


4

পাইথ, 25 24 22 বাইট

VSsm,Rdcd\ QAN:HGjG"<>

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

লাইনের অ্যারে হিসাবে ইনপুট নেয় ["Green Sleeves","Time Was Lost"]

ব্যাখ্যা

VSsm,Rdcd\ QAN:HGjG"<>   implicit: Q = evaluated input

   m       Q                   map input lines:
       cd\                         split input line to words
    ,Rd                          replace each word by pair [word, entire line]
  s                          concatenate results for all input lines
 S                         sort the array of pairs lexicographically
V                        loop over the array
            AN             assign the word to G and the corresponding line to H
                 jG"<>       put the word between <>
              :HG          replace the word by the above in the line and print

বগি দেখায় - শিরোনাম পরিচালনা করা চেক করুন Time Was Time
পিটার টেলর

3
ওপি থেকে @ পিটারটেলর উদ্ধৃতি keywords will be unique within each title,।
পূর্বকুডারী

2

জাপট , 55 বাইট

সম্ভবত এটি আরও ছোট করা যেতে পারে তবে আমি নিশ্চিত না কীভাবে ...

P+UqR £XqS m_+S+X) q', n £Xs1+XbS)rXs0,XbS),@"<{X}>")qR

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

P+UqR m@XqS m_+S+X) q', n m@Xs1+XbS)rXs0,XbS),@"<{X}>")qR
          // Implicit: U = input string, S = a space, P = empty string
UqR m@    // Split input at newlines, then map each item X to:
XqS m_    //  X split at spaces, with each item Z mapped to:
+S+X)     //   Z + a space + X.
P+   q',  // Parse the result as a string, and split at commas. Due to JS's default
          // array-to-string conversion (joining with commas), this flattens the array.
n         // Sort the result lexicographically.
m@Xs1+XbS // Map each item X to everything after the first space,
rXs0,XbS  // replacing the original keyword with
@"<{X}>"  // "<" + keyword + ">".
qR        // Join the result with newlines.
          // Implicit: output last expression


1

হাস্কেল, 113 বাইট

import Data.List
g l=[(m,h++('<':m++['>']):t)|(h,m:t)<-zip(inits l)$tails l]
f=map(unwords.snd).sort.(>>=g.words)

ব্যবহারের উদাহরণ: f ["Green Sleeves","Time Was Lost"]-> ["<Green> Sleeves","Time Was <Lost>","Green <Sleeves>","<Time> Was Lost","Time <Was> Lost"]

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