আমার কত পার্টিশন আছে?


16

ধনাত্মক পূর্ণসংখ্যার পার্টিশন সংখ্যাটিকে ধনাত্মক পূর্ণসংখ্যার সমষ্টি হিসাবে প্রকাশ করার উপায় হিসাবে সংজ্ঞায়িত করা হয়। অন্য কথায়, এটিতে পূর্ণসংখ্যার পার্টিশনের সংখ্যা। উদাহরণস্বরূপ, সংখ্যাটিতে 4নিম্নলিখিত পার্টিটন রয়েছে:

[[1, 1, 1, 1], [1, 1, 2], [1, 3], [2, 2], [4]]

সুতরাং, এটির 5পার্টিশন রয়েছে। এটি OEIS A000041


কার্য

ধনাত্মক পূর্ণসংখ্যা দেওয়া N তার পার্টিশনের নম্বর নির্ধারণ করে।

  • সমস্ত স্ট্যান্ডার্ড বিধি প্রযোজ্য।

  • ইনপুট এবং আউটপুট কোনও যুক্তিসঙ্গত মাধ্যমে পরিচালনা করা যেতে পারে।

  • এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।


পরীক্ষার কেস

ইনপুট | আউটপুট

1 | 1
2 | 2
3 | 3
4 | 5
5 | 7
6 | 11
7 | 15
8 | 22
9 | 30
10 | 42

1
আমি প্রায় সদর্থক এটি একটি সদৃশ ...
ডিজেএমসিএমহেম

@ ডিজেএমসিএমহেম উম্ম, ঠিক আছে আপনি যদি একটি সদৃশ খুঁজে পান আমাকে জানাবেন। দুঃখিত, আমি এই সব নতুন!

1
@ ডিজেএমসিএমহেম সম্ভবত আপনি এই প্রশ্নটি জিজ্ঞাসা করেছেন যেহেতু এটি "উত্পাদন" থেকে "গণনা" করার একটি ছোট পদক্ষেপ তবে এগুলি গণনা করার জন্য আপনাকে অবশ্যই সমস্ত পার্টিশন তৈরি করতে হবে না ...
জিউসেপ্পে

1
এই এক একটি প্রতারিত হয়, ব্যতীত যে একটি popcon (?) এবং খুবই বিস্তৃত যেমন বন্ধ করা হয়েছিল। IMHO এটি ভাল লিখিত এবং খোলা রাখা উচিত, পুরানো একটি (আবার খোলা এবং) ডুপ হিসাবে বন্ধ করা উচিত
রড

2
@ রড, এটি একটি খারাপ পপ-কন, তবে ডুপের নিকট কারণে স্যুইচ করা কোনও উন্নতি হবে না। পারফরম্যান্সের প্রয়োজনীয়তা কিছু উত্তর পোর্ট করতে বাধা থাকবে (কেউ কেউ কয়েক মিনিটের মধ্যে 1000 এর 24061467864032622473692149727991 পার্টিশন উত্পন্ন করবে না); এবং হার্ডি-রামানুজন-রাদেমাচার বাস্তবায়ন ঠিক গল্ফ হয় না ... তবে, এই প্রশ্নটি এবং সেই প্রশ্নটি নিয়ে কী করা উচিত সে সম্পর্কে মেটায় আলোচনা শুরু করা উপযুক্ত।
পিটার টেলর

উত্তর:


13

পাইথ , 3 বাইট

l./

এখানে চেষ্টা করুন! বা একটি পরীক্ষা স্যুট চেষ্টা করুন।

উত্তরটি কোডটি লেখার চেয়ে ফর্ম্যাট করতে অনেক বেশি সময় নিয়েছিল: পি।


কিভাবে?

পাইথ হ'ল কাজের জন্য সঠিক উপায়।

l। / অন্তর্নিহিত ইনপুট সহ সম্পূর্ণ প্রোগ্রাম।

 ./ পূর্ণসংখ্যা পার্টিশন। ইতিবাচক পূর্ণসংখ্যার সমস্ত সাজানো তালিকাগুলি ইনপুটটিতে যুক্ত করুন।
l দৈর্ঘ্য।
      সুস্পষ্টভাবে ফলাফল আউটপুট।


8

পাইথন 2 , 85 83 বাইট

