শৃঙ্খলাবদ্ধ শব্দগুলিকে প্রদত্ত স্ট্রিংয়ে ফিট করার জন্য


10

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

আপনার প্রোগ্রাম বা ফাংশন বর্ণের স্ট্রিং এবং শব্দের তালিকা, একটি স্ট্রিং বা এসটিডিআইএন হিসাবে গ্রহণ করতে পারে এবং সমস্ত শব্দকে একটি তালিকা বা স্ট্রিং আউটপুট হিসাবে সঠিক ক্রমে আউটপুট করতে হবে। যদি একাধিক সঠিক সমাধান হয় তবে কেবল তার মধ্যে একটি আউটপুট করুন। যদি কোনও সঠিক সমাধান না পাওয়া যায় তবে খালি তালিকা বা একটি খালি স্ট্রিং আউটপুট করুন।

উদাহরণ:

dogcatfrog cat frog dog
-> dog cat frog

xxcatfixsxhingonxgrapexxxfishingcxat cat grape catfish fishing
-> catfish grape fishing cat

dababbabadbaccbcbaaacdacdbdd aa bb cc dd ba ba ba ab ac da db dc
-> da ab ba ba ba cc bb aa ac dc db dd

flea antelope
->
(no solution)

এটি কোড গল্ফ। সর্বনিম্ন সংখ্যা বাইট জিতেছে।

সম্পাদনা: ব্যাখ্যা করা হয়েছে যে অতিরিক্ত অক্ষরগুলি শব্দের ভিতরে থাকতে পারে।


ইনপুট ফর্ম্যাটটি কি একটি স্ট্রিং এবং তারপরে বাকী স্ট্রিংগুলির আরেকটি তালিকা হতে পারে?
ডুরকনবব

@ ডুরকনব, হ্যাঁ, এটা ঠিক আছে। ইনপুট এবং আউটপুট কাঠামো নমনীয়। চ্যালেঞ্জ যোগ করা হয়েছে।
লজিক নাইট

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

তৃতীয় পরীক্ষার মামলাটি আমি বুঝতে পারি না; আপনার উত্তর ccআগে রাখে bbতবে সাবস্ট্রিংগুলি কেবল একবার উপস্থিত হয় bbএবং ccসাবস্ট্রিংটি bbপ্রথম প্রদর্শিত হয়।
নীল

@Neil মধ্যে ccbcbস্ট্রিং আমরা আউটপুট অংশ ccতারপর আউটপুট bbমধ্যম ড্রপ পর c
লজিক নাইট

উত্তর:


5

পাইথ, 20 24 বাইট

পাইথের উপর আমার প্রথম প্রচেষ্টা :)

Jcw;FG.ptJI:hJj".*"G0jdG

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

Jcw;FG.ptJI:hJj".*"G0jdG
Jcw                         assign("J",chop(input()))
    FG.ptJ                  for G in permutations(tail(J)):
          I:hJj".*"G0        if match(head(J),join(".*",G)):
                     jdG      print(join(" ",G))

দ্রষ্টব্য: এটি তৃতীয় উদাহরণে দীর্ঘ সময় নেয় ( dababbabadbaccbcbaaacdacdbdd aa bb cc dd ba ba ba ab ac da db dc)।


5

পাইথ, 10 বাইট

h@s./Myz.p

প্রদর্শন

এই প্রোগ্রামটি অনেক বেশি নিষ্ঠুর শক্তি। এটি প্রথমে ইনপুটটির প্রতিটি উপসেট তৈরি করে, তারপরে উপ-বিভাগগুলির প্রতিটি বিভাজন, তারপরে প্রথমটির যাচাই করে যা শব্দ তালিকার পুনঃক্রম হয়। স্টাডআউটে কোনও আউটপুট না দিয়ে ত্রুটি করে কোনও সম্ভাবনা পরিচালনা করা হয় না, যা মেটা sensকমত্য দ্বারা অনুমোদিত। 2 টি অতিরিক্ত বাইটের জন্য ত্রুটিটি সরানো যেতে পারে।

নোট করুন যে প্রদত্ত পরীক্ষার ক্ষেত্রে অনেকের জন্য, প্রোগ্রামটি একটি যুক্তিসঙ্গত সময়ে সম্পূর্ণ হবে না।


আপনি দ্বিতীয় টেস্টকেস মিস করেছেন।
ফাঁস নুন

পছন্দ করেছেন তবে এটি ভুল উত্তর দেয় না। আমি মনে করি এটি কাজ করে। আপনার কি এমন কোনও পরীক্ষার কেস আছে যেখানে এটি কোনও উত্তর দেয় এবং সেই উত্তরটি ভুল?
ইসাকাক

সত্যিই দুর্দান্ত পদ্ধতি।
ফাঁস নুন

তুমি আমাকে পরাজিত করেছ
ফাঁস নুন

আপনি কি উত্তর যোগ করতে পারেন?
ফাঁস নুন

1

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

(s,a,t=``,...r)=>a[0]?a.find((w,i)=>(b=[...a],b.splice(i,1),f(s,b,w+t,w,...r)))&&q:~s.search(t.split``.join`.*`)&&(q=r)

