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


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.