বিভাজনকারী বিভাজনকারীদের ভাগ করা


17

n(ট1,ট2,।।।,টমি)টআমি⩾2 যেমন যেট1⋅ট2⋅।।।⋅টমি=এন এবং

ট1|ট2 , ট2|ট3 , ... , টমি-1|টমি।
এখানেএকটি|খ উপায়েখ এর গুণিতক হয়একটি বলে "একটি ভাগ খ"। তাহলেএন>1 সমস্ত এন্ট্রিটআমি অন্তত হতে হবে2 । জন্যএন=1 আমরা এই ধরনের কোন ফ্যাক্টর আছে এবং এর ফলে আমরা একটি খালি tuple পেতে।

যদি আপনি কৌতূহলী হন তবে এটি কোথা থেকে এসেছে: এই পচনটি সংখ্যা তত্ত্বে আক্রমণকারী ফ্যাক্টর পচন হিসাবে পরিচিত এবং এটি চূড়ান্তভাবে উত্পন্ন আবেলীয় গোষ্ঠীর শ্রেণিবদ্ধকরণে ব্যবহৃত হয় ।

চ্যালেঞ্জ

প্রদত্ত এন আউটপুট সব ধরনের tuples (ট1,ট2,।।।,টমি) দেওয়া এন ঠিক একবার যাই হোক না কেন মত আপনি অর্ডার। স্ট্যান্ডার্ড আউটপুট ফর্ম্যাটগুলি অনুমোদিত।

উদাহরণ

  1: () (empty tuple)
  2: (2)
  3: (3)
  4: (2,2), (4)
  5: (5)
  6: (6)
  7: (7)
  8: (2,2,2), (2,4), (8)
  9: (3,3), (9)
 10: (10)
 11: (11)
 12: (2,6), (12)
108: (2,54), (3,3,12), (3,6,6), (3,36), (6,18), (108)

সম্পর্কিত: http://oeis.org/A000688 , এন এর সমস্ত গুণক পার্টিশন তালিকাবদ্ধ করুন


আমরা কি প্রতিটি টিপলকে বিপরীত ক্রমে আউটপুট করতে পারি? (উদাঃ 12,3,3)
— আর্নল্ড

1
@ আর্নল্ড হ্যাঁ, আমি যতক্ষণ না এটি আরোহণ বা অবতরণ ক্রমে বাছাই করা হয় ততক্ষণ এটি ঠিক হওয়া উচিত!
— flawr

আমরা কি ইনপুটটি পূর্ণসংখ্যা> = 2 এ সীমাবদ্ধ করতে পারি? যদি না হয় এটি বিদ্যমান কিছু উত্তর অকার্যকর করবে?
— নিক কেনেডি

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

উত্তর:



3

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

Òœ€.œP€`êʒüÖP

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

Ò                      # prime factorization of the input
 œ€.œ                  # all partitions
     P                 # product of each sublist
      €`               # flatten
        ê              # sorted uniquified
         ʒ             # filter by:
          üÖ           #  pairwise divisible-by (yields list of 0s or 1s)
            P          #  product (will be 1 iff the list is all 1s)

ব্যবহারের সুন্দর ভাবে Òœ€.œPsublists জন্য। আমি আরও ছোট কিছু খুঁজে পেতে অবশ্যই সমস্যা ছিল .. কেবল যদি সেখানে অনুরূপ Åœপরিবর্তে পণ্যের মতো তবে একটি বিল্টিন থাকত । ;)
— কেভিন ক্রুইজসেন

এন = 1 এর জন্য ব্যর্থ হয়েছে (প্রশ্নে মন্তব্যগুলি দেখুন)
— নিক কেনেডি


2

জাভাস্ক্রিপ্ট (ভি 8) ,  73  70 বাইট

অবতরণ ক্রমে টিপলগুলি মুদ্রণ করে (টমি,টমি-1,।।।,ট1)।

f=(n,d=2,a=[])=>n>1?d>n||f(n,d+1,a,d%a[0]||f(n/d,d,[d,...a])):print(a)

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

মন্তব্য