একটি স্ট্রিং এবং শব্দের একটি অ্যারে গ্রহণ করে এবং শব্দের একটি অ্যারে বা undefinedব্যর্থতায় ফেরত দেয়। ব্যর্থতার ( ?q:``)) শূন্য স্ট্রিংটি ফেরত দিতে হলে 2 বাইট যুক্ত করুন, এক্ষেত্রে এই বিকল্প সংস্করণটি কেবলমাত্র 120 বাইট এবং ব্যর্থতার পরে খালি স্ট্রিংটি প্রদান করে এবং ব্যর্থতায় 0 ফেরত দেওয়ার অনুমতি পেলে এমনকি 2 বাইট সংরক্ষণ করতে পারে:

(s,a,t=``,...r)=>a[0]?a.reduce((q,w,i)=>q||(b=[...a],b.splice(i,1),f(s,b,w+t,w,...r)),0):~s.search([...t].join`.*`)?r:``

(এটি লেখার পরে আমি লক্ষ্য করেছি যে অ্যালগরিদমটি মূলত @ কেনি লাউয়ের পাইথ উত্তরটির সমান))

সম্পাদিত সম্পাদনা: প্রশ্নই শোধন পর আপডেট, কিন্তু এখন নয় সত্যিই তৃতীয় টেস্টে মামলা ধীর; আমি এটি শেষের আগের রাতে বন্ধ করে দিয়েছিলাম এবং আজ সকালে আমি ঠিক লক্ষ্য করেছি যে এটি আসলে সমাধানটি পেয়ে গেছে, কোথাও কোথাও 30 থেকে 40 ঘন্টা পরে। আমি যদিও আসলেই ছিলাম এবং এর সমাধানটি খাওয়ালাম (এটি বিপরীত সমাধানের সাথে সবচেয়ে ভাল কাজ করে, যা এটি তাত্ক্ষণিকভাবে যাচাই করবে)।


1

জাভা 7, 256 বাইট

import java.util.*;String c(String...a){Map s=new HashMap();int j,i=1,l=a[0].length();for(;i<a.length;i++)if((j=a[0].indexOf(a[i]))>-1)s.put(j,s.get(j)!=null?s.get(j)+" "+a[i]:a[i]);a[0]="";for(j=0;j<l;j++)a[0]+=s.get(j)!=null?s.get(j)+" ":"";return a[0];}

এটি অবশ্যই ভিন্নতর পদ্ধতির সাহায্যে আরও গল্ফ করা সম্ভব হবে তবে এটি এখনই করবে ...

অবরুদ্ধ এবং পরীক্ষার কোড:

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

import java.util.*;
class M{
  static String c(String... a){
    Map s = new HashMap();
    int j,
        i = 1,
        l = a[0].length();
    for(; i < a.length; i++){
      if((j = a[0].indexOf(a[i])) > -1){
        s.put(j, s.get(j) != null
                  ? s.get(j) + " " + a[i]
                  : a[i]);
      }
    }
    a[0] = "";
    for(j = 0; j < l; j++){
      a[0] += s.get(j) != null
               ? s.get(j) + " "
               : "";
    }
    return a[0];
  }

  public static void main(String[] a){
    System.out.println(c("dogcatfrog", "cat", "frog", "dog"));
    System.out.println(c("xxcatfixsxhingonxgrapexxxfishingcxat", "cat", "grape", "catfish", "fishing"));
    System.out.println(
        c("dababbabadbaccbcbaaacdacdbdd ", "aa", "bb", "cc", "dd", "ba", "ba", "ba", "ab", "ac", "da", "db", "dc"));
    System.out.println(c("flea", "antelope"));
  }
}

আউটপুট:

dog cat frog 
cat grape fishing 
da ab ba ba ba bb db ac cc aa dd 

1

গ্রোভি (৪৪ বাইট)

আমি বিশ্বাস করতে পারি না যে এর জন্য আর কেউ রেজিজেস ব্যবহার করেনি ...

{a,b->a.findAll(/${b.join('|')}/).join(" ")}

ব্যাখ্যা

/${b.join('|')}/- স্ট্রিংয়ের কোনও শব্দ খুঁজে পেতে একটি রেজেেক্স তৈরি করুন।
.findAll(...)- স্ট্রিংয়ের সমস্ত উপস্থিতি সন্ধান করুন এবং সংগ্রহ করুন।
.join(" ")- ফাঁকা স্থানের সাথে অ্যারে যোগ দিন।

মূলত, যদি কোনও ঘটনা না ঘটে থাকে তবে অ্যারেটি খালি থাকে এবং খালি স্ট্রিংটি স্পষ্টভাবে প্রদান করে returns যদি এটি ঘটনাগুলি খুঁজে পায় তবে এটি উপস্থিতিগুলির সাথে একটি অ্যারের অবজেক্ট ফিরিয়ে দেয় তারপরে এটি স্ট্রিংয়ে ফ্ল্যাট করে।

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