সংক্ষিপ্ততম অনন্যভাবে সাবস্ট্রিংগুলি সনাক্ত করা


23

স্ট্রিংয়ের একটি তালিকা দেওয়া হয়েছে, প্রতিটি স্ট্রিংকে তার খালি খালি সাবস্ট্রিংগুলির মধ্যে একটি দ্বারা প্রতিস্থাপন করুন যা তালিকার অন্য স্ট্রিংগুলির একটির স্ট্রিং নয় এবং যতটা সম্ভব সংক্ষিপ্ত।

উদাহরণ

তালিকা দেওয়া ["hello","hallo","hola"], "hello"শুধু দ্বারা প্রতিস্থাপন করা উচিত "e"হিসাবে এই সাবস্ট্রিং অন্তর্ভুক্ত করা হয় না "hallo"এবং "hola"এবং এটি যতটা সম্ভব সংক্ষিপ্ত হয়। "hallo"দ্বারা পারেন প্রতিস্থাপিত হতে পারে "ha"বা "al"এবং "hola"কোনো দ্বারা "ho","ol" বা "la"

বিধি

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

পরীক্ষার মামলা

বেশিরভাগ ক্ষেত্রে কেবল একটি সম্ভাব্য আউটপুট দেওয়া হয়।

["ppcg"] -> ["p"] (or ["c"] or ["g"])
["hello","hallo","hola"] -> ["e","ha","ho"]
["abc","bca","bac"] -> ["ab","ca","ba"]
["abc","abd","dbc"] -> ["abc","bd","db"]
["lorem","ipsum","dolor","sit","amet"] -> ["re","p","d","si","a"]
["abc","acb","bac","bca","cab","cba"] -> ["abc","acb","bac","bca","cab","cba"]

সম্পর্কিত: সংক্ষিপ্ততম সনাক্তকরণের সাবস্ট্রিং - অনুরূপ ধারণা, তবে আরও জড়িত নিয়ম এবং জটিল ফর্ম্যাট।


কেন ""(খালি স্ট্রিং) একক "ppcg"ক্ষেত্রে স্বতন্ত্রভাবে সনাক্ত করছে না ?
মুজবয়েস

2
@ মুজবয়েস স্ট্রিংগুলির একটি তালিকা দেওয়া হয়েছে, প্রতিটি স্ট্রিং এর একটি খালি সাবস্ট্রিংয়ের মাধ্যমে প্রতিস্থাপন করুন
মিঃ এক্সকোডার

উত্তর:




4

পাইথ , 12 বাইট

mhf!ts}LTQ.:

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

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

বেসিকালি প্রত্যেকটির সাবস্ট্রিংগুলি ফিল্টার করে যা কেবলমাত্র তালিকার যে কোনও একটি স্ট্রিংয়ে ঘটে (যা এটি স্ট্রিংয়ের সাথে অনন্য) এবং প্রথমটি পায় gets

mhf!ts}LTQ.:     Full program, Q=eval(stdin_input())
m         .:     Map over Q and obtain all the substrings of each.
  f              And filter-keep those that satisfy (var: T)...
      }LTQ       ... For each string in Q, yield 1 if it contains T, else 0.
   !ts           ... Sum the list, decrement and negate. 
 h               Head. Yields the first valid substring, which is always the shortest.

4

প্রোলোগ (এসডাব্লুআই) , 175 163 বাইট

S/L/R:-sub_string(S,_,L,_,R).
[H|T]+[I|R]:-string_length(H,L),between(1,L,X),H/X/I,T+R.
R+R.
L-R:-L+R,forall(member(E,L),findall(_,(member(F,R),\+ \+ E/_/F),[_])).

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

এখানে বেশিরভাগ জিনিসগুলি মোটামুটি সুস্পষ্ট হওয়া উচিত, তবে:

ব্যাখ্যা

স্বাক্ষর: ( += ইনপুট, ?= alচ্ছিক, -= আউটপুট, := প্রকাশ)

  • sub_string(+String, ?Before, ?Length, ?After, ?SubString)
  • string_length(+String, -Length)
  • member(?Elem, ?List)
  • between(+Low, +High, ?Value)
  • findall(+Template, :Goal, -Bag)
  • forall(:Cond, :Action)

\+ \+হ'ল not not(অর্থাত্ বুলেয়ানের সাথে একটি ম্যাচকে রূপান্তর করে (এই ক্ষেত্রে এটি উভয়টির pসাথে ppcgআলাদাভাবে মিলতে বাধা দেয় ))


কাজের জন্য সঠিক সরঞ্জাম: পি এটি সত্যই নয় যে এটি মস্তিষ্কে - ভার্জিক
ASCII- কেবল




3

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

a=>a.map(s=>(L=s.length,g=n=>a.every(S=>S==s|!~S.search(u=s.substr(n%L,n/L+1)))?u:g(n+1))(0))

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

কিভাবে?

