একটি পুনরাবৃত্তি সংক্ষিপ্ত বিবরণ সন্ধান করুন


10

ভূমিকা

একটি পুনরাবৃত্তি সংক্ষিপ্ত বিবরণ একটি সংক্ষিপ্ত বিবরণ যা নিজেকে ধারণ করে বা বোঝায়, উদাহরণস্বরূপ: এর জন্য Fishএকটি পুনরাবৃত্ত সংক্ষিপ্ত বিবরণ হতে পারে Fish is shiny hero, লক্ষ্য করুন যে এতে কীভাবে সংক্ষিপ্ত আকার রয়েছে। আরেকটি উদাহরণ হ'ল Hi-> Hi igloo। বা এমনকি ppcg paints->ppcg paints cool galaxies pouring acid into night time stars

সুতরাং মূলত, একটি বাক্যটি একটি পুনরাবৃত্ত সংক্ষিপ্ত শব্দ হয় যদি প্রতিটি শব্দের প্রথম অক্ষর প্রথম শব্দ বা শব্দের বানান করে।


চ্যালেঞ্জ

এমন একটি প্রোগ্রাম তৈরি করুন যা কোনও স্থানের অক্ষর দ্বারা পৃথক করা 1 বা ততোধিক শব্দের স্ট্রিং গ্রহণ করে এবং এটি অসম্ভব হলে একটি পুনরাবৃত্ত সংক্ষিপ্ত বিবরণ বা খালি স্ট্রিং আউটপুট দেয়। উদাহরণস্বরূপ, একটি স্ট্রিংয়ের জন্য একটি পুনরাবৃত্ত সংক্ষিপ্ত আকার তৈরি করা অসম্ভব, ppcg elephantকারণ আপনি তখন pথেকে ppcgসংক্ষিপ্ত বিবরণ যোগ করে, এবং পরে গ্রহণ করে eশুরু করবেন elephant। তবে এখন আমাদের একটি বৈপরীত্য রয়েছে, যেহেতু সংক্ষিপ্ত বিবরণটি বর্তমানে "পে .." বানান, যা "পিপি .." এর সাথে সাংঘর্ষিক। উদাহরণস্বরূপ, এটির ক্ষেত্রেও এটি hi। আপনি এটি hথেকে নেবেন hi, তবে বাক্যটি এখন শেষ হয়েছে এবং বানান করার জন্য hiআর কোনও চিঠি নেই এবং আমরা কেবল বাকী রয়েছি hযা মিলছে নাhi। (সংক্ষিপ্ত বিবরণে অক্ষরের পরিমাণের চেয়ে বেশি বা সমান পরিমাণে স্ট্রিংয়ের প্রয়োজন হয়)

ইনপুট এবং আউটপুট কেস সংবেদনশীল নয়


বিধিনিষেধ

  • আপনার প্রোগ্রামে যে কোনও কিছু প্রবেশ করানো বৈধ ইংরেজি শব্দ হবে। তবে আপনাকে অবশ্যই বৈধ ইংরেজি শব্দগুলি আউটপুট নিশ্চিত করতে হবে (আপনি একটি ডাটাবেস ব্যবহার করতে পারেন বা কেবল ২ letters টি বর্ণের প্রতিটি জন্য একটি শব্দ সঞ্চয় করতে পারেন)
  • স্ট্যান্ডার্ড লুফোলস এবং ডিফল্ট আইও নিয়মগুলি প্রয়োগ হয়

পরীক্ষার কেস

hi igloo -> hi
ppcg paints -> (impossible)
ppcg paints cool giraffes -> ppcg
ppcg paints cool galaxies pouring acid into night time stars -> ppcgpaints
ppcg paints cool galaxies pouring acid into night time -> ppcg
ppcg questions professional pool challengers greatly -> (impossible)
I -> I

স্কোরিং

এটি , তাই বাইটের মধ্যে ক্ষুদ্রতম উত্স কোডটি জয়ী


