পুনরাবৃত্তি সংক্ষিপ্ত শব্দ


31

উদ্দেশ্য

উইকিপিডিয়া থেকে :

একটি পুনরাবৃত্তি সংক্ষিপ্ত বিবরণ একটি সংক্ষিপ্ত বিবরণ যা এটি দাঁড়িয়ে তার মত প্রকাশের মধ্যে নিজেকে বোঝায়।

আপনার লক্ষ্যটি কোনও স্ট্রিংটি পুনরাবৃত্ত সংক্ষিপ্ত রূপ কিনা তা পরীক্ষা করা।

  • সংক্ষিপ্ত বিবরণ প্রথম শব্দ
  • শব্দ একক স্পেস দিয়ে পৃথক পৃথক ক্ষেত্রে সংবেদনশীল নয়।
  • প্রদত্ত স্ট্রিংটিতে কোনও বিরামচিহ্ন বা অ্যাডাস্ট্রোফ নেই।
  • প্রতিটি শব্দের প্রথম অক্ষরটি সংক্ষিপ্ত আকারে থাকতে পারে।

আপনি অবশ্যই ফাংশন শব্দ দিতে হবে । সরলতার জন্য, প্রতিটি শব্দ একটি ফাংশন শব্দ হিসাবে বিবেচনা করা যেতে পারে।

উদাহরণ

f("RPM Package Manager")         =>     { true, [] }
f("Wine is not an emulator")     =>     { true, ["an"] }
f("GNU is not Unix")             =>     { true, ["is"] }
f("Golf is not an acronym")      =>     { false }  
f("X is a valid acronym")        =>     { true, ["is","a","valid","acronym"] }  

আপনি একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন দিতে পারেন।
ইনপুট স্ট্রিংটি STDIN থেকে বা কোনও ফাংশন আর্গুমেন্ট হিসাবে নেওয়া যেতে পারে।
আউটপুট ফলাফলটি সত্য / মিথ্যা, 0/1, হ্যাঁ / না হতে পারে ...
ফাংশন শব্দের তালিকা (তালিকার কোনও বিন্যাস বৈধ) অবশ্যই দিতে হবে এবং কেবল যদি এটি পুনরাবৃত্ত সংক্ষিপ্ত আকার হয় (তালিকাটি খালি থাকলেও) । আপনাকে ফাংশন শব্দের মূলধন সংরক্ষণ করতে হবে না।

জয়ের মানদণ্ড

এটি একটি , সংক্ষিপ্ততম কোড জয়।


4
আমাদের কি ফাংশন শব্দের মূলধন সংরক্ষণ করতে হবে?
অ্যালগরিদমশর্ক

1
মিথ্যা মান সহ স্ট্রিংগুলির একটি তালিকা থাকা কি গ্রহণযোগ্য, না?
আন্ডারগ্রাউন্ডোমোনাইল

1
যেহেতু শব্দ তালিকা নিজেই এটির উপস্থিতির সাথে বুলিয়ান মানকে এনকোড করে, আমরা কী বুলিয়ান বাদ দিতে পারি?
জন ডিভোরাক

5
হার্ট মানে হির্ড অফ ইউনিক্স-রিপ্লেসিং ডেমনস। হির্ড হ'ল হারড অফ ইন্টারফেসগুলি গভীরতার প্রতিনিধিত্ব করে। কেন এখানে উদাহরণগুলি বুঝতে পারে না এবং দাবি করে যেগুলি পুনরাবৃত্তিক সংক্ষিপ্ত শব্দ নয়?
কনরাড বোরোস্কি

3
@ এক্সফিক্স, উইকিপিডিয়াতে বলা হয়েছে যে এগুলি পরস্পর পুনরাবৃত্তি সংক্ষিপ্ত আকারে রয়েছে ।
মাইকেল এম।

উত্তর:


7

গল্ফস্ক্রিপ্ট, 51 50 টি অক্ষর

