চক্রীয় স্বরলিপিতে প্রতিসম গ্রুপ স্নের "এমনকি" ক্রমগুলি মুদ্রণ করুন


9

কাজটি

সংজ্ঞা

Points 1,2,3,4,5 points পয়েন্টগুলি এবং তাদের সমস্ত অনুমতি বিবেচনা করুন। আমরা একটি সাধারণ কৌতুক দ্বারা এই 5 পয়েন্টের সম্ভাব্য অনুমতিগুলির মোট সংখ্যা খুঁজে পেতে পারি: এই পয়েন্টগুলি সহ 5 টি স্লট পূরণ করার চিত্র, প্রথম স্লটে 5 টি সম্ভাব্য সংখ্যা থাকবে, দ্বিতীয় 4 হবে (যেহেতু প্রথম স্লটটি পূরণ করতে ব্যবহৃত হয়েছে) তৃতীয় 3 এবং তাই। সুতরাং মোট অনুমানের সংখ্যা 5 * 4 * 3 * 2 * 1; এই 5 হবে! ক্রিয়াকলাপ বা 120 অনুমান। আমরা এটিকে প্রতিসামগ্রী গ্রুপ এস 5 হিসাবে ভাবতে পারি এবং তারপরে সিমমেট্রিক গ্রুপ সানকে অনুমতি দেওয়া হবে n! or (n*n-1*n-2...*1)