-২ বাইট @ নটজাগানকে ধন্যবাদ

lambda n:n<1or sum(sum(i*((n-k)%i<1)for i in range(1,n+1))*p(k)for k in range(n))/n

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

OEIS A000041 থেকে পুনরাবৃত্ত সূত্র ব্যবহার করে ।



84 বাইট । এই ক্ষেত্রে ==0সমতুল্য <1সম্পাদনা: নটজাগানের দৃষ্টিভঙ্গিটি ব্যবহার করুন
মিঃ এক্সকডার

@ মিঃ এক্সকোডার আসল কোডটির <1পরিবর্তে আসলে ছিল ==0, তবে টিআইও কোড দেয় নি।
notjagan


8

ইমোজিকোড 0.5, 204 201 বাইট

🐋🚂🍇🐖🅰️➡🚂🍇🍊⬅🐕1🍇🍎1🍉🍮s 0🔂k⏩0🐕🍇🍦t➖🐕k🍮r t🔂i⏩1 t🍇🍊😛🚮t i 0🍇🍮➕r i🍉🍉🍮➕s✖r🅰️k🍉🍎➗s🐕🍉🍉

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

-৩ বাইটগুলি "2 এর চেয়ে কম" এর পরিবর্তে "1 এর চেয়ে কম বা সমান" ব্যবহার করে কারণ "কম" চেয়ে ইমোজিতে বেশ দীর্ঘ ইউটিএফ -8 এনকোডিং রয়েছে। tবাইট গণনা প্রভাবিত না করে একটি সতর্কতা নিঃশব্দ করতে হিমশীতলও করে তুলেছে ।

Named (পূর্ণসংখ্যা) শ্রেণিটি 🅰️ নামের একটি পদ্ধতি সহ প্রসারিত করে 🅰️ আপনি একটি সহজ প্রোগ্রাম লিখতে পারেন যা ইনপুট থেকে নম্বর নেয়, নাম্বারে কল করে the ফলাফলটি প্রিন্ট করে:

🏁🍇
 🍦str🔷🔡😯🔤Please enter a number🔤
 🍊🍦num🚂str 10🍇
  😀🔡🅰️num 10
 🍉🍓🍇
  😀🔤Learn what a number is, you moron!🔤
 🍉
🍉

এই অংশটি বার্তা এবং ত্রুটি পরিচালনার হাতছাড়া করে প্রচুর গল্ফ করা যেতে পারে, তবে এটি স্কোরের মধ্যে অন্তর্ভুক্ত নয়, তাই পথের মধ্যে পঠনযোগ্যতার উন্নতি করার পরিবর্তে আমি পরিবর্তে ইমোজিকোডের আরও বৈশিষ্ট্যগুলি দেখাতে পছন্দ করি।

Ungolfed

🐋🚂🍇
 🐖🅰️➡🚂🍇
  🍊◀️🐕2🍇
   🍎1
  🍉
  🍮sum 0
  🔂k⏩0🐕🍇
   🍦nmk➖🐕k
   🍮sig nmk
   🔂i⏩1 nmk🍇
    🍊😛🚮nmk i 0🍇
     🍮➕sig i
    🍉
   🍉
   🍮➕sum✖sig🅰️k
  🍉
  🍎➗sum🐕
 🍉
🍉

ব্যাখ্যা

দ্রষ্টব্য: ইমোজি কোডে 0.5 তে প্রচুর ইমোজি পছন্দ পছন্দ করে না। এটি 0.x, সর্বোপরি। 0.6 এটি ঠিক করবে।

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

প্রোগ্রামটি কেবল কয়েকটি প্রকারে পরিচালিত হয়: 🚂 হল পূর্ণসংখ্যার প্রকার, 🔡 স্ট্রিং প্রকার এবং ⏩ হ'ল পরিসর প্রকার। কয়েকটি বুলিয়ান (👌) খুব উপস্থিত হয় তবে সেগুলি শুধুমাত্র শর্তে ব্যবহৃত হয়। বুলিয়ানরা যথাক্রমে সত্য এবং মিথ্যা অনুসারে 👍 বা 👎 এর মান নিতে পারে।