{32|}%" "/(1>\{.1<2$1<={;1>}{\}if}/{]!}{]`1" "@}if

এটি সম্ভবত আরও গল্ফ করা যেতে পারে। STDIN এ ইনপুট নেয়। বুলিয়ান 0/1 হয়।

অনলাইন পরীক্ষা


ব্যাখ্যা:

{32|}%      # change everything to lower-case
" "/        # splits the string by spaces
(1>         # takes the first word out and removes the first letter
\           # moves the list of remaining words in front of the acronym word
{           # for every word:
  .1<2$1<=    # compares the first letter of the word with
              # the next unmatched letter of the acronym
  {;1>}       # if they are the same, discard the word and the now-matched letter
  {\}         # otherwise store the word in the stack
  if          # NB. if all letters have been matched, the comparison comes out as false
}/
{]!}        # if there are still unmatched letters, return 0 (`!` non-empty list)
{]`1" "@}   # otherwise, return 1, and display the list of function words
if

22

রেজেক্স, .NET গন্ধ, 62 বাইট

(?i)(?<=^\w(?<c>\w)*)( \k<c>(?<-c>)\w+| (?<w>\w+))*$(?(c)(?!))

আপনি এটি এখানে পরীক্ষা করতে পারেন । যদি ইনপুটটি পুনরাবৃত্ত সংক্ষিপ্ত আকার হয়, তবে এটি একটি মিলবে এবং ক্যাপচারিং গোষ্ঠীতে wসমস্ত ফাংশন শব্দ থাকবে। যদি তা না হয়, তবে কোনও মিল থাকবে না।

এটি ফাংশন শব্দের মূলধন সংরক্ষণ করে (তবে কেস-সংবেদনশীলতার সাথে মেলে)।

দুর্ভাগ্যবশত, পরীক্ষক একটি নামাঙ্কিত ক্যাপচার গ্রুপের সমগ্র স্ট্যাকের প্রদর্শন করা হয় না, কিন্তু আপনি যদি এটা কোথাও .NET ব্যবহৃত wগ্রুপ হবে অর্ডারের মধ্যে সব ফাংশন শব্দ ধারণ করে।

এটি প্রমাণ করার জন্য এখানে একটি সি # স্নিপেট রয়েছে:

var pattern = @"(?i)(?<=^\w(?<c>\w)*)( \k<c>(?<-c>)\w+| (?<w>\w+))*$(?(c)(?!))";
var input = new string[] {
    "RPM Package Manager",
    "Wine is not an emulator",
    "GNU is not Unix",
    "Golf is not an acronym",
    "X is a valid acronym"
};

var r = new Regex(pattern);
foreach (var str in input)
{
    var m = r.Match(str);
    Console.WriteLine(m.Success);
    for (int i = 0; i < m.Groups["w"].Captures.Count; ++i)
        Console.WriteLine(m.Groups["w"].Captures[i].Value);
}

এখানে একটি দ্রুত ব্যাখ্যা। আমি এই স্নিপেটের সাথে নামী গোষ্ঠীতে সংক্ষিপ্ত অক্ষরগুলির একটি স্ট্যাক তৈরি করতে নেট। এর ভারসাম্য গোষ্ঠীগুলি ব্যবহার করছিc

^\w(?<c>\w)*

কৌশলটি হ'ল আমার স্ট্যাকের উপরে দ্বিতীয় অক্ষর এবং নীচে সর্বশেষ একটি অক্ষর দরকার। তাই আমি এই সমস্ত একটি সংক্ষিপ্ত রূপের পরে অবস্থানের সাথে মেলে একটি লুকের পিছনে রেখেছি । এটি সাহায্য করে, কারণ .NET ডান থেকে বাম চেহারাটির সাথে মেলে, তাই এটি সর্বশেষের অক্ষরের মুখোমুখি।

আমি একবার এই স্ট্যাকটি পেয়ে গেলে আমি বাকী স্ট্রিং শব্দের সাথে মিলে যায়। হয় শব্দের সংক্ষিপ্ত বিবরণ স্ট্রোকের শীর্ষে বর্ণ দিয়ে শুরু হয়। সেক্ষেত্রে আমি সেই চিঠিটি স্ট্যাক থেকে পপ করেছি:

 \k<c>(?<-c>)\w+

অন্যথায়, আমি যাইহোক শব্দের সাথে মেলে এবং wস্ট্যাকের দিকে ধাক্কা দিয়েছি যা এতে সমস্ত ফাংশন শব্দ থাকবে:

 (?<w>\w+)

