যোগফলের সংখ্যার সংখ্যা


12

একটি ধনাত্মক পূর্ণসংখ্যা দেওয়া এন> 1 নির্ধারণ কত নম্বর পূর্ণসংখ্যার চেয়ে বড় 1 যার পণ্য যোগ করে তৈরি করা যেতে পারে এন । উদাহরণস্বরূপ যদি এন = 24 আমরা নীচের উপায়ে পণ্য হিসাবে এন প্রকাশ করতে পারি

24 = 24             -> 24            = 24
24 = 12 * 2         -> 12 + 2        = 14
24 = 6 * 2 * 2      -> 6 + 2 + 2     = 10
24 = 6 * 4          -> 6 + 4         = 10
24 = 3 * 2 * 2 * 2  -> 3 + 2 + 2 + 2 = 9
24 = 3 * 4 * 2      -> 3 + 4 + 2     = 9
24 = 3 * 8          -> 3 + 8         = 11

আমরা নিম্নলিখিত নম্বরগুলি এইভাবে পেতে পারি:

24, 14, 11, 10, 9

এটি মোট 5 সংখ্যা, সুতরাং আমাদের ফলাফল 5।

কার্য

একটি প্রোগ্রাম বা ফাংশন লিখুন যা ইনপুট হিসাবে n নেয় এবং এইভাবে প্রাপ্ত ফলাফলের সংখ্যা প্রদান করে।

এটি একটি প্রশ্ন তাই উত্তরগুলি বাইটে স্কোর করা হবে, কম বাইট আরও ভাল।

OEIS ক্রম

OEIS A069016


1
প্রস্তাবিত পরীক্ষার কেস 240
জোনাথন অ্যালান

যেহেতু 36 প্রচুর বিতর্ক সৃষ্টি করেছে, তাই আমি এটি একটি পরীক্ষার কেস হিসাবে প্রস্তাব করি।
ব্যবহারকারী 41805

3
@ হোয়াইট উইজার্ড 12 * 3
ব্যবসায়িক বিড়াল

1
আমি 2,2,3,3 -> 10, 2,6,3 -> 11, 2,2,9 -> 13, 12,3 -> 15, 2,18 -> 20,36 -> 36
ব্যবসায়িক বিড়াল

2
36 হতে হবে 7 কারণ তালিকায়ও (2*3)+(2*3)=12হওয়া উচিত।
জোনাথন অ্যালান

উত্তর:


6

ব্র্যাচল্যাগ , 8 বাইট

{~×≜+}ᶜ¹

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

ব্যাখ্যা

{    }ᶜ¹  Count unique results of this predicate:
 ~×       Create list of numbers whose product is the input.
   ≜      Label the list, forcing it to take a concrete value.
    +     Take its sum.

আমি কেন পুরোপুরি নিশ্চিত নই কেন কেবল 1 এর উপরে উপাদানগুলির সাথে তালিকাগুলি তৈরি করে, তবে মনে হয় এটি করা সম্ভব, যা এই চ্যালেঞ্জটিতে দুর্দান্ত কাজ করে।


এটি কেবলমাত্র 1 এর উপরে উপাদানগুলির সাথে তালিকা তৈরি করে কারণ অন্যথায় অসীম অনেকগুলি তালিকা রয়েছে যা প্রায়শই এই জাতীয় চ্যালেঞ্জগুলিতে খারাপ।
মারাত্মক রূপ দিন

4

গাইয়া , 9 14 13 বাইট

জনাথন অ্যালানকে 5 বাইটের ব্যয়ে ঠিক করা বাগটি তখন 1 বাইট গল্ফ করে।

ḍfḍ¦e¦Π¦¦Σ¦ul

এটি অনলাইন চেষ্টা করুন! বা একটি পরীক্ষা স্যুট হিসাবে চেষ্টা করুন

ব্যাখ্যা

ḍ              Prime factors
 f             Permutations
  ḍ¦           Get the partitions of each permutation
    e¦         Dump each list of partitions (1-level flatten the list)
      Π¦¦      Product of each partition
         Σ¦    Sum each group of products
           u   Deduplicate
            l  Length

আপনি কি টিআইও লিঙ্কটি সংযুক্ত আউটপুটগুলিকে 1 সহ 36 সমেত অন্তর্ভুক্ত সমন্বিত সরবরাহ করতে পারেন?
ব্যবহারকারী 41805