f = (             // f is a recursive function taking:
  n,              //   n   = input
  d = 2,          //   d   = current divisor
  a = []          //   a[] = list of divisors
) =>              //
  n > 1 ?         // if n is greater than 1:
    d > n ||      //   unless d is greater than n,
    f(            //   do a recursive call with:
      n,          //     -> n unchanged
      d + 1,      //     -> d + 1
      a,          //     -> a[] unchanged
      d % a[0] || //     unless the previous divisor does not divide the current one,
      f(          //     do another recursive call with:
        n / d,    //       -> n / d
        d,        //       -> d unchanged
        [d, ...a] //       -> d preprended to a[]
      )           //     end of inner recursive call
    )             //   end of outer recursive call
  :               // else:
    print(a)      //   this is a valid list of divisors: print it

1

05 এ বি 1 ই , 17 15 14 বাইট

ѦIиæʒPQ}êʒüÖP

বৃহত্তর পরীক্ষার ক্ষেত্রে খুব ধীর।

-১ বাইট @ গ্রিমিকে ধন্যবাদ ।

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

ব্যাখ্যা:

Ñ               # Get all divisors of the (implicit) input-integer
 ¦              # Remove the first value (the 1)
  Iи            # Repeat this list (flattened) the input amount of times
                #  i.e. with input 4 we now have [2,4,2,4,2,4,2,4]
    æ           # Take the powerset of this list
     ʒ  }       # Filter it by:
      PQ        #  Where the product is equal to the (implicit) input
         ê      # Then sort and uniquify the filtered lists
          ʒ     # And filter it further by:
           ü    #  Loop over each overlapping pair of values
            Ö   #   And check if the first value is divisible by the second value
             P  #  Check if this is truthy for all pairs

                # (after which the result is output implicitly)

@ গ্রিমি ধন্যবাদ এবং বিভাজনকারীদের জন্য ভাল কল। এটি এখনও খুব ধীরএন=8, তবে সমস্ত বিট সাহায্য করে এবং পারফরম্যান্স উন্নত করতে যদি কোনও অতিরিক্ত বাইটের জন্য ব্যয় হয় না, তবে কেন এটি ব্যবহার করবেন না। :)
— কেভিন ক্রুইজসেন

1
13 এবং দ্রুত । মনে হচ্ছে এটি আরও খাটো হতে পারে।
— গ্রিমি

1

জাভাস্ক্রিপ্ট, 115 বাইট

f=(n,a=[],i=1)=>{for(;i++<n;)n%i||(a=a.concat(f(n/i).filter(e=>!(e[0]%i)).map(e=>[i].concat(e))));return n>1?a:[a]}

আমি পরে একটি ব্যাখ্যা লিখব


1

ওল্ফ্রাম ভাষা (গণিত) , 78 76 72 71 67 বাইট

If[#>(p=1##2),Join@@If[i∣##,##~#0~i,{}]~Table~{i,2,#/p},{{##2}}]&

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

পুনরাবৃত্ত অনুসন্ধান অনুসন্ধান গাছ।


ব্রুট ফোর্স সলিউশন, 64 বাইট :

Union@Cases[Range@#~Tuples~#,{a__,__}/;1a==#&&a>=2&&1∣a:>{a}]&

এন এর সমস্ত গুণক পার্টিশন তালিকাভুক্ত করার জন্য আমার গাণিতিক সমাধানের তুচ্ছ পরিবর্তন ।

যেহেতু এটি পরীক্ষা করা দরকার এনএনtuples, একই যুক্তি ব্যবহার করে আরও দক্ষ সংস্করণ চেষ্টা করুন ।


0

জাপট , 22 বাইট

â Åï c à f@¥XשXäv eÃâ

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

â Åï c à f@¥XשXäv eÃâ     :Implicit input of integer U
â                          :Divisors
  Å                        :Slice off the first element, removing the 1
   ï                       :Cartesian product
     c                     :Flatten
       à                   :Combinations
         f                 :Filter by
          @                :Passing each sub-array X through the following function
           ¥               :  Test U for equality with
            X×             :  X reduced by multiplication
              ©            :  Logical AND with
               Xä          :  Consecutive pairs of X
                 v         :  Reduced by divisibility
                   e       :  All truthy?
                    Ã      :End filter
                     â     :Deduplicate
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.