ইমোজিকোডে বর্তমানে কোনও অপারেটর নেই, সুতরাং সংযোজন এবং অন্যান্য অপারেশনগুলি যা সাধারণত অপারেটরগুলি ফাংশন হিসাবে প্রয়োগ করা হয়, এক্সপ্রেশনগুলি কার্যকরভাবে উপসর্গ চিহ্নটি ব্যবহার করে । অপারেটরগুলিও 0.6 তে পরিকল্পনা করা হয়েছে।

প্রথমে পরীক্ষা প্রোগ্রামটি মোকাবেলা করা যাক।

🏁

এটি 🏁 ব্লক, যা অন্য ভাষার প্রধানের সাথে তুলনা করা যেতে পারে।

🍇 ... 🍉

আঙ্গুর এবং তরমুজ ইমোজিকোডে কোড ব্লক ঘোষণা করে।

🍦str🔷🔡😯🔤Please enter a number🔤

এটি নামের "হিমায়িত" হিসাবে ঘোষণা করে strএবং এটি ইনিশিয়ালাইজার (কনস্ট্রাক্টর) ব্যবহার করে তৈরি করা একটি নতুন স্ট্রিংয়ের মান সেট করে which যা স্ট্রিং হিসাবে একটি প্রম্পট নেয় এবং তারপরে ব্যবহারকারী থেকে একটি লাইন ইনপুট করে। ভেরিয়েবলের পরিবর্তে হিমশীতল কেন ব্যবহার করবেন? এটি পরিবর্তন হবে না, সুতরাং একটি ভেরিয়েবল একটি সতর্কতা নির্গত করতে পারে।

🍊🍦num🚂str 10

আসুন এটি ভেঙে দিন। 🚂str 10strআর্গুমেন্টের সাথে হিমায়িতকে on পদ্ধতিটি কল করে 10. কনভেনশন অনুসারে, কোনও প্রকারের নামের সাথে নামযুক্ত পদ্ধতিগুলি বস্তুকে সেই ধরণের রূপান্তর করে। 10 হল পূর্ণসংখ্যার রূপান্তরকরণের জন্য ব্যবহারের ভিত্তি। এই পদ্ধতিটি একটি alচ্ছিক 🍬🚂,। বিকল্পগুলিতে বেস টাইপের মান বা কিছুই নয়, ইত্যাদি থাকতে পারে ⚡ যখন স্ট্রিংটিতে একটি নম্বর থাকে না, তখন ⚡ ফিরিয়ে দেওয়া হয়। মানটি ব্যবহার করতে, একটিকে using ব্যবহার করে alচ্ছিক আবরণ আনতে হবে, যা মান is হলে রানটাইম ত্রুটি উত্থাপন করে ⚡ অতএব, একটি alচ্ছিক আনারপ্যাটিংয়ের আগে কিছুতেই নিরীক্ষণ করা ভাল অভ্যাস। এটি এতটা সাধারণ, বাস্তবে ইমোজিকোডের জন্য এটি একটি শর্টহ্যান্ড রয়েছে। সাধারণত, 🍊একটি "যদি" হয়।🍊🍦 variable expressionঅর্থ: এক্সপ্রেশন মূল্যায়ন। Alচ্ছিকতে কিছুই নেই, শর্তটি 👎 (মিথ্যা) এ মূল্যায়ন করে। অন্যথায়, একটি হিমায়িত নামটিvariablealচ্ছিকের মোড়কানো মান দিয়ে তৈরি করা হয় এবং শর্তটি 👍, (সত্য) এর সাথে মূল্যায়ন করে। অতএব, সাধারণ ব্যবহারে, 🍇 ... 🍉শর্তাধীন নিম্নলিখিত ব্লকটি প্রবেশ করানো হয়।

😀🔡🅰️num 10

Code হ'ল প্রধান কোডটি 🐋 ব্যবহার করে to যা পার্টিশনের সংখ্যা গণনা করে। এটি কল করে 🅰️ numহিমায়িত অবস্থায় আমরা শর্তসাপেক্ষে ঘোষণা করে এবং ফলাফলটি base পদ্ধতি অনুসারে বেস 10 ব্যবহার করে একটি স্ট্রিংয়ে রূপান্তর করি। তারপরে, the ফলাফল মুদ্রণ করে।

🍓🍇 ... 🍉

🍓 এর অর্থ "অন্য", সুতরাং যখন ব্যবহারকারী কোনও নম্বর সঠিকভাবে প্রবেশ করায় না তখন এই ব্লকটি প্রবেশ করা হয়।