প্রতিটি স্ট্রিং এর জন্য গুলি দৈর্ঘ্যের এল ইনপুট অ্যারের মধ্যে একটি [] এবং দিয়ে শুরু এন = 0 , আমরা রিকার্সিভ ফাংশন ব্যবহার ছ () সব সাবস্ট্রিং জেনারেট করতে U এর গুলি সাথে

u = s.substr(n % L, n / L + 1)

উদাহরণস্বরূপ, s = "abc" এবং এল = 3 সহ :

 n | n%L | floor(n/L+1) | u
---+-----+--------------+-------
 0 |  0  |       1      | "a"
 1 |  1  |       1      | "b"
 2 |  2  |       1      | "c"
 3 |  0  |       2      | "ab"
 4 |  1  |       2      | "bc"
 5 |  2  |       2      | "c"
 6 |  0  |       3      | "abc"
 7 |  1  |       3      | "bc"
 8 |  2  |       3      | "c"

কিছু সাবস্ট্রিংগুলি বেশ কয়েকবার উত্পাদিত হয়, তবে এটি কোনও বিষয় নয়। গুরুত্বপূর্ণটি হ'ল দৈর্ঘ্য N এর সমস্ত সাবস্ট্রিংগুলি N + 1 দৈর্ঘ্যের কোনও স্ট্রিংয়ের আগে তৈরি করা হয়েছিল ।

আমরা যত তাড়াতাড়ি প্রক্রিয়াটিকে থামিয়ে যেমন তোমার দর্শন লগ করা কোনো খুঁজে পাওয়া যাবে না অন্যান্য স্ট্রিং এসএকটি [] যা নিশ্চিত করা হয়, ঘটতে যখন তোমার দর্শন লগ করা == গুলি সবচেয়ে খারাপ ক্ষেত্রে, চ্যালেঞ্জ নিয়ম # 2 অনুযায়ী:

তালিকার কোনও স্ট্রিং অন্য স্ট্রিংগুলির একটিতে স্ট্রিং হবে না

অতএব, উপরের উদাহরণে, 7 এবং 8 পদক্ষেপগুলি কখনই প্রক্রিয়া করা হবে না।


2

পাওয়ারশেল , 107 বাইট

($a=$args)|%{$(for($i=0;$i++-lt($g=($s=$_)|% Le*)){0..($g-$i)|%{$s|% s*g $_ $i}|?{!($a-match$_-ne$s)}})[0]}

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

ব্যাখ্যা

সরবরাহিত প্রতিটি স্ট্রিংয়ের জন্য (এবং পুরো অ্যারেটিকে নির্ধারণ করুন $a):

  • forস্ট্রিংয়ের প্রতিটি সাবস্ট্রিং দৈর্ঘ্য (1 ভিত্তিক) এর উপর একটি লুপ করুন (স্ট্রিংটি নিজেই নির্ধারণ করুন $sএবং দৈর্ঘ্যটি)$g )
  • প্রতিটি দৈর্ঘ্যের জন্য ( $i):
    • 0 থেকে দৈর্ঘ্য পর্যন্ত একটি সূচক লুপ তৈরি করুন - $iতারপরে প্রতিটি সূচকের জন্য:
      • $sঅবস্থানের $_(সূচী) এবং দৈর্ঘ্যের বর্তমান স্ট্রিংয়ের ( ) স্ট্রিং পান$i
      • Where-Object( ?) এর স্ট্রিংগুলি পাস করুন , এবং যদি এটি ফেরত দিন:
        • অ্যারে ( $a) এর সাবসেটটিতে বর্তমান স্ট্রিং $sথাকে না, বর্তমান স্ট্রিংয়ের সাথে কোনও মিল নেই$_

স্ট্রিং স্তরে ফিরে, আমাদের কাছে এই স্ট্রিংয়ের সমস্ত সাবস্ট্রিংগুলি রয়েছে যা অন্যদের মধ্যে পাওয়া যায় নি, তাই প্রথমটি গ্রহণ করুন [0]যেহেতু আমাদের কেবল তার একটি প্রয়োজন, তারপরে পরবর্তী স্ট্রিংটি দিয়ে চালিয়ে যান।


0

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 149 বাইট

a=>a.Select(s=>{var t=s;for(int j=0,k,l=s.Length;j++<l;)for(k=-1;j+k++<l;)if(!a.Where(u=>s!=u&u.Contains(t=s.Substring(k,j))).Any())j=k=l;return t;})

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

কম গল্ফড ...

// a is an input array of strings
a=>
  // iterate over input array   
  a.Select(s=>{
    // t is the result string
    var t=s;
    // j is the substring length
    for(int j=0,k,l=s.Length;j++<l;)
      // k is the start index
      for(k=-1;j+k++<l;)
        // LINQ query to check if substring is valid
        // the tested string is collected in t
        if(!a.Where(u=>s!=u&u.Contains(t=s.Substring(k,j))).Any())
          // break loops
          j=k=l;
    // return result
    return t;
  })
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.