1
প্রশ্ন, কিউ [কিউ] বিশেষ্য, বহুবচন কিউ বা কিউ, কিউ বা কিউ? ইংরেজি বর্ণমালার 17 তম অক্ষর, একটি ব্যঞ্জনা। তাত্ক্ষণিকভাবে, খালাস বা ইরাকের মতো Q বা q অক্ষর দ্বারা চিহ্নিত কোনও কথ্য শব্দ sound Q. এর
আকৃতিযুক্ত

3
এছাড়াও আমি মনে করি না পিপিসিজি অভিধানের একটি শব্দ
l4m2

1
ঠিক আছে, test পরীক্ষাগুলির একটি আমার প্রত্যাশা অনুসারে পরিণত হয়নি। ppcg paints cool galaxies pouring acid into night timeসংক্ষিপ্ত আকারে তৈরি করার সময় আমরা দুজনেই কোনও ভুল করছি না তা নিশ্চিত করার জন্য "পিপিসিগেইপেন্ট" হবে, তবে আউটপুট হওয়া উচিত ppcgযদিও এটি কেবল একটি আংশিক ম্যাচ?
কামিল দ্রাকারী ২

1
যেহেতু সমস্ত বর্তমান সমাধানগুলি প্রথম বিকল্পটি নিচ্ছে ("সংক্ষিপ্ত রূপটি অনুসন্ধান করুন"), এবং "বাক্য সন্ধান করুন" বিকল্পটি আরও জটিল (সুতরাং প্রথমটির সাথে প্রতিযোগিতামূলক হওয়ার কোনও উপায় নেই - আপনার কিছু শব্দ তালিকার প্রয়োজন, শুরু করার জন্য), আমি এটিকে এই চ্যালেঞ্জ থেকে সরানোর এবং এটিকে নিজস্ব প্রশ্ন করার পরামর্শ দেব।
পাওলো ইবারম্যান

2
@ পাওলোএবারম্যান ঠিক আছে, আমি এটি সরিয়ে দিয়েছি
ফায়ারকিউজ

উত্তর:


5


1
এটি ppcg paints cool galaxies pouring acid into night time starsপরীক্ষার ক্ষেত্রে ব্যর্থ হয়
কামিল দ্রাকারি

এখানে একটি সংস্করণ যা সেই পরীক্ষার ক্ষেত্রে কাজ করে তবে তা গল্ফ হয় না
কামিল দ্রাকারী ২

আমার আগের 13 বাইট সমাধানটি সঠিক ডেক্স \
লুইস

বর্তমান সংস্করণটি কেবলমাত্র সংক্ষিপ্ত
বিবরণে

5

1
কেন এটি আপনার সর্বশেষ সম্পাদনার ð¡পরিবর্তে পরিবর্তিত হয়েছিল #? কিছু বিশেষ পরীক্ষার মামলা আমি আমলে নিচ্ছি না?
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন: কারণ #খালি স্ট্রিংয়ের পরিবর্তে একক শব্দ ইনপুটটিকে ইনপুট আউটপুট দিতে ব্যর্থ হবে।
এমিগিনা

হ্যাঁ, এটি ছিল। মনে আছে এর আগেও এরকম কিছু জিজ্ঞাসা করেছি। আমি এখনও মনে করি #যে একইরকম আচরণ করা উচিত ð¡.. আপনি কি ফাঁকা জায়গায় একটি স্ট্রিং বিভক্ত করতে চান তা ভাবতে পারে এমন কোনও ব্যবহারের কেস রয়েছে তবে এটিতে যদি স্থান না থাকে তবে এটি স্ট্রিংয়ের পরিবর্তে স্ট্রিংটি থাকা উচিত একটি তালিকায় আবৃত)? অন্যান্য ব্যক্তি এটি পড়া; এফওয়াইআই: #ফাঁকা ছাড়াই স্ট্রিংয়ে (স্পেসে বিভক্ত) ব্যবহার করলে স্ট্রিংটি যেমন হয় (যেমন "test" -> "test") তেমন ঘটে । ð¡ফাঁকা ছাড়াই একটি স্ট্রিংয়ে (স্পেসে বিভক্ত) ব্যবহার করা হলে স্ট্রিংটি তালিকায় (যেমন "test" -> ["test"]) মোড়ানো হয় ।
কেভিন ক্রুইজসেন