😀🔤Learn what a number is, you moron!🔤

আক্ষরিক স্ট্রিং মুদ্রণ।

এখন, আসুন মূল প্রোগ্রামটি দেখুন। আমি বর্ণা ;্য সংস্করণটি ব্যাখ্যা করব; গল্ফযুক্ত সংস্করণটির সবেমাত্র সাদা স্থান মুছে ফেলা হয়েছে এবং ভেরিয়েবলগুলি একক বর্ণের নামের সাথে পুনরায় নামকরণ করা হয়েছে।

🐋🚂🍇 ... 🍉

🚂 শ্রেণি প্রসারিত করুন। এটি এমন একটি বৈশিষ্ট্য যা সাধারণত প্রোগ্রামিং ভাষায় পাওয়া যায় না। সুপার ক্লাস হিসাবে 🚂 দিয়ে একটি নতুন শ্রেণি তৈরির পরিবর্তে সরাসরি 🐋 সংশোধন করে।

🐖🅰️➡🚂🍇 ... 🍉

Named নামে একটি নতুন পদ্ধতি তৈরি করে যা একটি returns দেয় 🚂 এটি সূত্রটি ব্যবহার করে গণনা করা পার্টিশনের সংখ্যা প্রদান করেa(n) = (1/n) * Sum_{k=0..n-1} sigma(n-k)*a(k)

🍊⬅🐕1🍇
 🍎1
🍉

Other অন্যান্য ভাষার সাথে thisবা এর অনুরূপ selfএবং পদ্ধতিটি যে আহ্বান করা হয়েছিল তাকে বোঝায়। এই প্রয়োগটি পুনরাবৃত্তিযোগ্য, সুতরাং এটি সমাপ্তি শর্ত: পদ্ধতিটিতে যে নম্বরটি কল করা হয়েছিল এটি যদি 1 এর চেয়ে কম বা সমান হয়, তবে 1 প্রত্যাবর্তন করুন।

🍮sum 0

একটি নতুন ভেরিয়েবল তৈরি করুন sumএবং এটি 0 তে সেট করুন Imp

🔂k⏩0🐕

Anything প্রোটোকল প্রয়োগ করে এমন কোনও কিছুর উপরে পুনরাবৃত্তি করে 🔂🐚🚂 যখন ⏩ বাস্তবের ক্ষেত্রে ঘটে এমন একটি পরিসীমা আক্ষরিক 🔂🐚🚂 একটি রেঞ্জের একটি শুরুর মান, একটি স্টপ মান এবং একটি ধাপের মান থাকে, যা ধরে নেওয়া হয় যদি 1 হয় start < stop, বা -1 অন্যথায় হয়। রেঞ্জ আক্ষরিক তৈরি করতে One ব্যবহার করেও কেউ পদক্ষেপের মান নির্দিষ্ট করতে পারে। শুরুর মানটি অন্তর্ভুক্ত, স্টপ মানটি একচেটিয়া, তাই এটি সূত্রের সমান for k in range(n)বা সমান Sum_{k=0..n-1}

🍦nmk➖🐕k

আমাদের সিগমা (এন - কে), বা n - kঅন্য কথায় বিভাজকের যোগফল গণনা করতে হবে এবং যুক্তিটি কয়েকবার প্রয়োজন হয়, তাই কিছু বাইট সংরক্ষণ n - kকরতে ভেরিয়েবলের মধ্যে এই সঞ্চয় করে nmk

🍮sig nmk
🔂i⏩1 nmk

এটি sigসিগমার আর্গুমেন্টে পরিবর্তনশীল সেট করে এবং 1 থেকে শুরু করে সমস্ত সংখ্যায় পুনরাবৃত্তি করে nmk - 1। আমি চলকটি 0 তে আরম্ভ করতে পারি এবং 1..nmk এর উপরে পুনরাবৃত্তি করতে পারি তবে এটি এভাবে করা সংক্ষিপ্ত।

🍊😛🚮nmk i 0

The অবশিষ্ট, বা মডুলাস এবং equality সমতার জন্য চেকগুলি গণনা করে, তাই শর্তটি হবে iof যদি এর বিভাজক হয় nmk

🍮➕sig i