একটি "এমনকি" অনুক্রমটি এমন এক যেখানে সমান দৈর্ঘ্যের চক্র রয়েছে। এটি বোঝা যখন আবর্তনশীল স্বরলিপি লেখা উদাহরণস্বরূপ, সবচেয়ে সহজ পদ্ধিতি হল (1 2 3)(4 5)permutes 1->2->3->1এবং 4->5->4এবং এক 3 দৈর্ঘ্য চক্র রয়েছে (1 2 3)এবং এক 2 দৈর্ঘ্য চক্র (4 5)। বিজড়িত হিসাবে শ্রেণিভুক্তকরণ বা এমনকি আমরা বিজোড় দৈর্ঘ্যের চক্রকে উপেক্ষা করি এবং বলি যে এই পাঠ্যক্রমটি [ (1 2 3)(4 5)] বিজোড় কারণ এটি দৈর্ঘ্যের চক্রের একটি বিজোড় সংখ্যা {1। রয়েছে। এমনকি উদাহরণ:

  1. (1)(2 3)(4 5)= দুটি 2 দৈর্ঘ্যের চক্র | ইভেন |
  2. (1 2 3 4 5)= এমনকি দৈর্ঘ্যের চক্র নেই ইভেন | * নোট করুন যে কোনও দৈর্ঘ্যের চক্র যদি উপস্থিত না থাকে তবে আদেশটি সমান হয়।

অদ্ভুত উদাহরণ:

  1. (1 2)(3 4 5)= এক 2 দৈর্ঘ্যের চক্র | ওডিডি |
  2. (1)(2 3 4 5)= এক 4 দৈর্ঘ্যের চক্র | ওডিডি |

যেকোন সিমমেট্রিক গ্রুপের অর্ধেকের অর্ধেকই আমরা এমনকি সম-গোষ্ঠীকে বিকল্প গ্রুপ এন বলতে পারি, সুতরাং এস 5 = 120 এ 5 = 60 অনুক্রম হিসাবে।

স্বরলিপি

অনুক্রমের জন্য, কমপক্ষে, চক্রীয় স্বরলিপিতে লেখা উচিত যেখানে প্রতিটি চক্রটি পৃথক প্রথম বন্ধনে থাকে এবং প্রতিটি চক্র আরোহী ক্রমে চলে। উদাহরণস্বরূপ (1 2 3 4 5)না (3 4 5 1 2)। এবং একটি একক সংখ্যা সহ চক্রের জন্য যেমন: (1)(2 3 4)(5)একক / স্থির পয়েন্টগুলি অর্থ বাদ দেওয়া যায় (1)(2 3 4)(5) = (2 3 4)। তবে পরিচয় {যে বিন্দুতে সমস্ত পয়েন্ট স্থির থাকে - কেবল এটি উপস্থাপন করার জন্য (1)(2)(3)(4)(5)লিখতে ()হবে।

চ্যালেঞ্জ

আমি আপনাকে, কম কোডে, কোনও ইনপুট {1,2,3,4 ...} হিসাবে কোনও ধনাত্মক পূর্ণসংখ্যার গ্রহণ করতে এবং বিকল্প গ্রুপ এ এর ​​সমস্ত অনুমতি প্রদর্শন করতে চাই যেখানে এন ইনপুট / সমস্ত সমান এসএন এর অনুমোদন। উদাহরণ স্বরূপ:

Input = 3
()
(1 2 3)
(1 3 2)

এবং

Input = 4
()
(1 2)(3 4)
(1 3)(2 4)
(1 4)(2 3)
(1 2 3)
(1 3 2)
(1 2 4)
(1 4 2)
(1 3 4)
(1 4 3)
(2 3 4)
(2 4 3)

এবং উদাহরণগুলির সাথে আমিও চাই যে এক দৈর্ঘ্যের সমস্ত চক্রকে আলাদা করে দেওয়া হোক এবং পরিচয়টি যেমন: কিছুই ()না হয় - কেবল বন্ধনীরাই নয় আপনি যা কিছু ব্যবহার করতে যাচ্ছেন বিভিন্ন বিধিবিধান দেখানোর idজন্য acceptable বা গ্রহণযোগ্য।

অতিরিক্ত পড়া

আপনি এখানে আরও তথ্য পেতে পারেন:

ভাল লুক

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


2
প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ স্বাগতম! সাধারণত, আমরা আউটপুটটিকে নমনীয় হতে দিই, যাতে যে ভাষাগুলি সঠিক ফর্ম্যাটে আউটপুট নিয়ে সমস্যা হয় তাদের অন্যায় অসুবিধা না ঘটে। এটি [[1, 2], [3, 4]]পরিবর্তে উদাহরণস্বরূপ আউটপুট অনুমতি দেওয়া হয় (1 2)(3 4)?
আদনান

@ আদনান হ্যাঁ, আমার স্পষ্ট করা উচিত ছিল। যতক্ষণ না বিভিন্ন চক্র পৃথকভাবে দেখানো হয় আপনি কীভাবে এটি উপস্থাপন করেছেন তাতে কোনও সমস্যা হবে না be
হ্যারি

"একটি" এমনকি "ক্রমান্বন হ'ল এমন যেখানে সমান সংখ্যার সমান সংখ্যা রয়েছে" " এটি একটি চক্রীয় সংজ্ঞা মত দেখাচ্ছে। সম্ভবত প্রথমে চক্র স্বরলিপি প্রবর্তন করুন এবং তারপরে সেই বাক্যটি "... এমনকি দৈর্ঘ্যের চক্রের সংখ্যা" তে আবারও লিখুন?
মার্টিন ইন্ডার

এছাড়াও, আমি চক্রটিকে (2 3 1 4)আরোহণের ক্রমে কীভাবে রাখব ? আপনার অর্থ কি আমাদের সামান্যতম উপাদানটি সামনে রাখা উচিত?
মার্টিন ইন্ডার

@MartinEnder হ্যাঁ ক্ষুদ্রতম উপাদান প্রথম যতদিন এটা অর্ডার দিয়ে জগাখিচুড়ি না যেতে হবে যাতে (2 3 1 4)করে 2->3->1->4->2এটা লেখা যেতে পারে (1 4 2 3)তার ক্ষুদ্রতম উপাদান প্রথম
হ্যারি

উত্তর:


5

পাইথ, 26 বাইট

t#Mf%+QlT2mcdf<>dTS<dTd.pS

          m            .pSQ   Map over permutations d of [1, …, Q]:
             f        d         Find all indices T in [1, …, Q] such that
               >dT                the last Q-T elements of d
              <   S<dT            is less than the sorted first T elements of d
           cd                   Chop d at those indices
   f                          Filter on results T such that
      Q                         the input number Q
     + lT                       plus the length of T
    %    2                      modulo 2
                                is truthy (1)
t#M                           In each result, remove 0- and 1-cycles.

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

এই সমাধানটি এক-লাইন স্বরলিপিতে ক্রমাঙ্কন এবং চক্র স্বরলিখনের ক্রমের মধ্যে একটি ঝরঝরে দ্বিধা ভিত্তিক। অবশ্যই দুটি স্পষ্টতই একই অনুক্রমের প্রতিনিধিত্ব করে যেখানে স্পষ্ট দ্বিধা আছে:

[8, 4, 6, 3, 10, 1, 5, 9, 2, 7] = (1 8 9 2 4 3 6) (5 10 7)

তবে এটি খুব বেশি কোড নেবে। পরিবর্তে, কেবলমাত্র তাদের পূর্বসূরীদের চেয়ে ছোট সমস্ত সংখ্যার আগে এক-রেখার চিহ্নটি টুকরো টুকরো টুকরো টুকরো টুকরো করে এই টুকরোগুলিকে চক্র বলুন এবং সেগুলি থেকে একটি নতুন অনুক্রম তৈরি করুন।

[8, 4, 6, 3, 10, 1, 5, 9, 2, 7] ↦ (8) (4 6) (3 10) (1 5 9 2 7)

এই স্রোতটিকে বিপরীত করতে, আমরা চক্র আকারে যে কোনও ক্রম ছাড়তে পারি, প্রতিটি চক্রকে তার ক্ষুদ্রতম সংখ্যাটি প্রথমে আবর্তিত করতে পারি, চক্রটি বাছাই করে যাতে তাদের ক্ষুদ্রতম সংখ্যা ক্রমবর্ধমান ক্রমে উপস্থিত হয় এবং সমস্ত বন্ধনী মুছে দেয়।


ওপিতে একটি চক্র ছাড়াই পরিচয় পত্রের প্রতিনিধিত্ব করতে হবে। আমি মনে করি এটি না হলে ভাল হত।
মাইল

1
হ্যারি আমার জেলি উত্তরটি ঠিক আছে বলে মনে হয়েছিল, যা এমনকি 1-চক্র এমনকি মুদ্রণ করে id। সে কি চিমে যেতে পারে?
লিন

এটি যেভাবে বলা হয়েছে তা নিয়ে আমিও তেমন নিশ্চিত নই এবং আমিও লক্ষ্য করি না যে আপনার (লিনের) সমাধানও একইভাবে করেছে।
মাইল

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

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

6

গণিত, 84 49 31 বাইট

GroupElements@*AlternatingGroup

দুটি ফাংশন সমন্বয়। {Cycles[{}], Cycles[{{a, b}}], Cycles[{{c, d}, {e, f}}], ...}প্রতিনিধিত্ব করে ফর্মের আউটপুট (), (a b), (c d)(e f), ...


3

জে , 53 বাইট

[:(<@((>:@|.~]i.<./)&.>@#~1<#@>)@C.@#~1=C.!.2)!A.&i.]

জে শূন্য-প্যাড র‌্যাগড অ্যারে হ'ল প্রতিটি আদেশের চক্রগুলি বাক্সযুক্ত অ্যারে হিসাবে প্রতিনিধিত্ব করা হয়।

যদি আউটপুট শিথিল হয়, 41 বাইট ব্যবহার করে

[:((1+]|.~]i.<./)&.>@C.@#~1=C.!.2)!A.&i.]

যেখানে প্রতিটি অনুক্রমের মধ্যে একটি চক্র এবং শূন্যচক্র থাকতে পারে।

ব্যবহার

   f =: [:(<@((>:@|.~]i.<./)&.>@#~1<#@>)@C.@#~1=C.!.2)!A.&i.]
   f 3
┌┬───────┬───────┐
││┌─────┐│┌─────┐│
│││1 2 3│││1 3 2││
││└─────┘│└─────┘│
└┴───────┴───────┘
   f 4
┌┬───────┬───────┬─────────┬───────┬───────┬───────┬───────┬─────────┬───────┬───────┬─────────┐
││┌─────┐│┌─────┐│┌───┬───┐│┌─────┐│┌─────┐│┌─────┐│┌─────┐│┌───┬───┐│┌─────┐│┌─────┐│┌───┬───┐│
│││2 3 4│││2 4 3│││1 2│3 4│││1 2 3│││1 2 4│││1 3 2│││1 3 4│││1 3│2 4│││1 4 2│││1 4 3│││2 3│1 4││
││└─────┘│└─────┘│└───┴───┘│└─────┘│└─────┘│└─────┘│└─────┘│└───┴───┘│└─────┘│└─────┘│└───┴───┘│
└┴───────┴───────┴─────────┴───────┴───────┴───────┴───────┴─────────┴───────┴───────┴─────────┘

বিকল্প প্রয়োগের জন্য,

   f =: [:((1+]|.~]i.<./)&.>@C.@#~1=C.!.2)!A.&i.]
   f 3
┌─────┬─┬─┐
│1    │2│3│
├─────┼─┼─┤
│1 2 3│ │ │
├─────┼─┼─┤
│1 3 2│ │ │
└─────┴─┴─┘

এটি আসলে সুন্দর ... খুব ভাল হয়েছে।
হ্যারি

2

জেলি , 34 28 বাইট

L€’SḂ
ṙLR$Ṃµ€Ṣ
Œ!ŒṖ€;/Ç€ÑÐḟQ

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

ব্যাখ্যা

জেলি প্রোগ্রামের প্রতিটি লাইন একটি ফাংশন সংজ্ঞায়িত করে; নীচেরটি একটি " main"।

  • প্রথম লাইন একটি ফাংশন সংজ্ঞায়িত করে যা চক্রের পণ্যটি বিজোড় কিনা তা পরীক্ষা করে।

    L€      Length of each
      ’     Add 1 to each length 
       S    Take the sum
        Ḃ   Modulo 2
    
  • দ্বিতীয় লাইনটি [1…n]নিম্নলিখিতভাবে একটি চক্র উত্পাদনের ক্রয়ের বিভাজনকে স্বাভাবিক করে তোলে:

         µ€    For each list X in the partition:
    ṙLR$          Rotate X by each element in [1…length(X)].
        Ṃ         Get the lexicographically smallest element.
                  Thus, find the rotation so that the smallest element is in front.
           Ṣ   Sort the cycles in the partition.
    

    এটি যেমন (4 3)(2 5 1)পরিণত হবে (1 2 5)(3 4)

এখানে মূল প্রোগ্রাম। এটি nকমান্ড লাইন থেকে একটি যুক্তি নেয় এবং:

Œ!              Compute all permutations of [1…n].
  ŒṖ€           Compute all partitions of each permutation.
     ;/         Put them in one big list.
       ǀ       Normalize each of them into a cycle product.
         ÑÐḟ    Reject elements satisfying the top function,
                i.e. keep only even cycle products.
            Q   Remove duplicates.

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

না আমি চ্যালেঞ্জটিতে কেবল 3 এবং 4 রেখেছি, এখন পর্যন্ত আপনি জিতে যাচ্ছেন তবে আমি সত্যিই আরও শিখতে চাই।
হ্যারি

জেলি আসলে পার্টিশনের জন্য একটি অন্তর্নির্মিত থাকে, যা আমি ভুলে গিয়েছিলাম! ধন্যবাদ, একটি বন্ধু আমাকে মনে করিয়ে দিয়েছে। সুতরাং এখন এটি আরও দক্ষ (হ্যান্ডলস এন = 5, হ্যাঁ!) এবং আরও খাটো।
লিন

ওপিতে প্রশ্নটি সম্পাদনা করে স্পষ্ট করে দেওয়া হয়েছে যে 1-চক্র অবশ্যই প্রবর্তিত হতে হবে।
অ্যান্ডারস ক্যাসরগ

2

জাভাস্ক্রিপ্ট (ফায়ারফক্স 30-57), 220 218 212 211 বাইট

f=(a,p)=>a[2]?[for(i of a)for(j of f(a.filter(m=>m!=i),p,p^=1))[i,...j]]:[[a[p],a[p^1]]]

দুঃখজনকভাবে ৮৮ বাইট কেবলমাত্র বিকল্প গ্রুপকে এর অনুমতিগুলির তালিকা হিসাবে উত্পন্ন করতে যথেষ্ট a, তাই আউটপুটটিকে পছন্দসই ফর্ম্যাটে রূপান্তর করতে আমার অতিরিক্ত 132 130 124 123 বাইট খরচ করতে হবে:

n=>f([...Array(n).keys()],0).map(a=>a.map((e,i)=>{if(e>i){for(s+='('+-~i;e>i;[a[e],e]=[,a[e]])s+=','+-~e;s+=')'}},s='')&&s)

আমি আমার ES6 সংস্করণটি 222 216 215 বাইটে নামিয়ে ট্রিম করতে পেরেছি :

n=>(g=(a,p,t=[])=>a[2]?a.map(e=>g(a.filter(m=>m!=e),p,[...t,e],p^=1)):[...t,a[p],a[p^1]].map((e,i,a)=>{if(e>i){for(s+='('+-~i;e>i;[a[e],e]=[,a[e]])s+=','+-~e;s+=')'}},s='')&&r.push(s))([...Array(n).keys(r=[])],0)&&r

ফর্ম্যাটটি যথাযথ চক্রাকারী স্বরলিপি না থাকলে যতক্ষণ না: প্রতিটি আদেশ এবং এর চক্র পৃথকভাবে দেখানো হয়েছে ([1 2 3] [4 5] এবং <<123> <45>> উভয়ই গ্রহণযোগ্য হবে) ) এবং এক দৈর্ঘ্যের চক্রগুলি পরস্পরযুক্ত। সম্ভবত এটি আপনার উত্তর সংক্ষিপ্ত করতে পারে
হ্যারি

@ হ্যারি আমি কখনই প্রদর্শন করব না (1,2,3)(4,5)- এটি একটি বিজোড় অনুমান ! বর্তমানে আমি উদাহরণটি প্রদর্শন করব (1,2,3)(4)(5)- কেবলমাত্র দৈর্ঘ্যের চক্র অপসারণ করে আমার জন্য 6 বাইট ব্যয় হয় না তবে আমি পরিচয় চক্রের খালি ফলাফলটি দিয়ে শেষ করি যার জন্য আমাকে আরও 4 বাইট নির্ধারণ করতে হবে।
নীল

যদি আপনি বোঝাতে চেয়েছেন যে পরিচয়ের জন্য কিছুই মুদ্রিত না হয় তবে আমি যা বলেছিলাম তা আমি তা মেনে নেব as for the identity outputs of nothing ... are accepatble। এবং এছাড়াও যদি আপনি আপনার "কাঁচা ডেটা" আউটপুট করেন তবে কী প্রদর্শিত হবে তা কি (1,2,3) (4) (5) আকারে বা অন্য কিছু হিসাবে আসে?
হ্যারি

@ হ্যারি এখন পরিচয়ের ফাঁকা প্রবেশ সহ একটি দৈর্ঘ্যের চক্র বাদ দিয়ে এবং একটি বাইট সংরক্ষণের জন্য এখনও পরিচালনা করছেন!
নিল

@ হ্যারি কাঁচা ডেটা [1, 2, 0, 3, 4]সেই নির্দিষ্ট উদাহরণের জন্য হবে , সুতরাং আপনি যা চান তার কাছে কোথাও নেই।
নিল

1

জিএপি , 32 বাইট

অর্ধেক কাউন্ট কাটানোর জন্য @ ক্রিশ্চিয়ন্সআইভার্সকে ধন্যবাদ।

f:=n->List(AlternatingGroup(n));

প্রম্পটে ব্যবহার:

gap> f(4);
[ (), (1,3,2), (1,2,3), (1,4,3), (2,4,3), (1,3)(2,4), (1,2,4), (1,4)(2,3), (2,3,4), (1,3,4), (1,2)(3,4), (1,4,2) ]

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

আপনার উত্তরটি দেখায় না যেখানে একটি অনুক্রম শেষ হয় এবং পরেরটি শুরু হয়। ধরে নিই ফাংশনটির মানগুলি পার্শ্ব প্রতিক্রিয়া হিসাবে মুদ্রণের প্রয়োজন নেই, তবে অনুবাদক দ্বারা মুদ্রণের জন্য মানগুলি কেবলমাত্র ফিরিয়ে দিতে পারে, আমি করতামf:=n->List(AlternatingGroup(n));
খ্রিস্টান সিভারস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.