শেষে আমি নিশ্চিত হয়েছি যে আমি স্ট্রিংয়ের শেষে এসে পৌঁছেছি $এবং এটিও নিশ্চিত করেছি যে স্ট্রাকটি খালি রয়েছে তা পরীক্ষা করে আমি সংক্ষিপ্ত বিবরণ থেকে সমস্ত অক্ষর ব্যবহার করেছি:

(?(c)(?!))

এটি আদর্শের উপর পরীক্ষা করুন।


1
দুর্দান্ত নিয়মিত অভিব্যক্তি, তবে প্রশ্নটি পরিষ্কারভাবে জানিয়েছে "আপনি একটি সম্পূর্ণ প্রোগ্রাম বা কোনও ফাংশন দিতে পারেন "।
টুথব্রাশ

4
@ টুথ ব্রাশ যদি ওপি তার ভিত্তিতে আমার উত্তরটিকে অযোগ্য ঘোষণা করার সিদ্ধান্ত নেয়, তবে তা হয়ে উঠুন। তবে আমি মনে করি যে আমি এটি একটি ভাষায় বলতে পারি যে এটি .NET এর নিয়মিত প্রকাশের স্বাদ (টিউরিং সম্পূর্ণ ভাষা নয়, এবং এটি চালানোর জন্য কিছুটা জটিল) তবে তবুও একটি ভাষা) program যাই হোক না কেন, আমি এটিকে পছন্দ করি যে আমি এটি একটি খাঁটি-রেইগেক্স পদ্ধতির সাথে সমাধান করেছি এবং আমি উত্তরটি "কমনীয়তা" (যদি আপনি চান) এটি "রেজিেক্স ব্যবহার করে কেবল একটি সি-অ্যানসওয়ার তৈরি করে ধ্বংস করার চেয়ে অযোগ্য ঘোষণা করে থাকি" "।
মার্টিন ইন্ডার

এটা আমার সাথে ঠিক আছে. আপনি যদি এটি মিস করেন তবে আমি কেবল এটি উল্লেখ করতে চেয়েছিলাম।
টুথব্রাশ

1
আমি এটা পছন্দ করি. Regexes টিউরিং-সম্পূর্ণ প্রোগ্রামিং ভাষা নাও হতে পারে তবে আমি মনে করি এটি গণনা করা উচিত।
পল ড্রাগার

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

11

পাইথন (158, রিজেক্স ছাড়াই)

এটি এমন নয় যে আমি রেজিজেস পছন্দ করি না। এগুলি আমি তাদের চিনি না।

def f(x):
 s=x.lower().split();w=list(s[0][1:]);s=s[1:];o=[]
 if not w:return 1,s
 [w.pop(0)if i[0]==w[0]else o.append(i)for i in s]
 return(0,)if w else(1,o)

ওহ, আমারও একটি অবারিত সংস্করণ ছিল:

def acronym(string):
    scentence = string.lower().split()
    word = scentence[0][1:]
    scentence = scentence[1:]
    over = []
    if not word: return 1, scentence
    for item in scentence:
        if item[0] == word[0]:
            word = word[1:]
        else:
            over.append(item)
    if word:
        return 0,
    return 1,over

5

পাইথন ২.7 - 131 126 বাইট

def f(s):
 s=s.lower().split();a,f=list(s[0]),[]
 for w in s:f+=0*a.pop(0)if a and w[0]==a[0]else[w]
 return(0,)if a else(1,f)

সংক্ষিপ্ত আকারের প্রথম শব্দে অক্ষরের একটি তালিকা তৈরি করে। তারপরে, পুরো স্ট্রিংয়ের প্রতিটি শব্দের জন্য, আমরা তৈরি তালিকার প্রথম উপাদানটি যদি এটি শব্দের প্রথম অক্ষরের মতো হয় তবে তা থেকে মুক্তি পান। অন্যথায়, শব্দটি ফাংশন শব্দের তালিকায় যুক্ত করুন। আউটপুট দিতে, প্রত্যাবর্তন করতে not a(পাইথনে, খালি তালিকা ব্যতীত অন্য কোনও তালিকা True-y, এবং তালিকাটি যদি এটি পুনরাবৃত্ত সংক্ষিপ্ত বিবরণ হিসাবে খালি থাকে) এবং যদি তালিকাটি থাকে not a

