সমস্ত অ্যানগ্রামগুলি, এবং সুবানগ্রামগুলিও সন্ধান করুন!


13

এই প্রশ্নের প্রচন্ডভাবে বন্ধ ভিত্তি করে এই প্রশ্নের তবে অতিরিক্ত অসুবিধা একটি নম্বর জাহির করা উচিত নয়।

তোমার কাজ

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

ইনপুট

আপনি কোনও স্ট্রিং গ্রহণ করতে পারেন, যা কোনও স্ট্যান্ডার্ড ইনপুট পদ্ধতিতে কোনও দৈর্ঘ্যের> 0 হতে পারে। এটিতে কোনও এএসসিআইআই অক্ষর থাকতে পারে।

আউটপুট

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

অন্যান্য বিধি

স্ট্যান্ডার্ড লুফোলগুলি অনুমোদিত নয়

স্কোরিং

এটি , কমপক্ষে বাইটস জয়।


খালি স্ট্রিং কি কোনও সম্ভাব্য অ্যানগ্রাম আছে?
ডিজিটাল ট্রমা

মূল স্ট্রিং / ট্যুরেন্সগুলি আউটপুট দেওয়া কি অনুমোদিত?
ক্যালকুলেটরফলাইন

@ ক্যালকুলেটরফলাইন "আপনাকে অবশ্যই একই স্ট্রিং দু'বার আউটপুট দিতে হবে না, বা ইনপুটটির সমান স্ট্রিং আউটপুট করতে হবে না।"
জোনাথন অ্যালান

@ ডিজিটালট্রামা, "আপনি কোনও স্ট্রিং গ্রহণ করতে পারেন , এটি কোনও স্ট্যান্ডার্ড ইনপুট পদ্ধতিতে > 0 এর দৈর্ঘ্যের হতে পারে "। (জোর দেওয়া)
গ্রিফন

4
কয়েকটি পরীক্ষার কেস সহায়ক হবে
মিঃ এক্সকডার

উত্তর:


8

05 এ বি 1 ই , 7 বাইট

Œ€œ˜Ù¹K

একটি ফাংশন যা ইনপুট থেকে স্ট্রিং গ্রহণ করে এবং স্ট্যাকের স্ট্রিংগুলির একটি তালিকা ফেলে। সম্পূর্ণ প্রোগ্রাম হিসাবে তালিকার উপস্থাপনা মুদ্রিত হয়।

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

কিভাবে?

        - push input
Œ       - all substrings
 €œ     - for €ach: all permutations
   ˜    - flatten
    Ù   - de-duplicate
     ¹  - push 1st input onto top of stack
      K - pop a,b; push a without any b's (remove the copy of the input from the list)
        - as a full program: implicit print of the top of the stack

এবং ... আপনি আরও ছোট কিছু পরিচালনা করেছেন।
গ্রিফন

এটি একই অ্যালগরিদম, মাত্র কম বাইট।
জোনাথন অ্যালান

হ্যাঁ, ভাষা পরিবর্তনগুলি সমস্ত ছিল, তবে এটি এখনও চিত্তাকর্ষক।
গ্রিফন

@ ais523 দেখে মনে হচ্ছে যে আমি উভয়ই ভুল উপায়ে পেয়েছি!
জোনাথন অ্যালান

@ ais523 আমি মনে করি এটি স্থির।
জোনাথন অ্যালান

9

ব্র্যাচল্যাগ (2), 7 বাইট

{sp}ᶠdb

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

ব্যাখ্যা

{sp}ᶠdb
{  }ᶠ    Find all
  p        permutations of
 s         a substring of {the input}
     d   Remove duplicates (leaving the list otherwise in the same order)
      b  Remove the first (the input itself)

(2) এর অর্থ কী?
গ্রিফন

@ গ্রিফোন (আফাইক) এর 2 টি সংস্করণ ব্রাঞ্চইলগ রয়েছে, এটি ভি 2 ব্যবহার করছে।
জন হ্যামিল্টন

1
ঠিক আছে, এটি নিশ্চিত ছিল না যে এটি কোনও সংস্করণ নম্বর বা কোনও ভিন্ন, এবং সম্ভবত অবৈধ পদ্ধতি ব্যবহার করে একটি সম্ভাব্য বাইট গণনা ছিল।
গ্রিফন