@ কেভিন ক্রুইজসেন: আমি মনে করি এটি মূলত এটি #হিসাবে ব্যবহৃত হওয়ার কারণে quit if true(যা এটির মূল কাজ)। যদি #মিথ্যা ফিরিয়ে দেওয়া হয়, আপনি সম্ভবত মানটি একটি তালিকাতে মোড়াতে চাইবেন না, স্ট্যাকের উপর রেখে।
Emigna

1
@ কামিলডাকারী: যদিও এখন কাজ করে।
এমিগানা

2

হাস্কেল, 51 48 বাইট

সম্পাদনা: -৩ বাইট @xnor ধন্যবাদ।

(\w->[r|p<-scanl1(++)w,map(!!0)w==p,r<-p]).words

সংক্ষিপ্ত বিবরণ সন্ধান করে।

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

\w->            .words -- let 'w' be the input list split into words
   p<-scanl1(++)w      -- loop 'p' through the list starting with the first word
                       --  and appending the next words one by one, e.g.
                       --  "Fish","is","shiny","hero" -> "Fish","Fishis","Fishisshiny","Fishisshinyhero"
     ,map(!!0)w==p     -- if the word made out of the first characters of the
                       --  words of 'w' equal 'p'
  [r|   r<-p]          -- return the letters of 'p' - if the check before
                       --  never evaluates to True then no letters, i.e. the
                       --  the empty string is returned

যেহেতু আপনি ব্যবহার করছেন না x, তাই রচনাগুলি (\w-> ...).wordsখাটো হবে।
xnor

2

পার্ল 6 , 50 42 58 49 বাইট

-9 বাইটস nwellnhof ধন্যবাদ

{~first {m:g/<<./.join~~/^$^a/},[R,] [\~] .words}

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