আমাকে ত্রুটি ঠিক করতে / কিছু বাইট সংরক্ষণ করতে সাহায্য করার জন্য @ স্পেসকে ধন্যবাদ Thanks


পাইথন ২.7.৩-এ, আমি লাইনের SyntaxError: invalid syntaxশেষে পাই return
পেস্টবিন.কম 0mr8spkT

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

আপনি for w in s:f+=0*a.pop(0)if a and w[0]==a[0]else[w]যা সংক্ষিপ্ত এবং ট্যাবগুলিতে নির্ভর করে না তা ব্যবহার করতে পারেন । returnবিবৃতি হিসাবে , আমি খুঁজে পেয়েছি 0if a else(1,f)যা আপনার মূল চেয়ে খাটো।
পেস্টবিন ডট কম 0 এমআর

ওহ এবং যদি আপনি একই লাইনে প্রথম দুটি স্টেটমেন্ট রাখার জন্য সেমিকোলন ব্যবহার করেন তবে আপনি ইনডেন্টেশনের একটি বাইট সংরক্ষণ করুন।
পেস্টবিন ডট কম 0 এমআর

1
আমি ত্রুটিটি সমাধানের একটি উপায় বের করেছিলাম, তবে আমি যখন এটি এখানে পোস্ট করতে এসেছি তখন আপনি মন্তব্যগুলিতে আরও গল্ফ করেছিলেন: পি
আন্ডারগ্রাউন্ডোমোরিয়েল

3

পাইথন - 154 টি অক্ষর

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

def f(s):
    w=s.lower().split();r=list(w[0]);return(True,[x for x in w if x[0]not in r])if len(r)==1 or[x for x in[y[0]for y in w]if x in r]==r else False

আমি 156 টি অক্ষর গণনা করেছি (নিউলাইন এবং ট্যাব অক্ষর উভয়ই গণনা করে) তবে আপনি দুটি অক্ষর সরিয়ে বৈধভাবে এটি 154-এ নামাতে পারেন যেহেতু আসলেই প্রয়োজনীয় নয়। বিপিডব্লিউ পিপিসিজিতে আপনাকে স্বাগতম। :)
আন্ডারগ্রাউন্ডোমোরাইল

3

ECMAScript 6 (105 বাইট):

f=s=>(r=(a=s.toUpperCase(i=1).split(' ')).map((w,c)=>c?a[0][i]==w[0]?(i++,''):w:''),a[0].length==i?1+r:0)

ফায়ারফক্সের ব্রাউজার কনসোলে ফাংশনটি প্রবেশ করান এবং তারপরে ঠিক এভাবে ফাংশনটি কল করুন:

f('ABC Black Cats')     // 1,,
f('ABC is Black Cats')  // 1,IS,,
f('ABC Clapping Cats')  // 0

বেশ নিয়ম মেনে চলছে না: The function words list ... must be given if and only if this is a recursive acronym। এটি নির্বিশেষে তাদের সতর্ক করবে।
এমটি0

@ এমটি 0 ঠিক আছে। আমি সেই প্রয়োজনীয়তাটি লক্ষ্য করিনি। আমি আবার লিখতে পারি কিনা তা আমি দেখতে পাব।
টুথব্রাশ

@ এমটি0 আমি এখনই কোড আপডেট করেছি।
টুথব্রাশ

2

হাস্কেল - 287 বাইট

স্বল্পতম এন্ট্রি নয় (আরে এটি হাস্কেল, আপনি কী প্রত্যাশা করেছিলেন?) তবে লেখার জন্য এখনও অনেক মজাদার।

import Data.Char
import Data.List
f""w=map((,)False)w
f _[]=[]
f(a:as)(cs@(c:_):w) 
 |toLower a==toLower c=(True,cs):f as w
 |True=(False,cs):f(a:as)w
g s=if(length$filter(fst)d)==length v
  then Just$map(snd)$snd$partition(fst)d 
  else Nothing
 where 
  w=words s
  v=head w
  d=f v w

পরীক্ষিত