এটি হ'ল জেলি উত্তরের মতো ...
এরিক দ্য আউটগল্ফার

1
ওপি বলেছে 36 এর আউটপুট 5 হওয়া উচিত, 6 নয়
ব্যবহারকারী 41805


1
স্পষ্টতই গাইয়া বাইরে চলে গেছে[6 6]
ব্যবহারকারী 41805

2

জেলি ,  11 15  14 বাইট

প্রতিলিপি আপত্তি দিয়ে +4 বাইট একটি বাগ ঠিক করা (সম্ভবত আরও ভাল উপায়?)
-1 বাইট

ÆfŒ!ŒṖ€ẎP€S€QL

ইতিবাচক পূর্ণসংখ্যার গ্রহণ এবং প্রত্যাবর্তনের জন্য একটি মোনাডিক লিঙ্ক

এটি অনলাইন চেষ্টা করুন! অথবা একটি পরীক্ষা স্যুট দেখুন

কিভাবে?

আপডেট করা হচ্ছে ...

ÆfŒ!ŒṖ€ẎP€S€QL - Link: number, n      e.g. 30
Æf             - prime factors of n        [2,3,5]
  Œ!           - all permutations          [[2,3,5],[2,5,3],[3,2,5],[3,5,2],[5,2,3],[5,3,2]]
    ŒṖ€        - all partitions for €ach   [[[[2],[3],[5]],[[2],[3,5]],[[2,3],[5]],[[2,3,5]]],[[[2],[5],[3]],[[2],[5,3]],[[2,5],[3]],[[2,5,3]]],[[[3],[2],[5]],[[3],[2,5]],[[3,2],[5]],[[3,2,5]]],[[[3],[5],[2]],[[3],[5,2]],[[3,5],[2]],[[3,5,2]]],[[[5],[2],[3]],[[5],[2,3]],[[5,2],[3]],[[5,2,3]]],[[[5],[3],[2]],[[5],[3,2]],[[5,3],[2]],[[5,3,2]]]]
       Ẏ       - tighten                   [[[2],[3],[5]],[[2],[3,5]],[[2,3],[5]],[[2,3,5]],[[2],[5],[3]],[[2],[5,3]],[[2,5],[3]],[[2,5,3]],[[3],[2],[5]],[[3],[2,5]],[[3,2],[5]],[[3,2,5]],[[3],[5],[2]],[[3],[5,2]],[[3,5],[2]],[[3,5,2]],[[5],[2],[3]],[[5],[2,3]],[[5,2],[3]],[[5,2,3]],[[5],[3],[2]],[[5],[3,2]],[[5,3],[2]],[[5,3,2]]]
        P€     - product for €ach          [[30],[6,5],[10,3],[2,3,5],[30],[10,3],[6,5],[2,5,3],[30],[6,5],[15,2],[3,2,5],[30],[15,2],[6,5],[3,5,2],[30],[10,3],[15,2],[5,2,3],[30],[15,2],[10,3],[5,3,2]]
               -   ...this abuses the symmetry saving a byte over P€€
          S€   - sum €ach                  [30,11,13,10,30,13,11,10,30,11,17,10,30,17,11,10,30,13,17,10,30,17,13,10][10,17,11,30,10,17,13,30,10,13,11,30,10,13,17,30,10,11,13,30,10,11,17,30]
            Q  - de-duplicate              [30,11,13,10,17]
             L - length                    5

1

পাইথন 2 , 206 বাইট

k=lambda n,i=2:n/i*[k]and[k(n,i+1),[i]+k(n/i)][n%i<1]
def l(t):
 r=[sum(t)]
 for i,a in enumerate(t):
    for j in range(i+1,len(t)):r+=l(t[:i]+[a*t[j]]+t[i+1:j]+t[j+1:])
 return r
u=lambda n:len(set(l(k(n))))

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

ব্যাখ্যা

    # Finds the prime factors
k=lambda n,i=2:n/i*[k]and[k(n,i+1),[i]+k(n/i)][n%i<1]
    # Function for finding all possible numbers with some repetition
def l(t):
    # Add the current sum
 r=[sum(t)]
    # For each number in the current factors
 for i,a in enumerate(t):
    # For all numbers further back in the current factors, find all possible numbers when we multiply together two of the factors
    for j in range(i+1,len(t)):r+=l(t[:i]+[a*t[j]]+t[i+1:j]+t[j+1:])
 return r
    # Length of set for distinct elements
