পারমিটেশন গ্রুপ অপারেশন


15

এন উপাদানগুলির ক্রমবর্ধন এবং 0 থেকে এন! -1 সংখ্যার মধ্যে একটি সুপরিচিত দ্বিধাদান রয়েছে যে ক্রমান্বয়ে এবং সম্পর্কিত সংখ্যার অভিধান সংক্রান্ত ক্রম একই হয়। উদাহরণস্বরূপ, এন = 3 সহ:

0 <-> (0, 1, 2)
1 <-> (0, 2, 1)
2 <-> (1, 0, 2)
3 <-> (1, 2, 0)
4 <-> (2, 0, 1)
5 <-> (2, 1, 0)

এটি আরও সুপরিচিত যে এন উপাদানগুলির ক্রমান্বন একটি গ্রুপ গঠন করে (অর্ডার এনের প্রতিসাম্য গ্রুপ!) - সুতরাং, বিশেষত, এন উপাদানগুলির একটি দ্বিতীয় অনুক্রমের জন্য প্রয়োগ করা n উপাদানগুলির একটি ক্রমান্বন এন উপাদানগুলির একটি ক্রমান্বন লাভ করে ।

উদাহরণস্বরূপ, (1, 0, 2) (a, b, c) ফলন (b, a, c) এর উপর প্রয়োগ হয়েছে, সুতরাং (1, 0, 2) (2, 1, 0) ফলন প্রয়োগ করে (1, 2) , 0)।

একটি প্রোগ্রাম লিখুন যা তিনটি পূর্ণসংখ্যার আর্গুমেন্ট গ্রহণ করে: এন, পি 1 এবং পি 2; পি 1 এবং পি 2 কে এন উপাদানগুলির ক্রমবিন্যাস হিসাবে ব্যাখ্যা করে; প্রথমটি দ্বিতীয়টিতে প্রয়োগ করে; এবং সম্পর্কিত পূর্ণসংখ্যা আউটপুট করে। উদাহরণ স্বরূপ:

$ ./perm.sh 3 2 5
3

উত্তর:


7

জে, 30

আমি এর কমনীয়তা পছন্দ:

[:A.[:{/]A.~/~i.@[

অথবা এটা:

13 :'A.{/(i.x)(A.)~/y'

তবে তারা এইভাবে কাজ করে:

3 f 2 5
3
12 f 8 9
17

সুতরাং এটি বৈধ এন্ট্রি:

([:A.[:{/i.@{.A.~/}.)".}.>ARGV

কিছু ব্যাখ্যা:

  • 3 A. 0 1 2: 0 1 2(= 1 2 0) এর তৃতীয় অনুমান দেয়
  • 0 1 2 (A.)~ 3: একই কিন্তু যুক্তিগুলির সাথে বিপরীত
  • 0 1 2 (A.)~/ 3 4 5 ..."প্রযোজ্য" (A.)~থেকে 3 4 5 ..., তাই এটি দেয় 3 য়, 4 র্থ, 5 ম, ... এর বিন্যাস 0 1 2
  • A. 1 2 0: 1 2 0(= 3) এর আদেশের আদেশ দেয়
  • i. n: ক্রম দেয় 0 1 2 ... n-1
  • 1 2 0 { 0 2 1আয়োজন 0 2 1দ্বারা 1 2 0(= 2 1 0)

সাবাশ. আমি A.গতকালের জন্য ডকুমেন্টেশনে এক ঝলক দেখেছি , তবে ও :-) প্রশ্নের সঠিক ক্রমে চেষ্টা করতে এবং একত্রিত হতে খুব ক্লান্ত হয়ে পড়েছিলাম
জেবি

@ জেবি: আমি ভাবছিলাম যে এখানে কেন কোনও জেবি + জে নেই ... :)
এলেভেক্স

4

রুবি - 77 অক্ষর

n,a,b=$*.map &:to_i
l=[*[*0...n].permutation]
p l.index(l[b].values_at *l[a])

P l.index (l [b]। মূল্যবোধ_এট (* l [a])) এর মাধ্যমে শেষ 3 লাইনটি প্রতিস্থাপন করুন
স্টেনস্ল্যাগ

মোটামুটি শোনার জন্য দুঃখিত আমার পরামর্শ দেওয়ার অর্থ ছিল, তবে আমি ফর্ম্যাট করার সমস্যায় হারিয়ে গিয়েছিলাম এবং দৃশ্যত আমার সম্পাদনার সময় শেষ হয়ে গেছে।
স্টেনস্ল্যাগ

ARGV.map{|x|x.to_i}-> $*.map &:to_iআরও কয়েকটি অক্ষর সংরক্ষণ করে। এবং আপনি এর সাথে দ্বিতীয় লাইনটি প্রতিস্থাপন করতে পারেন l=[*[*0...n].permutation]
ভেন্টোরো

সমস্যা নেই, পরামর্শের জন্য ধন্যবাদ।
ডেভিড

@ ভেন্তোরো: আমি এগুলি পছন্দ করি। [* [* 0 ... এন]। অভিমুখে] আমাকে হাসিয়ে তোলে।
স্টেনস্লাগ

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