+= -= >>=নিকৃষ্ট, ইমোজি-মুক্ত ভাষাগুলির মধ্যে কিছু অপারেটর পরিবারের মতো এটি কল দ্বারা একটি অ্যাসাইনমেন্ট । এই লাইন হিসাবে হিসাবে লেখা যেতে পারে 🍮 sig ➕ sig i। সুতরাং, অভ্যন্তরীণ লুপটি শেষ হওয়ার পরে , বা sigএর বিভাজকের যোগফল থাকবেn - ksigma(n - k)

🍮➕sum✖sig🅰️k

কল দ্বারা আরেকটি কার্যভার, সুতরাং sigma(n - k) * A(k)এটি সূত্রের মতো মোটে যোগ করে।

🍎➗sum🐕

অবশেষে, যোগফলটি n দ্বারা ভাগ হয়ে ভাগফলটি ফিরে আসবে। এই ব্যাখ্যাটি সম্ভবত কোডটি লেখার জন্য ততবার সময় নিয়েছে ...



3

অক্টাভা, 18 বাইট

partcnt(input(''))

অন্তর্নির্মিত ফাংশন অংশবিশেষ ব্যবহার করে।

@ ব্যবহার করে কোনও বেনামি ফাংশন ব্যবহার করে এটি সঠিকভাবে পাওয়া যায় না, কিছু সহায়তার প্রশংসা করা হবে।


3

রেটিনা , 34 বাইট

.+
$*
+%1`\B
;$'¶$`,
,

%O`1+
@`.+

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

ব্যাখ্যা

.+
$*

ইনপুটটি আনারিতে রূপান্তর করুন।

+%1`\B
;$'¶$`,