প্রথম বিকল্প। আমি ordএকমাত্র সত্যিকারের স্ট্রিংয়ের প্রথম অক্ষরের অর্ডিনাল মান ফিরিয়ে দিচ্ছি , যখন chrsআদেশগুলির একটি তালিকা গ্রহণ করে একটি স্ট্রিং প্রদান করে। বা মুনহার্টের উত্তর থেকে রেজেক্স আরও ছোট :(। রেফারেন্সের জন্য, আগের উত্তরটি .words>>.ord.chrsপরিবর্তে ছিল[~] m:g/<<./

ব্যাখ্যা:

{~first {m:g/<<./.join~~/^$^a/},[R,] [\~] .words}
{                                               } # Anonymous code block
  first  # Find the first 
                                [R,] [\~] .words  # Of the reverse of the triangular joined words
         {                    }  # That matches:
          m:g/   /   # Match all from the original string
              <<.    # Single letters after a word boundary
                  .join    # Joined
                       ~~/^$^a/   # And starts with the given word
 ~  # And stringify Nil to an empty string

আপনাকে এখনই "IMPOSSIBLE" আউটপুট দেওয়ার দরকার নেই
ফায়ারকিউজ ২

@ জো কিং আমি রেজিজেস করতে পারি, তবে আমার জীবনের জন্য আমি সমস্ত অপারেটরদের সাথে ভাবতে পারি না। আমি x অপারেটরের উপস্থিতি ভুলে যাচ্ছি, উদাহরণস্বরূপ: P
moonheart08

1

রেটিনা 0.8.2 , 60 বাইট

^
$'¶
\G(\w)\w* ?
$1
+`^(.+)(\w.*¶\1 )
$1 $2
!`^(.+)(?=¶\1 )

এটি অনলাইন চেষ্টা করুন! পুনরাবৃত্তকৃত সংক্ষিপ্ত বিবরণ সন্ধান করে, যদি কোনও হয়। ব্যাখ্যা:

^
$'¶

ইনপুট সদৃশ।

\G(\w)\w* ?
$1

প্রথম লাইনে শব্দগুলি তাদের প্রাথমিক বর্ণগুলিতে হ্রাস করুন।

+`^(.+)(\w.*¶\1 )
$1 $2

যদি সম্ভব হয় তবে আসল শব্দের সাথে মেলে ফাঁকা স্থান .োকান।

!`^(.+)(?=¶\1 )

প্রথম লাইনের আউটপুট যদি এটি দ্বিতীয় লাইনের উপসর্গ হয়।


পিপিসিজি পেইন্টগুলির জন্য, আউটপুটটি অবৈধ, এটির বাইরে কিছুই হওয়া উচিত না কারণ ppকেবলমাত্র সমস্ত শব্দের পরিবর্তে প্রথম শব্দের একটি অংশ
বানান

@ ফায়ারকিউজ দুঃখিত, আমি প্রশ্নের পুরানো সংস্করণটি বন্ধ করে দিচ্ছিলাম।
নীল

1

পার্ল 6 , 56 বাইট

$!=[~] m:g{<<.};say $! if m:g{<<\w+}.map({$_ eq $!}).any

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

পূর্বে রেজেক্সগুলি আমার কাছে বিভ্রান্তিমূলক এবং ব্যবহারের অযোগ্য ছিল। হঠাৎ আমি তাদের পুরোপুরি বুঝতে পারি। আমার কি হয়েছে: পি

পূরণ পূরণ 1।


দুঃখের বিষয়, আমি এখনও সেই পর্যায়ে আছি যেখানে রেজিক্সগুলি কেবল উন্মাদনা। দুর্ভাগ্যক্রমে, এটি ppcgpaintsপরীক্ষায় ব্যর্থ হয় , অন্যথায় আমি $!∈.wordsযদি এই অবস্থার জন্য এমন কিছু প্রস্তাব করতাম
জো কিং ২

1

কে (এনএনজি / কে) , 40 বাইট

প্রথম বিকল্প:

{$[1=#:x;x;$[(*:t)~,/*:'t:" "\x;*:t;`]]}

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


এই 2 টি বিকল্পের মধ্যে কোনটি কাজ করে?
ফায়ারকিউজ

প্রথম, স্ট্রিং ইনপুট থেকে সংক্ষিপ্তসার আউটপুট। আমি আমার পোস্টটি স্পষ্ট করতে সম্পাদনা করব
Thaufeki

1

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

নির্বাচিত: সমস্যা 1: সংক্ষিপ্ত বিবরণ সন্ধান করা

type S=String;fn f(t:&str)->S{let l=t.to_lowercase();let w=l.split(' ').fold(S::new(),|a,b|a+&b[..1])+" ";if (l+" ").contains(w.as_str()){w}else{S::new()}}

অসম্পূর্ণ, কিছুটা:

fn f(t: &str) -> String {
    let l = t.to_lowercase();
    let w = l.split(' ').fold(String::new(), |a, b| a + &b[0..1]) + " ";
    if (l + " ").contains(w.as_str()) {
        w
    } else {
        String::new()
    }
}

অথবা যদি আমরা ধরে নিতে পারি যে ইনপুটটি সমস্ত ছোট হাতের অক্ষর, কেবল 130:

type S=String;fn f(l:S)->S{let w=l.split(' ').fold(S::new(),|a,b|a+&b[..1])+" ";if (l+" ").contains(&w.as_str()){w}else{S::new()}}

এই প্রোগ্রামটি 2 টির মধ্যে কোনটি পছন্দ করে?
ফায়ারকিউজ

@ ফায়ারকিউজ আপডেট হয়েছে।
হ্যানস কার্পিলা 22

1

জেলি , 9 বাইট

Ḳµ;\fZḢWƊ

যদি সম্ভব হয় তবে একটি পূর্ণ-প্রোগ্রাম পুনরাবৃত্ত সংক্ষেপণ মুদ্রণ করে।

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

কিভাবে?

Ḳµ;\fZḢWƊ - Main Link: list of characters
Ḳ         - split at space (let's call this v)
 µ        - start a new monadic chain (i.e. f(v)):
   \      - cumulative reduce v with:
  ;       -   concatenation -> [v(1), v(1);v(2), v(1);v(2);v(3); ...]
        Ɗ - last three links as a monad (i.e. f(v)):
     Z    -   transpose -> [[v(1)[1], v(2)[1], ...],[v(1)[1],v(2)[2],...],...]
      Ḣ   -   head -> [v(1)[1], v(2)[1], ...] ... i.e. 'the potential abbreviation'
       W  -   wrap in a list -> ['the potential abbreviation']
    f     - filter discard those from the left list that are not in the right list
          - implicit print -- a list of length 0 prints nothing
          -                   while a list of a single item prints that item

"প্রথম শব্দটি মুদ্রণ করুন" বলতে কী বোঝ? এটির সংক্ষিপ্ত বিবরণ সন্ধান করা দরকার যদি এটি উপস্থিত থাকে তবে তা কি তা করে?
ফায়ারকিউজ

"পিপিসিজি পেইন্টস শীতল ছায়াপথগুলি আকাশে নয় এমন অ্যাসিড pourেলে দেয়" এর ব্যর্থতা, "পিপিসিজি পেইন্টস" বা "পিপিসিজিপেইন্টস" মুদ্রণ করা উচিত
ফায়ারকিউজ ২

ওহ, আমি সংযুক্ত শব্দগুলির প্রয়োজনীয়তাটি মিস করেছি :(
জোনাথন অ্যালান

এই প্রয়োজনীয়তা মেটাতে এটি স্থির করে।
জোনাথন অ্যালান

1

জাভাস্ক্রিপ্ট [ইএস 6], 74 বাইট

s=>s.split` `.map(w=>(b+='('+w,e+=')?',t+=w[0]),b=e=t='')&&t.match(b+e)[0]

মেলে নিয়মিত প্রকাশ তৈরি করে expression কোড উদাহরণ দেখুন।

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

let f=

s=>s.split` `.map(w=>(b+='('+w,e+=')?',t+=w[0]),b=e=t='')&&t.match(b+e)[0]

console.log(f('hi igloo'))
// 'hi'.match('(hi(igloo)?)?')[0] == 'hi'

console.log(f('ppcg paints'))
// 'pp'.match('(ppcg(paints)?)?')[0] == ''

console.log(f('ppcg paints cool giraffes'))
// 'ppcg'.match('(ppcg(paints(cool(giraffes)?)?)?)?')[0] == 'ppcg'

console.log(f('ppcg paints cool galaxies pouring acid into night time stars'))
// 'ppcgpaints'.match('(ppcg(paints(cool(galaxies(pouring(acid(into(night(time(stars)?)?)?)?)?)?)?)?)?)?')[0] == 'ppcgpaints'

console.log(f('ppcg paints cool galaxies pouring acid into night time'))
// 'ppcgpaint'.match('(ppcg(paints(cool(galaxies(pouring(acid(into(night(time)?)?)?)?)?)?)?)?)?')[0] == 'ppcg'

console.log(f('ppcg questions professional pool challengers greatly'))
// 'pqppcg'.match('(ppcg(questions(professional(pool(challengers(greatly)?)?)?)?)?)?')[0] == ''

console.log(f('I'))
// 'I'.match('(I)?')[0] == 'I'

console.log(f('increase i'))
// 'ii'.match('(increase(i)?)?')[0] == ''

console.log(f('i increase'))
// 'ii'.match('(i(increase)?)?')[0] == 'i'


ব্যর্থincrease i
l4m2

@ l4m2, এখন ঠিক।
রিক হিচকক

0

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

প্রথম বিকল্প - পুনরাবৃত্তি সংক্ষিপ্ত বিবরণ সন্ধান করা।
তালিকায় ফল দেয়।

I=input().split()
print[' '.join(I[:i])for i in range(1,-~len(I))if[j[0]for j in I]==list(''.join(I[:i]))]

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

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

প্রথম বিকল্প - পুনরাবৃত্তি সংক্ষিপ্ত বিবরণ সন্ধান করা।

def F(I,a=[],r=''):
 for j in I.split():
  a+=j,
  if list(''.join(a))==[i[0]for i in I.split()]:r=' '.join(a)
 return r

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


@ জোকিংয়ের অনুরোধ অনুসারে আপনাকে "আইএমপোসিবল" আউটপুট দেওয়ার দরকার নেই, এটি আপনার বাইট গণনা হ্রাস করতে পারে
ফায়ারকিউজ ২

'আমি' এর মতো একক অক্ষর কাজ করে না, এটি একটি একক চিঠি আউটপুট করা উচিত
ফায়ারকিউজ ২

@ ফায়ারকিউজ স্থির করেছেন
মৃত

0

জাভাস্ক্রিপ্ট, 71 বাইট

পদ্ধতির ঘ

l=s=>{p=s.split(' ');k=p.reduce((r,x)=>r+x[0],'');return k==p[0]?k:''}

Ungolfed:

l=s=>{
    p = s.split(' ');
    k = p.reduce((r,x)=>r+x[0],'');
    return k==p[0] ? k : '';
}
  • স্থান দ্বারা স্ট্রিং বিভক্ত।
  • প্রতিটি শব্দ থেকে প্রথম অক্ষর নিয়ে নতুন স্ট্রিং তৈরি করুন।
  • এটি প্রথম শব্দের সাথে তুলনা করুন।



0

স্কালা, 76 বাইট

সাধারণ ক্ষেত্রে সমাধান (সাদা স্থান ছাড়া সংক্ষিপ্ত শব্দ)

def^(s:String)={val l=s.split(" ");if(l(0)==l.map(_(0)).mkString)l(0)else""} 

স্কালা, 144 বাইট 100 বাইট (কেবল মন্তব্যগুলিতে ASCII- এর সমাধান দেখুন)

def^(s:String)={val l=s.split(" ");l.scanLeft(List[String]())(_:::List(_)).find(_.mkString==l.map(_(0)).mkString).map(_.mkString).getOrElse("")}

আরপিএলে পরীক্ষা

scala> def^(s:String)={val l=s.split(" ");if(l(0)==l.map(_(0)).mkString)l(0)else""}
$up: (s: String)String

scala> ^("hi igloo")
res12: String = hi

scala> ^("ppcg paints cool giraffes")
res13: String = ppcg

scala> ^("ppcg paints Xcool giraffes")
res14: String = ""

scala> ^("ppcg paints cool galaxies pouring acid into night time stars")
res15: String = ""

scala>

scala> def^(s:String)={val l=s.split(" ");l.scanLeft(List[String]())(_:::List(_)).find(_.mkString==l.map(_(0)).mkString).map(_.mkString).getOrElse("")}
$up: (s: String)String

scala> ^("hi igloo")
res16: String = hi

scala> ^("ppcg paints cool giraffes")
res17: String = ppcg

scala> ^("ppcg paints Xcool giraffes")
res18: String = ""

scala> ^("ppcg paints cool galaxies pouring acid into night time stars")
res19: String = ppcgpaints


পারি :::প্রতিস্থাপিত হতে ++? এছাড়াও, List[String]-> Seq[Any]?
এএসসিআইআই-কেবল


@ এএসসিআইআই-কেবল, দুর্দান্ত! এই সমাধান পাইথন বীট। :)
ডঃ ওয়াই উইট

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