map (g) ["RPM Package Manager","Wine is not an emulator","GNU is not Unix","Golf is not an acronym","X is a valid acronym"]

প্রত্যাশিত আউটপুট

[Just [],Just ["an"],Just ["is"],Nothing,Just ["is","a","valid","acronym"]]

Ungolfed

import Data.Char
import Data.List

f :: String -> [String] -> [(Bool, String)]
f "" w = map ((,) False) w
f _ [] = []
f (a:as) ((c:cs):w) | toLower a == toLower c = (True, c:cs) : f as w
                    | otherwise = (False, c:cs) : f (a:as) w

g :: String -> Maybe [String]
g s = if (length $ filter (fst) d) == (length v)
          then Just $ map (snd) $ snd $ partition (fst) d 
          else Nothing
  where w = words s
        v = head w
        d = f v w

2

জাভাস্ক্রিপ্ট (ECMAScript 6) - 97 টি অক্ষর

f=x=>(r=(a=x.toLowerCase(i=0).split(' ')).filter(y=>y[0]!=a[0][i]||i-i++),i==a[0].length?[1,r]:0)

পরীক্ষা:

f("RPM Package Manager")
[1, []]

f("GNU is not Unix")
[1, ["is"]]

f("X is an acronym")
[1, ["is", "an", "acronym"]]

f("Golf is not an acronym")
0

f("Wine is not an emulator")
[1, ["an"]]

1

রিবোল - 133

f: func[s][w: next take s: split s" "y: collect[foreach n s[either n/1 = w/1[take w][keep n]]]reduce either/only w: empty? w[w y][w]]

Ungolfed:

f: func [s] [
    w: next take s: split s " "
    y: collect [
        foreach n s [
            either n/1 = w/1 [take w][keep n]
        ]
    ]
    reduce either/only w: empty? w [w y][w]
]

এর সাথে পরীক্ষিত:

foreach t [
    "RPM Package Manager"  "Wine is not an emulator"  
    "GNU is not Unix"      "Golf is not an acronym"  
    "X is a valid acronym"
][probe f t]

আউটপুট:

[true []]
[true ["an"]]
[true ["is"]]
[false]
[true ["is" "a" "valid" "acronym"]]

1

জুলিয়া - 116 বাইট

f(w)=(a=split(lowercase(w));L=1;A=a[];while a!=[];a[][1]==A[1]?A=A[2:]:(L=[L,a[]]);a=a[2:];A>""||return [L,a];end;0)

কম গল্ফড:

f(w)=(
 a=split(lowercase(w))
 L=1
 A=a[]
 while a!=[]
  if a[][1]==A[1]
   A=A[2:]
  else
   L=[L,a[]]
  end
  a=a[2:]
  if !(A>"")
   return [L,a]
  end
 end
0)

0শেষ তে এটি আউটপুট 0. অন্যথা করে তোলে, এটা আউটপুট একটি অ্যারের ধারণকারী 1ফাংশন শব্দ দ্বারা অনুসরণ করে। উদাহরণ স্বরূপ:

julia> f("RPM Package Manager")
1-element Array{Any,1}:
 1

julia> f("Golf is not an acronym")
0

julia> f("GNU is not Unix")
2-element Array{Any,1}:
 1    
  "is"

julia> f("X is a valid acronym")
5-element Array{Any,1}:
 1         
  "is"     
  "a"      
  "valid"  
  "acronym"

1

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

ḷṇ₁XhY∧X;0zpᵐz{ċ₂ˢ}ᵐZhhᵐcY∧Zt

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

ইনপুটটি যদি পুনরাবৃত্ত সংক্ষিপ্ত আকার হয় তবে আউটপুট ভেরিয়েবলের মাধ্যমে ফাংশন শব্দগুলি আউটপুট করে এবং তা না হলে ব্যর্থ হয়।

   X                             X is
ḷ                                the input lowercased
 ṇ₁                              and split on spaces,
    hY                           the first element of which is Y
      ∧                          (which is not X).
       X  z                      X zipped
        ;0                       with zero,
           pᵐ                    with all pairs permuted (creating a choicepoint),
             z                   zipped back,
              {   }ᵐ             and with both resulting lists
               ċ₂ˢ               losing all non-string elements,
                    Z            is Z.
                      hᵐ         The first elements of the elements of
                    Zh           the first element of Z
                        cY       concatenated are Y
                          ∧      (which is not Z).
                           Zt    The last element of Z is the output.