1
আমাকে এখনই দ্বিতীয় বার জিজ্ঞাসা করা হয়েছে। আমার ধারণা আমি এটি লিখতে শুরু করব (v2)

7

জেলি , 9 বাইট

ẆŒ!€;/QḟW

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

এটি অনলাইন চেষ্টা করুন! (পাদলেখগুলি নতুন লাইনের সাথে যোগ দিয়ে ফলাফলের তালিকা প্রিন্ট করে)

কিভাবে?

ẆŒ!€;/QḟW - Link: list of characters, s
Ẇ         - all contiguous sublists of s
 Œ!€      - all permutations for €ach sublist now a list of lists of lists)
     /    - reduce by:
    ;     -   concatenation (flattens the list by one level)
      Q   - de-duplicate (gets the unique entries)
        W - wrap s in a list (otherwise filtering will attempt to remove characters)
       ḟ  - filter discard from left if in right (remove the one equal to the input)


3

জাপট , 10 বাইট

à má c â Å

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

আমি ব্যবহার পেয়েছিলাম à, áএবং âখুব একটি উত্তর সমস্ত, যাতে। কি কাকতালীয়...

ব্যাখ্যা

 à má c â Å
Uà má c â s1  // Ungolfed
              // Implicit: U = input string
Uà            // Take all combinations of characters in the input string.
   má         // Map each combination to all of its permutations.
      c       // Flatten into a single array.
        â     // Uniquify; remove all duplicates.
          s1  // Remove the first item (the input) from the resulting array.
              // Implicit: output resulting array, separated by commas

1
আপনি এমনকি পরিচালনাও করেছেন।
গ্রিফন

1

গণিত, 60 বাইট

DeleteCases[""<>#&/@Permutations[c=Characters@#,Tr[1^c]],#]&

Permutationsএকটি alচ্ছিক সংখ্যাসূচক আর্গুমেন্ট নেয় যা এটি জানায় যে ক্রমের জন্য কতগুলি ইনপুট মান ব্যবহার করতে হবে। যদি আমরা এটিকে ইনপুটটির দৈর্ঘ্য দিই, তবে এটি ডুপ্লিকেট ছাড়াই ইনপুটটির সমস্ত উপসর্গের জন্য অনুমতি তৈরি করবে। আমাদের যা করতে হবে তা হ'ল ইনপুট সরানো।


1

জাভা 8, 313 312 306 বাইট

import java.util.*;s->{Set l=new HashSet();for(int z=s.length(),i=0,j;i<z;i++)for(j=i;j<z;p("",s.substring(i,j+++1),l));l.remove(s);l.forEach(System.out::println);}void p(String p,String s,Set l){int n=s.length(),i=0;if(n<1)l.add(p);else for(;i<n;p(p+s.charAt(i),s.substring(0,i)+s.substring(i+++1,n),l));}

আমার উত্তরের পরিবর্তিত সংস্করণ এখানে , যেখানে p("",s,l);প্রতিস্থাপন করা হয়েছেfor(int z=s.length(),i=0,j;i<z;i++)for(j=i;j<z;p("",s.substring(i,j+++1),l));

আমার লিঙ্ক করা উত্তরে @ অলিভিগ্রগ্রোয়ারকে -6 বাইটস ধন্যবাদ জানায় ।

এই অংশের ব্যাখ্যা:

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

for(int l=s.length(),i=0,j;i<l;i++)
                               // Loop (1) from 0 to the length of the String (exclusive)
  for(j=i+1;j<=l;              //  Loop (2) from 1 to the length of the String (exclusive)
    p("",                      //   Call the permutation-method,
    s.substring(i,j+++1),l));  //   with a substring from `i` to `j` (inclusive)
                               //  End of loop (2) (implicit / single-line body)
                               // End of loop (1) (implicit / single-line body)

0

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

{unique(flat $_,.comb.combinations.skip».permutations.map(*».join)).skip}

চেষ্টা করে দেখুন

সম্প্রসারিত:

{                    # bare block lambda with implicit parameter 「$_」

  unique(            # return each (sub)anagram once

    flat             # unstructure the following (List of Lists into flat List)
      $_,            # the input (so we can skip it at the end)

      .comb          # split the input into graphemes
      .combinations  # get all the combinations
      .skip\         # skip the first empty combination
      ».permutations # get all the permutations of each combination
      .map(*».join)  # join the inner permutations

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