এটি অবিচ্ছিন্ন অঙ্কের তালিকার সমস্ত 2 এন -1 পার্টিশন গণনা করে । আমরা বারবার ( +) প্রথম ( 1) অ-শব্দের সীমানা ( প্রতিটি পংক্তির \Bমধ্যবর্তী অবস্থান 1) ( %এবং দুটি লাইনের মধ্যবর্তী অবস্থান ) ( ) এর সাথে মিলিয়ে এবং এর পরিবর্তে ;সমস্ত কিছু ( $'), একটি লাইনফিড ( ), সামনের সবকিছু দিয়ে এটি ( $`) এবং ,। উদাহরণ:

1;1,111

হয়ে

      vv
1;1,1;11
1;1,1,11
^^^^^

কোথায় vনম্বরের ফলাফলের $'এবং ^চিহ্ন ফলাফলের $`। এটি একবারে দুটি পৃথক প্রতিস্থাপনের ফলাফল পাওয়ার জন্য একটি সাধারণ প্রতিভা (আমরা দুটি মূল প্রতিস্থাপন সম্পূর্ণ করার জন্য মূলত দুটি ;এবং ,প্রতিস্থাপন উভয়ই সন্নিবেশ করি এবং পাশাপাশি স্ট্রিংয়ের হারিয়ে যাওয়া "অর্ধেকগুলি")।

আমরা ;প্রকৃত পার্টিশন এবং ,ঠিক স্থানধারক হিসাবে বিবেচনা করব যা \Bপরবর্তীগুলি সেখানে মিলতে বাধা দেয় । এরপরে ...

,

... আমরা সেই কমাগুলি সরিয়েছি। এটি আমাদের সমস্ত পার্টিশন দেয়। ইনপুট জন্য উদাহরণস্বরূপ 4আমরা পেতে:

1;1;1;1
1;1;11
1;11;1
1;111
11;1;1
11;11
111;1
1111

আমরা যদিও অর্ডারটি যত্ন করি না:

%O`1+

এটি 1প্রতিটি লাইনে রানের ক্রমগুলি সাজায় যাতে আমরা আনর্ডারড পার্টিশন পাই।

@`.+

পরিশেষে, আমরা এর অনন্য ( @) ম্যাচগুলি গণনা করি .+, অর্থাৎ আমরা কতগুলি স্বতন্ত্র লাইন / পার্টিশন পেয়েছি। আমি বহু @বছর আগে এই বিকল্পটি যুক্ত করেছি , তারপরে এটি সম্পূর্ণরূপে ভুলে গিয়েছিলাম এবং কেবল সম্প্রতি এটি পুনরায় আবিষ্কার করে। এই ক্ষেত্রে, এটি লাইনগুলি প্রথম প্রতিলিপি ছাড়িয়ে একটি বাইট সংরক্ষণ করে D`


3

পাইথন 2 , 54 53 বাইট

f=lambda n,k=1:1+sum(f(n-j,j)for j in range(k,n/2+1))

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

কিভাবে এটা কাজ করে

প্রত্যেকটি পার্টিশন এন একটি তালিকা হিসাবে প্রতিনিধিত্ব করা যাবে এক্স = [X 1 , ⋯, এক্স মি ] যেমন যে এক্স 1 + + ⋯ + X মি = ঢ । যদি আমাদের সেই x 1 ⋯ ⋯ ≤ x মিটার প্রয়োজন হয় তবে এই উপস্থাপনাটি অনন্য হয়ে ওঠে ।

আমরা একটি অক্জিলিয়ারী ফাংশন নির্ধারণ চ (ঢ, ট) , মোট ছাত্র যে লোয়ার বাউন্ড সঙ্গে পার্টিশন , অর্থাত্, তালিকা x যেমন যে এক্স 1 + + ⋯ + X মি = ঢ এবং ট ≤ এক্স 1 ≤ ⋯ ≤ এক্স মি । ইনপুট এন এর জন্য , চ্যালেঞ্জটি এফ (এন, 1) এর আউটপুট জিজ্ঞাসা করে ।

ধনাত্মক পূর্ণসংখ্যার জন্য এন এবং কে যেমন কে ≤ n , নীচে আবদ্ধ কে সহ কমপক্ষে একটি পার্টিশন থাকে : সিঙ্গলটন তালিকা [n] । যদি এন = কে (বিশেষত, যদি এন = 1 ) হয় তবে এটিই কেবল যোগ্য পার্টিশন। অন্যদিকে, যদি কে> এন হয় তবে এর কোনও সমাধান নেই।

যদি কে <এন , নীচে নীচে বাম থেকে ডানদিকে তৈরি করে আমরা পার্টিশনগুলি পুনরাবৃত্তভাবে গণনা করতে পারি। প্রতিটি জে যেমন কে ≤ জে ≤ n / 2 এর জন্য আমরা পার্টিশন তৈরি করতে পারি [x 1 , ⋯, x মি ] = [জে, ওয়াই 1 , ⋯, ওয়াই এম -1 ] । আমাদের কাছে সেই x 1 + ⋯ + x m = n যদি এবং কেবল y 1 + ⋯ + y m-1 = n - j থাকে । তদ্ব্যতীত, x 1 ≤ ⋯ m x মি এবং যদি কেবল j j y 1 ≤ ⋯ ≤ y m-1 হয়

সুতরাং, x এর n এর পার্টিশনগুলি j এর সাথে শুরু হওয়া f (n - j, j) হিসাবে গণনা করা যেতে পারে , যা বৈধ পার্টিশন y এর গণনা করে । যে জে ≤ n / 2 আবশ্যক করে , আমরা নিশ্চিত করি যে j - n - জ , তাই কমপক্ষে একটি y আছে । আমরা এইভাবে নির্ভর করতে পারেন সব এর পার্টিশন এন summing দ্বারা 1 (জন্য [এন] এবং) - (ঞ, জে ঢ) চ সব বৈধ মান জন্য

কোড গাণিতিক ফাংশন-এর একটি সহজবোধ্য বাস্তবায়ন তদ্ব্যতীত , এটি কে কে ডিফল্ট করে তোলে 1 , সুতরাং ইনপুট এন এর জন্য f (n, 1)f(n) এর মান গণনা করে ।


ওহ বাহ, এটা অবিশ্বাস্য! এটি কীভাবে কাজ করে সে সম্পর্কে আপনি একটি ব্যাখ্যা যুক্ত করতে পারেন?

আমি আমার উত্তর সম্পাদনা করেছি। যদি কিছু অস্পষ্ট থাকে তবে দয়া করে আমাকে জানান।
ডেনিস

3

জে , 37 35 বাইট

0{]1&((#.]*>:@#.~/.~&.q:@#\%#),])1:

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

ব্যাখ্যা

0{]1&((#.]*>:@#.~/.~&.q:@#\%#),])1:  Input: n
                                 1:  Constant 1
  ]                                  Get n
   1&(                          )    Repeat n times on x = [1]
                          \            For each prefix
                         #               Length
                      q:@                Prime factors
                 /.~&                    Group equal factors
              #.~                        Compute p+p^2+...+p^k for each group
           >:@                           Increment
                    &.q:                 Product
                           %           Divide
                            #          Length
         ]                             Get x
          *                            Times
   1   #.                              Sum
                              ,        Joim
                               ]       Get x
                                       Set this as next value of x
0{                                   Select value at index 0

আমি ডম্বস্ট্রাক এবং মূ ?়, একটি ব্যাখ্যা পোস্ট করা মন?
কোলে

1
@ কোল এটি একটি পুনরাবৃত্তি পদ্ধতি যা পি (0) = 1 এর সমাধান দিয়ে শুরু হয় এবং সূত্রটি ব্যবহার করে পরবর্তী তৈরি করে p(n) = sum(sigma(n-k) * p(k) for k = 0 to n-1) / n। আমি পরে কোডটির ব্যাখ্যা যুক্ত করব যখন আমি বিশ্বাস করি এটির উল্লেখযোগ্যভাবে ছোট করা যাবে না।
মাইল

2

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

n=>(z=(a,b)=>[...Array(a)].map(b))(++n**n,(_,a)=>z[F=z(n,_=>a%(a/=n,n)|0).sort().join`+`]=b+=eval(F)==n-1&!z[F],b=0)|b||1

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

সতর্কতা: সময় এবং স্থান জটিলতা হ'ল घाষ্টীয়। বড় সংখ্যক জন্য খুব ধীর কাজ করে।


2

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

মিঃ এক্সকোডার -9 বাইট নটজাগান বাই -1

lambda n:len(p(n))
p=lambda n,I=1:{(n,)}|{y+(x,)for x in range(I,n/2+1)for y in p(n-x,x)}

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



@ মিঃ এক্সকোডার এমনকি জানেন না, কেন আমি ল্যাম্বদা ডি ব্যবহার করিনি:
মৃত পসুম

হেই, ¯\_(ツ)_/¯- বিটিডাব্লু, আপনি যদি এটি একটি সম্পূর্ণ ফাংশন রাখতে চান, আপনার ভেরিয়েবলের প্রয়োজন হবে না, 94 বাইট
মিঃ এক্সকডার

@ মিঃ এক্সকোডার হ্যাঁ .. কিছুক্ষণ পরে কোডগলফ থেকে দূরে থাকার পরে আমি মরিচা অনুভব করছি: সি
ডেড পসাম



0

জাভা 8 (229 বাইট)

import java.util.function.*;class A{static int j=0;static BiConsumer<Integer,Integer>f=(n,m)->{if(n==0)j++;else for(int i=Math.min(m,n);i>=1;i--)A.f.accept(n-i,i);};static Function<Integer,Integer>g=n->{f.accept(n,n);return j;};}

Ungolfed:

import java.util.function.*;

class A {
    static int j = 0;
    static BiConsumer<Integer, Integer> f = (n, m) -> {
        if (n == 0)
            j++;
        else
            for (int i = Math.min(m, n); i >= 1; i--)
                A.f.accept(n - i, i);
    };
    static Function<Integer, Integer> g = n -> {
        f.accept(n, n);
        return j;
    };
}

0

জেলি , 3 বাইট

দ্য Œṗপরমাণু সম্প্রতি যোগ করা হয়েছে, এবং এটি মানে "পূর্ণসংখ্যা পার্টিশন"।

ŒṗL

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

--L - সম্পূর্ণ প্রোগ্রাম।

Œṗ - পূর্ণসংখ্যা পার্টিশন।
  এল - দৈর্ঘ্য।
      - স্পষ্টভাবে আউটপুট।


0

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

n=>(f=(i,s)=>i?[for(c of Array(1+n))f(i-1,s,s-=i)]:c+=!s)(n,n,c=0)&&c

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

n=>(f=(i,s)=>i?[...Array(1+n)].map(_=>f(i-1,s,s-=i)):c+=!s)(n,n,c=0)&&c

সময়ের জটিলতা O (n ^ n), তাই সাবধান হন (এর জন্য আমার কম্পিউটারে একটি স্পষ্ট বিলম্ব উপস্থিত হবে F(6))

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