আউটপুট ফাংশন শব্দ (একটি বিশুদ্ধ হিসাবে এই চিকিত্সা করেও ), এটা ঠিক 12 বাইট আসে আউট, কারণ ∧Zt-3 জন্য বাদ করা যেতে পারে, Yসঙ্গে প্রতিস্থাপিত হতে পারে .-1 জন্য, এবং সবচেয়ে গুরুত্বপূর্ণভাবে ;0zpᵐz{ċ₂ˢ}ᵐZhসঙ্গে প্রতিস্থাপিত হতে পারে জন্য একটি তীব্র -13:ḷṇ₁Xh.∧X⊇hᵐc


0

কোবরা - 187

def f(s as String)
    l=List<of String>(s.split)
    a=l[0]
    l.reverse
    o=0
    for c in a,for w in l.reversed
        if c==w[0]
            l.pop
            o+=1
            break
    x=o==a.length
    print x,if(x,l,'')

0

রুবি - 173

ভালো হতে পারত...

 f=->s{a=[];o={};s=s.split;r=true;s[0].each_char{|c|s.each{|w| w[0]=~/#{c}/i?(o[c]=1;a<<w if o[c]):(o[c]=0 if !o[c])}};r,a=false,s if o.values&[0]==[0];!r ?[r]:[r,(s-(a&a))]}

ফানকে ফোন করা:

p f.call('RPM Package Manager')
p f.call('Wine is not an emulator')
p f.call("GNU is not Unix")
p f.call("Golf is not an acronym")
p f.call("X is a valid acronym")

আউটপুট:

[true, []]
[true, ["an"]]
[true, ["is"]]
[false]
[true, ["is", "a", "valid", "acronym"]]

0

জাভা - 195

দুর্ভাগ্যক্রমে, জাভা টিপল সাপোর্টে নির্মিত হয়নি।

সুতরাং, এটি এমন একটি শ্রেণি যা 'বি' তে বুলিয়ান এবং 'x' এ ফাংশন শব্দের তালিকা সঞ্চয় করে।

এখানে, ফাংশনটি ক্লাসের নির্মাতা।

static class R{boolean b;String[]x;R(String s){String v=" ",i="(?i)",f=s.split(v)[0],r=i+f.replaceAll("(?<=.)",".* ");if(b=(s+=v).matches(r))x=(s.replaceAll(i+"\\b["+f+"]\\S* ","")+v).split(v);}}

পরীক্ষা

public class RecursiveAcronyms {
public static void main(String args[]) {
    String[] tests = {
            "RPM Package Manager",
            "Wine is not an emulator",
            "GNU is not Unix",
            "Golf is not an acronym",
            "X is a valid acronym"
        };
    for (String test:tests) {
        R r = new R(test);
        System.out.print(r.b);
        if (r.b) for (String s:r.x) System.out.print(" "+s);
        System.out.print("\n");
    }
}
static class R{boolean b;String[]x;R(String s){String v=" ",i="(?i)",f=s.split(v)[0],r=i+f.replaceAll("(?<=.)",".* ");if(b=(s+=v).matches(r))x=(s.replaceAll(i+"\\b["+f+"]\\S* ","")+v).split(v);}}}

সি # টিউপলস রয়েছে তবে আমার সমাধানে কাজ করার সময় আমি এটি নিয়ে এসেছি string[]: nullকেবল ফিরে আসুন: খালি মানে খালি, খালি মানে সত্য এবং nউপাদানগুলির অর্থ nফাংশন শব্দের সাথে সত্য ।
নুম লক

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

আমি মন্তব্যগুলির বিষয়ে মাথা ঘামাই না কারণ মূল পোস্টে ফলস্বরূপ সম্পাদনাটি স্পট করে দেখতে পাচ্ছি না। এমনকি যদি আমি তা করি তবে এটি স্পষ্টভাবে " বুলিয়ান নির্দিষ্ট করতে" বলে । এমনকি উত্তরেও এটি বলে যে " আউটপুট ফলাফলটি সত্য / মিথ্যা, 0/1, হ্যাঁ / না ... +" হতে পারে যা আমি উপবৃত্তে "* নাল / নাল নয়" দ্বারা প্রসারিত করতে পারি ...
সংখ্যা

0

আওক - 145

awk -v RS=' ' '{c=tolower($0)};NR==1{w=c};{t=substr(c,1,1)!=substr(w,NR-s,1);if(t){f=f" "c;s++};a=a||t};END{print a&&(s>NR-length(w))?"N":"Y|"f}'

টেস্ট:

$ cat gcp.sh
#!/bin/sh
f() {
echo "$1:"
echo "$1"|awk -v RS=' ' '{c=tolower($0)};NR==1{w=c};{t=substr(c,1,1)!=substr(w,NR-s,1);if(t){f=f" "c;s++};a=a||t};END{print a&&(s>NR-length(w))?"N":"Y|"f}'
}
f "RPM Package Manager"
f "Wine is not an emulator"
f "Wine is not an appropriate emulator"
f "GNU is not Unix"
f "Golf is not an acronym"
f "Go is not an acronym"
f "Go is a valid acronym OK"
f "X is a valid acronym"
f "YAML Ain't Markup Language"

$ ./gcp.sh
RPM Package Manager:
Y|
Wine is not an emulator:
Y| an
Wine is not an appropriate emulator:
Y| an appropriate
GNU is not Unix:
Y| is
Golf is not an acronym:
N
Go is not an acronym:
N
Go is a valid acronym OK:
Y| is a valid acronym
X is a valid acronym:
Y| is a valid acronym

YAML Ain't Markup Language:
Y|

0

Coffeescript - 144

z=(a)->g=" ";b=a.split g;c=b[0];d=[];(d.push(e);g++)for e,f in b when e[0].toLowerCase()!=c[f-g].toLowerCase();if(g+c.length==f)then{1,d}else{0}

উদাহরণস্বরূপ এটির সাথে কল করুন: z "GNU is not Unix"

সংকলিত জেএস:

var z;
z = function(a) {
  var b, c, d, e, f, g, _i, _len;
  g = " ";
  b = a.split(g);
  c = b[0];
  d = [];
  for (f = _i = 0, _len = b.length; _i < _len; f = ++_i) {
    e = b[f];
    if (e[0].toLowerCase() !== c[f - g].toLowerCase()) {
      d.push(e);
      g++;
    }
  }
  if (g + c.length === f) {
    return {
      1: 1,
      d: d
    };
  } else {
    return {
      0: 0
    };
  }
};

এটি শব্দগুলিতে স্ট্রিং বিভক্ত হয় এবং তারপরে প্রতিটি শব্দের মধ্য দিয়ে লুপ হয়। শব্দের প্রথম অক্ষর সংক্ষিপ্ত আকারে পরবর্তীটির সাথে মেলে না, শব্দটি সংরক্ষণ করা হয়। একটি কাউন্টার ( g) কত শব্দ এড়িয়ে গেছে তা ট্র্যাক করতে ব্যবহৃত হয়। যদি বাদ দেওয়া শব্দের সংখ্যার সাথে সংক্ষিপ্ত আকারের দৈর্ঘ্যের সাথে বাক্যাংশের দৈর্ঘ্যের সাথে মিল হয়, তবে এটি মিলেছে, সুতরাং 1 এবং এড়িয়ে যাওয়া শব্দগুলি ফিরিয়ে দিন। যদি তা না হয় তবে এটি বৈধ ছিল না, সুতরাং 0 ফিরে আসুন।


0

সি # - 234

Tuple<bool,string[]> f(string w) {var l=w.ToLower().Split(' ');var o=new List<string>();int n=0;var a=l[0];foreach(var t in l){if(n>=a.Length||a[n]!=t[0])o.Add(t);else n++;}var r=n>=a.Length;return Tuple.Create(r,r?o.ToArray():null);}

0

পাইথন (108)

l=raw_input().lower().split()
a=l[0]
e=[]
for w in l:d=w[0]!=a[0];a=a[1-d:];e+=[w]*d  
b=a==''
print b,b*`e`
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.