বর্ণানুক্রমিকভাবে একটি স্ট্রিং অনুমোদন


27

কার্য

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

উদাহরণ:

ইনপুট: buzz

আউটপুট:

buzz
bzuz
bzzu
ubzz
uzbz
uzzb
zbuz
zbzu
zubz
zuzb
zzbu
zzub

বিধি

  • এটি তাই সংক্ষিপ্ততম কোডটি জয়ী।
  • প্রতিটি / যে কোনও লাইনে স্থানের স্থান ঠিক আছে
  • শেষ লাইনের পরে একক নতুন লাইন অনুমোদিত (তবে আর নেই)

আউটপুট ফর্ম্যাট হতে পারে ["buzz" "bzuz" "bzzu" "ubzz" "uzbz" "uzzb" "zbuz" "zbzu" "zubz" "zuzb" "zzbu" "zzub"]?
লুইস মেন্ডো

দুঃখিত, আমি যেমনটি বলেছি, আমি সুস্থ্য;) আউটপুট অবশ্যই তালিকার বিন্যাসের পরিবর্তে পৃথক লাইনে থাকতে হবে
ব্রায়ান গ্র্যাডিন

হ্যাঁ, এটা বোঝা যায়। আমি কেবল দেখতে চেয়েছিলাম যে আমি আমার সিজেএম উত্তর ( N*থেকে p) :-) থেকে একটি বাইট সরিয়ে ফেলতে পারি কিনা
লুইস মেন্ডো

2
একটি কঠিন প্রথম চ্যালেঞ্জ!
xnor

1
এত বিল্টিন!
ড্যান

উত্তর:


23

জেলি , 5 বাইট

ṢŒ!QY

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

ব্যাখ্যা

Ṣ         Sort
 Œ!       All permutations
   Q      Unique
    Y     Join by linefeeds

26
এবং ... আমাদের 100000 পোস্ট রয়েছে! অভিনন্দন!
ETH প্রোডাকশনস

1
নিবন্ধন করুন ধন্যবাদ! :-)
লুইস মেন্ডো

1
আমার পক্ষ থেকেও অভিনন্দন :) :) এইচটি প্রোডাকশন আপনি কীভাবে এই ফলাফলটি পেয়েছেন? আমি কেবল কৌতূহলী ...
geisterfurz007 এই বিশৃঙ্খলা বন্ধ করুন

5
@ geisterfurz007 পোস্টের নীচে "ভাগ করুন" লিঙ্কটি ক্লিক করুন। এটিতে ইউআরএল পোস্টের আইডি রয়েছে।
মার্টিন এন্ডার

1
ওহ তাই এটি পিপিসিজি এর 100000 তম পোস্ট! আমি ভেবেছিলাম লুইস মেন্ডো ইতিমধ্যে এই সংখ্যাটিতে ছিল। আমার খারাপ। ব্যাখ্যা করার জন্য ধন্যবাদ!
geisterfurz007 এই বিশৃঙ্খলা বন্ধ করুন

12

05 এ বি 1 ই ,  4  3 বাইট

œপুরানো সংস্করণটি ভেঙে দেওয়ার জন্য আপডেট আপডেট হয়েছে ,
যা ম্যাজিক অক্টোপাস উরনের পরামর্শ অনুসারে একটি বাইটও সংরক্ষণ করেছিল

œê»

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

ব্যাখ্যা

œ     # get all permutations of input
 ê    # sort and remove duplicates
  »   # join list by newlines

œê»অ-উত্তরাধিকার জন্য জরিমানা।
ম্যাজিক অক্টোপাস উরন 17

@ ম্যাজিক অ্যাক্টপাস ইউরন: œএখন উভয় সংস্করণের জন্য এটি এখন প্রয়োজনীয় কারণ এখন উভয়ের স্ট্রিংয়ের একটি তালিকা ফেরত দেয়।
এমিগানা


10

পাইথন 3.5, 79 বাইট

def f(s,w=''):
 s or print(w)
 for c in sorted({*s}):t=s*1;t.remove(c);f(t,w+c)

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

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


অক্ষরের তালিকা নয়, স্ট্রিং নয়।
xnor


8

পাইথ - 5 বাইট