u=lambda n:len(set(l(k(n))))


1

গণিত, 110 বাইট

If[#==1,1,Length@Union[Tr/@Select[Array[f~Tuples~{#}&,Length[f=Rest@Divisors[s=#]]]~Flatten~1,Times@@#==s&]]]&

1

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

f=(n,o,s=0,i=2,q=n/i)=>(o||(o={},o[n]=t=1),i<n?(q>(q|0)|o[e=s+i+q]||(o[e]=t+=1),f(q,o,s+i),f(n,o,s,i+1)):t)

Ungolfed:

f=(n,                                 //input
   o,                                 //object to hold sums
   s=0,                               //sum accumulator
   i=2,                               //start with 2
   q=n/i                              //quotient
  )=>(
  o||(o={},o[n]=t=1),                 //if first call to function, initialize o[n]
                                      //t holds the number of unique sums
  i<n?(                               //we divide n by all numbers between 2 and n-1
    q>(q|0)|o[e=s+i+q]||(o[e]=t+=1),  //if q is integer and o[s+i+q] is uninitialized,
                                      //... make o[s+i+q] truthy and increment t
    f(q,o,s+i),                       //recurse using q and s+i
    f(n,o,s,i+1)                      //recurse using n with the next i
  ):t                                 //return t
)

পরীক্ষার কেস:

ফাংশনটি সঠিক অঙ্কগুলি গণনা করে তা যাচাই করতে, আমরা এর পরিবর্তে অবজেক্টের কীগুলি আউটপুট করতে পারি t:

f=(n,o,s=0,i=2,q=n/i)=>(o||(o={},o[n]=t=1),i<n?(q>(q|0)|o[e=s+i+q]||(o[e]=t+=1),f(q,o,s+i),f(n,o,s,i+1)):Object.keys(o))

console.log(f(24));  //9, 10, 11, 14, 24


1

পাইথন 3 , 251 বাইট

lambda n:1 if n==1else len(set(sum(z)for z in t(f(n))))
f=lambda n:[]if n==1else[[i]+f(n//i)for i in range(2,n+1)if n%i==0][0]
t=lambda l:[l] if len(l)==1else[[l[0]]+r for r in t(l[1:])]+[r[:i]+[l[0]*e]+r[i+1:]for r in t(l[1:])for i,e in enumerate(r)]

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

নকশাটি মৌলিক:

  1. এর মূল কারণগুলিতে এনকে গুণিত করুন (একটি মৌলিক উপাদানটি বেশ কয়েকবার প্রদর্শিত হতে পারে 16 -> [2,2,2,2])। এটি ফাংশন f

  2. প্রধান উপাদানগুলির তালিকার পার্টিশনগুলি গণনা করুন এবং প্রতিটি পার্টিশনে গুণকগুলি গুণান। পার্টিশনগুলি /programming//a/30134039 হিসাবে পাওয়া যায় এবং পণ্যগুলি উড়ে যাওয়ার সময় গণনা করা হয়। এটি ফাংশন t

  3. চূড়ান্ত ফাংশন এন এর প্রতিটি বিভাজনের পণ্য পায় এবং তাদের যোগফল দেয়, বিভিন্ন মানের সংখ্যা পান।

এর ফলাফল 2310=2*3*5*7*11হল 49

সম্পাদনা : সম্ভবত ঠিক করা দরকার, তবে এখনই এটি দেখার জন্য আমার কাছে সময় নেই (আমি খুব তাড়াতাড়ি আছি)। ইঙ্গিত: ফলাফল কি সঠিক 2310=2*3*5*7*11? আমি তাই মনে করি না.

সম্পাদনা 2 : বিশাল সংশোধন উপরে দেখুন. পূর্ববর্তী (বগি) সংস্করণটি ছিল: এটি অনলাইন চেষ্টা করে দেখুন!

fপ্রথম উপাদান হিসাবে (0, n)পরিবর্তে (কারণগুলির সাথে) গুণনগুলি গণনা করে (1, n)

ল্যাম্বদা প্রতিটি উপাদানকে "সাব-ফ্যাক্টর "গুলিতে বিভক্ত করে এবং সেই" উপ-কারণগুলি "যোগ করে।




@ নোটজাগানকে ধন্যবাদ, তবে প্রাথমিক কোডটি এতই ভুল ছিল ...
jferard

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