jS{.p

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

j        Join. Implictly joins on newlines.
 S       Sort
  {      Uniquify
   .p    All permutations, implicitly run on input.

হয় Sসত্যিই প্রয়োজন?
লুইস মেন্ডো

@ লুইস মেন্ডো যদি ইনপুটটি ইতিমধ্যে সাজানো না হয় তবে এটি দরকার।
isaacg

1
ধন্যবাদ! আমি ঠিক বুঝতে পেরেছিলাম যে আমার জেলি উত্তরেও এটি দরকার
লুইস মেন্ডো

পুনঃটুইট
মালটিসেন

6

হাস্কেল, 46 বাইট

import Data.List;unlines.sort.nub.permutations

নিমিকে ধন্যবাদ জানায় 2 বাইট


1
ফাংশনের জন্য আপনার কোনও নামের প্রয়োজন নেই, যাতে আপনি এটিটি ফেলে দিতে পারেন f=
নিমি

5

জে, 19 বাইট

/:~@~.@:{~!@#A.&i.#

পরীক্ষা ক্ষেত্রে

   f =: /:~@~.@:{~!@#A.&i.#
   f 'buzz'
buzz
bzuz
bzzu
ubzz
uzbz
uzzb
zbuz
zbzu
zubz
zuzb
zzbu
zzub

ব্যাখ্যা

এটি একটি 4-ট্রেন:

                     /- ~ --- /:
               /- @ -^- ~.
  /- ~ --- @: -^- {
  |
  |            /- !
--<     /- @ --^- #
  |     |
  \-----<      /- A.
        >- & --^- i.
        \- #

মূলত:

/:~@~.@:{~!@#A.&i.#
          !  A.&     get permutations
           @#   i.#  of range (0..length)
        {~           map indices to chars in string
      @:             then
    ~.               unique
   @                 then
/:~                  sort

আমি মনে করি [:~.i.@!@#A./:~আপনাকে কয়েকটা বাইট সাশ্রয় করা উচিত
মাইল 23

4

জাভাস্ক্রিপ্ট (ফায়ারফক্স 30+), 129 124 বাইট

f=(a,i=-1)=>a[1]?[for(x of a.sort())if(a.indexOf(x)==++i)f([...a.slice(0,i),...a.slice(i+1)]).replace(/^/gm,x)].join`
`:a[0]

কোনও ভাষার অন্তর্নির্মিত ছাড়াই কোনও ভাষার পক্ষে খুব খারাপ নয় ...


আমি স্ট্রিংগুলিতে পরিচালনা করতে এটি রূপান্তর করেছি; মাত্র 23 টি বাইট নিলেও অক্ষরগুলিকে সাজানোর জন্য আমি এখনও 120 বাইটে কাজটি পেয়েছি।
নিল

3

পাইথন 3.5, 81 বাইট:

from itertools import*;lambda i:'\n'.join(sorted({*map(''.join,permutations(i))}))

সত্যই ... পরবর্তী দীর্ঘতম উত্তর 48 বাইট ... দীর্ঘশ্বাস থাকলে 81 বাইট । ঠিক আছে, আমি এই গল্ফটিকে আরও যতটা পারি চেষ্টা করব তবে গল্ফিং টিপসটি এখনও অনেক প্রশংসাযোগ্য।

এছাড়াও পাইথন 2-তে 86 বাইটে আমি যে সংক্ষিপ্ত সমাধানটি পেতে পারি তা এখানে :

from itertools import*;lambda f:'\n'.join(sorted({''.join(i)for i in permutations(f)}))

স্পষ্টত পাইথন 2-এ, [*...]একটি প্রদান করে Syntax Errorএবং যেহেতু permutationsপ্রত্যাবর্তন হয় itertools.permutations object at 0x..., অনন্য অনুমতিগুলি উত্তোলনের পরবর্তী সংক্ষিপ্ততম উপায় (যা আমি জানি) {''.join(i)for i in permutations(f)}কোথায় fইনপুট স্ট্রিংটি ব্যবহার করছে।

অবশেষে, লক্ষ্য করুন যে এগুলি উভয় ল্যাম্বদা ফাংশন এবং সুতরাং অবশ্যই ফর্ম্যাটে কল করা উচিত print(<Function Name>(<Input String>))


3

গণিত, 34 23 বাইট

Print@@@Permutations@#&

ইনপুট অবশ্যই অক্ষরের একটি তালিকা হতে হবে।

ব্যাখ্যা

Permutations@

সাজানো এবং সদৃশ-মুক্ত ইনপুটটির সমস্ত ক্রিয়াকলাপগুলি সন্ধান করুন।

Print@@@

একে একে মুদ্রণ করুন।



3

পার্ল 6 ,  49  44 বাইট

স্ট্রিং ইনপুট হিসাবে

*.comb.permutations.sort».join.squish.map: *.put

ইনপুট হিসাবে অক্ষরের তালিকা

*.permutations.sort».join.squish.map: *.put

সম্প্রসারিত

*\              # Whatever lambda
# .comb\        # split into a list of characters
.permutations\  # returns a list of lists
.sort\
».join\         # join the second level lists
.squish\        # remove adjacent repeated values
.map: *.put     # print each on its own line

2
প্রতিবার যখন আমি পার্ল 6 কোডটি দেখি আমি ভাবছি কেন আমি এখনও এটি ইনস্টল করি নি
গ্যাব্রিয়েল বেনামি

@ গ্যাব্রিয়েলেনামি একটি আইরিক বট রয়েছে যা ফ্রেইনডোনেট #perl6চ্যানেলে পার্ল code কোড চালায় ।
ব্র্যাড গিলবার্ট বিবিগিল

আপনি এর ».sayপরিবর্তে করতে পারেন.map: *.put
জো কিং

1
@ জোকিং টেকনিক্যালি এগুলি যে ».sayকোনও ক্রমে করার অনুমতি দেওয়া হয়েছে এবং এক সময় এটি উদ্দেশ্যমূলকভাবে করা হয়েছিল।
ব্র্যাড গিলবার্ট বিগগিলস


2

পাইথন 3, 77 85 বাইট

এখন ধরণের!

import itertools as i
for a in sorted(set(i.permutations(input()))):print("".join(a))

1
এটি সংক্ষিপ্ত করতে, আপনি এর from itertools import*বিপরীতে করতে পারেন import itertools as i। আপনি প্রতিস্থাপন i.permutationsকরে একটি বাইট সংরক্ষণ করতে সক্ষম হবেন permutations
0WJYxW9FMN

{*...}পরিবর্তে ব্যবহার করা set(...)আপনার আরও দুটি বাইট সংরক্ষণ করে।
মুভিটিকা

2

পাওয়ারশেল ভি 3 +, 171 বাইট

param([char[]]$x)$a,$b=$x;$a=,$a;while($b){$z,$b=$b;$a+=$a|%{0..($y=($c="$_").Length)|%{-join($c[0..$_]+$z+$c[++$_..$y])};"$z$c";"$c$z"}}$a|?{$_.length-eq$x.count}|sort -u

পাওয়ারশেল ভি 3 -Uniqueপতাকাটি Sort-Objectসেমিডলেটটিতে প্রবর্তন করেছে , সুতরাং এটি নীচের ভি 2 সংস্করণের চেয়ে কয়েক বাইট কম, যেহেতু আমাদের Selectপ্রথমে দরকার নেই ।

ভি 2 সংস্করণ, 178 বাইট:

param([char[]]$x)$a,$b=$x;$a=,$a;while($b){$z,$b=$b;$a+=$a|%{0..($y=($c="$_").Length)|%{-join($c[0..$_]+$z+$c[++$_..$y])};"$z$c";"$c$z"}}$a|?{$_.length-eq$x.count}|select -u|sort

পাওয়ারশেলের কোনও অন্তর্নির্মিত অনুমতি নেই, তাই আমি প্রাইম ফ্যাক্টর বাডস থেকে আমার কোড ধার নিয়েছি এবং এখানে ব্যবহারের জন্য এটি সামান্য টুইট করেছি twe

এটি মূলত তিনটি অংশ, যা আমি নীচে প্রসারিত করব।

param([char[]]$x)$a,$b=$x;$a=,$aইনপুট নেয় $x, এটিকে charঅ্যারে হিসাবে কাস্ট করে , প্রথম অক্ষরটি সরিয়ে দেয় $aএবং বাকীটি এর মধ্যে ফেলে $bএবং তারপরে $aকমা-অপারেটরের সাথে অ্যারে হিসাবে আবদ্ধ হয়।

while($b){$z,$b=$b;$a+=$a|%{0..($y=($c="$_").Length)|%{-join($c[0..$_]+$z+$c[++$_..$y])};"$z$c";"$c$z"}}বাকী অক্ষরের মাধ্যমে লুপগুলি ( $b), প্রতিটি পুনরাবৃত্তি পরবর্তী অক্ষরটি গ্রহণ করে এবং এটি স্টোরেজ করে এবং বাকীটি $zরেখে দেয় $b, তারপরে তার নিজস্ব লুপের মাধ্যমে $aপ্রেরণের ফলাফলের জন্য অ্যারে-কনটেনটিং $a- প্রতিটি আইটেম $a(অস্থায়ীভাবে সঞ্চিত $c) উপর লুপ হয় নিজস্ব .length, এবং তারপর $zprepending এবং সংযোজন সহ যে অবস্থান, ঢোকানো হয় $z$cএবং $c$z। উদাহরণস্বরূপ, এর জন্য $c = '12'এবং এর $z = '3'ফলস্বরূপ '132','312','123'আবার ফিরে আসবে $a

চূড়ান্ত অংশটি $a|?{$_.length-eq$x.count}|select -u|sortপ্রতিটি উপাদান গ্রহণ করে $aএবং Where-Objectকেবলমাত্র ইনপুট স্ট্রিংয়ের সমান দৈর্ঘ্য selectথাকা -uফিল্টারগুলি ছড়িয়ে দিতে ক্লজ ব্যবহার করে , তারপরে কেবলমাত্র নির্দিষ্ট আইটেম এবং অবশেষে sortসেইগুলি বর্ণানুক্রমিক। ফলস্বরূপ স্ট্রিংগুলি সমস্ত পাইপলাইনে রেখে যায় এবং Write-Outputপ্রোগ্রামের সমাপ্তির পরে অন্তর্নিহিত মাধ্যমে আউটপুট ঘটে।

PS C:\Tools\Scripts\golfing> .\alphabetically-permute-a-string.ps1 'PPCG'
CGPP
CPGP
CPPG
GCPP
GPCP
GPPC
PCGP
PCPG
PGCP
PGPC
PPCG
PPGC

আপনি 3.0 যেতে ইচ্ছুক যদি পরিবর্তন করতে পারেন |select -u|sortথেকে |sort -u। খুব নিশ্চিত 2.0 এর সাথে এটি নেই।
ম্যাট

@ ম্যাট ধন্যবাদ - আপনি সঠিক। এটি v3 সালে চালু হয়েছিল।
অ্যাডমবর্কবার্ক

2

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

f=(s,t=[...s].sort().join``,p=``)=>t?t.replace(/./g,(c,i)=>t.indexOf(c)==i?f(s,t.slice(0,i)+t.slice(i+1),p+c):``):p+`\n`

যেখানে \nআক্ষরিক নিউলাইন চরিত্রের প্রতিনিধিত্ব করে। অ্যারে পরিবর্তে স্ট্রিং ব্যবহার করার জন্য @ ইটিএইচ প্রডাকশনের উত্তর বন্দর। আউটপুটটি বিপরীত করা, বা শুরুতে ট্রেলিং করা নতুনলাইন সরানো, 3 বাইট সাশ্রয় করে।


1

আর, 113 বাইট

x=scan(,"");cat(sort(unique(apply(matrix(x[permute:::allPerms(l<-length(x))],,l),1,paste,collapse=""))),sep="\n")

স্টিডিনের কাছ থেকে ইনপুট পড়ে। permuteপ্যাকেজ অর্ডার ডাকতে ইনস্টল করা অধিকৃত হয় allPermsফাংশন।

আমি কাজ থেকে বাড়ি আসার সাথে সাথে একটি ব্যাখ্যা যুক্ত করব।


1

জাভা 302 300 বাইট

import java.util.*;class M{public static void main(String[]a){for(Object s:p(new TreeSet(),"",a[0]))System.out.println(s);}static Set p(Set l,String p,String s){int n=s.length(),i=0;if(n>1)for(;i<n;p(l,p+s.charAt(i),s.substring(0,i)+s.substring(++i,n)));else if(!l.contains(p+=s))l.add(p);return l;}}

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

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

import java.util.*;
class M{
  static Set p(Set l, String p, String s){
    int n = s.length(),
        i = 0;
    if(n > 1){
      for(; i < n; p(l, p + s.charAt(i), s.substring(0, i) + s.substring(++i, n)));
    } else if(!l.contains(p+=s)){
      l.add(p);
    }
    return l;
  }

  public static void main(String[] a){
    for(Object s : p(new TreeSet(), "", a[0])){
      System.out.println(s);
    }
  }
}

ইনপুট: পরীক্ষার
আউটপুট:

estt
etst
etts
sett
stet
stte
test
tets
tset
tste
ttes
ttse


@ ইকারোস ধন্যবাদ, এখনই ঠিক করা উচিত।
কেভিন ক্রুইজসেন

1

রেকেট 82 বাইট

(sort(remove-duplicates(map list->string(permutations(string->list s)))) string<?)

Ungolfed:

(define(f s)
 (sort
  (remove-duplicates
   (map
    list->string
    (permutations
     (string->list s))))
  string<?))

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

(f "buzz")

Ouput:

'("buzz" "bzuz" "bzzu" "ubzz" "uzbz" "uzzb" "zbuz" "zbzu" "zubz" "zuzb" "zzbu" "zzub")


0

রুবি, 51 বাইট

->s{puts s.chars.permutation.map(&:join).uniq.sort}

কিভাবে আমরা এটি চালাতে পারি?
বারপাবাবা

puts s.chars.permutation().map(&:join).uniq43 বাইট
বারপابাবা

যে কাজ করে না। আপনাকে আউটপুটটি বাছাই করতে হবে এবং আপনি sপূর্বের সংজ্ঞা ছাড়াই উল্লেখ করতে পারবেন না ।
লি ডব্লু


0

পিপ , 8 বাইট

কোডের 7 বাইট, -nপতাকার জন্য +1 ।

SSUQPMa

কমান্ড-লাইন আর্গুমেন্ট হিসাবে একটি স্ট্রিং নেয়। এটি অনলাইন চেষ্টা করুন!

পিপের স্ক্যানার বড় হাতের অক্ষরগুলিকে দু-বর্ণের খণ্ডে বিভক্ত করে। সুতরাং এই কোডটি হ'ল SS UQ PM a--ie SortString(UniQue(PerMutations(a))), aকমান্ড-লাইন আরগের সাথে । -nপতাকা নিশ্চিত ফলাফলের তালিকা সম্পর্কে newline বিভাজিত হয়। এখানেই শেষ এটা পেতে ওখানে যাও.


0

কে (ওকে) , 14 বাইট

সমাধান:

?x@<x@:prm@#x:

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

ব্যাখ্যা:

prmইনপুটটির দৈর্ঘ্যের ক্রমবিকাশ তৈরি করতে অন্তর্নির্মিত ক্রমুয়েশন ফাংশনটি ব্যবহার করুন, ইনপুটটিতে এই অনুমতিগুলি প্রয়োগ করুন, বর্ণমালা অনুসারে বাছাই করুন এবং তারপরে স্বতন্ত্র মানগুলি গ্রহণ করুন।

?x@<x@:prm@#x: / the solution
            x: / store input as x
           #   / count length of x
       prm@    / apply (@) function prm
    x@:        / apply indices to x and save result back into x
   <           / indices to sort ascending
 x@            / apply to x
?              / take distint


0

ûকেন্দ্র পাস পদ্ধতি; আমি মনে করি আপনি বোঝাতে চেয়েছিলেন n;)
শেগি

@ শেগি আমি সবেমাত্র sortআপনার দোভাষীর অনুসন্ধানবারে রেখেছি এবং আমি যে প্রথমটি খুঁজে পেয়েছি তাতে ক্লিক করেছি। তবে áপ্রতিটি বর্ণমালা ইতিমধ্যে বর্ণানুক্রমিক অর্থে দেওয়ার জন্য মনে হচ্ছে
অবজ্ঞানের

উফ, এটি একটি টাইপো; হওয়া উচিত ü। কালকে ঠিক করে দেব। "বাজ" এর ক্রমগুলি সাজানো হতে পারে কারণ শব্দটি নিজেই - এটির পরিবর্তে "zzub" দিয়ে চেষ্টা করুন।
শেগি

@Shaggy, আমি দেখি, সঙ্গে আপডেট উত্তর n(এটা টাইপ করা আরো সহজ)
অজ্ঞতা প্রতিমূর্তি


0

ক্ল্যাম , 9 বাইট

p_D`Sq@~Q

ব্যাখ্যা

          - Implicit Q = first input
p         - Print...
 _        - Sorted ascending value (alphabetical order)
  D       - Distinct from...
   `Sq    - Joined (map(q=>q.join(""))
      @~Q - Permutations of Q
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.