Nのパーティションを計算します


22

あなたの挑戦は簡単です:整数Nを与えられ、合計がNになる正の整数のリストを出力します。たとえば、入力が5の場合、出力する必要があります

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

これらのリストは特定の順序で出力する必要はなく、各リスト内の数字も出力する必要はありません。たとえば、これは「5」の受け入れ可能な出力にもなります。

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

入力は正の整数であると安全に想定でき、この数値は任意の妥当な形式で取得できます。

これを行う組み込み関数使用できません

プログラムが失敗するか、大きなNに対して時間がかかりすぎる場合、これは問題ありませんが、少なくとも最初の15に対して正しい出力を生成する必要があります。

標準的な抜け穴が適用され、バイト単位の最短回答が勝ちます!

テストIO

1:
[[1]]

2:
[[1, 1], [2]]

3:
[[1, 1, 1], [1, 2], [3]]

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

5:
[[1, 1, 1, 1, 1], [1, 1, 1, 2], [1, 1, 3], [1, 2, 2], [1, 4], [2, 3], [5]]

7:
[[1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 2], [1, 1, 1, 1, 3], [1, 1, 1, 2, 2], [1, 1, 1, 4], [1, 1, 2, 3], [1, 1, 5], [1, 2, 2, 2], [1, 2, 4], [1, 3, 3], [1, 6], [2, 2, 3], [2, 5], [3, 4], [7]]

10:
[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 2], [1, 1, 1, 1, 1, 1, 1, 3], [1, 1, 1, 1, 1, 1, 2, 2], [1, 1, 1, 1, 1, 1, 4], [1, 1, 1, 1, 1, 2, 3], [1, 1, 1, 1, 1, 5], [1, 1, 1, 1, 2, 2, 2], [1, 1, 1, 1, 2, 4], [1, 1, 1, 1, 3, 3], [1, 1, 1, 1, 6], [1, 1, 1, 2, 2, 3], [1, 1, 1, 2, 5], [1, 1, 1, 3, 4], [1, 1, 1, 7], [1, 1, 2, 2, 2, 2], [1, 1, 2, 2, 4], [1, 1, 2, 3, 3], [1, 1, 2, 6], [1, 1, 3, 5], [1, 1, 4, 4], [1, 1, 8], [1, 2, 2, 2, 3], [1, 2, 2, 5], [1, 2, 3, 4], [1, 2, 7], [1, 3, 3, 3], [1, 3, 6], [1, 4, 5], [1, 9], [2, 2, 2, 2, 2], [2, 2, 2, 4], [2, 2, 3, 3], [2, 2, 6], [2, 3, 5], [2, 4, 4], [2, 8], [3, 3, 4], [3, 7], [4, 6], [5, 5], [10]]

超大規模なテストケース:15はこれを出力する必要があります

[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5], [1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2], [1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4], [1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3], [1, 1, 1, 1, 1, 1, 1, 1, 1, 6], [1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3], [1, 1, 1, 1, 1, 1, 1, 1, 2, 5], [1, 1, 1, 1, 1, 1, 1, 1, 3, 4], [1, 1, 1, 1, 1, 1, 1, 1, 7], [1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2], [1, 1, 1, 1, 1, 1, 1, 2, 2, 4], [1, 1, 1, 1, 1, 1, 1, 2, 3, 3], [1, 1, 1, 1, 1, 1, 1, 2, 6], [1, 1, 1, 1, 1, 1, 1, 3, 5], [1, 1, 1, 1, 1, 1, 1, 4, 4], [1, 1, 1, 1, 1, 1, 1, 8], [1, 1, 1, 1, 1, 1, 2, 2, 2, 3], [1, 1, 1, 1, 1, 1, 2, 2, 5], [1, 1, 1, 1, 1, 1, 2, 3, 4], [1, 1, 1, 1, 1, 1, 2, 7], [1, 1, 1, 1, 1, 1, 3, 3, 3], [1, 1, 1, 1, 1, 1, 3, 6], [1, 1, 1, 1, 1, 1, 4, 5], [1, 1, 1, 1, 1, 1, 9], [1, 1, 1, 1, 1, 2, 2, 2, 2, 2], [1, 1, 1, 1, 1, 2, 2, 2, 4], [1, 1, 1, 1, 1, 2, 2, 3, 3], [1, 1, 1, 1, 1, 2, 2, 6], [1, 1, 1, 1, 1, 2, 3, 5], [1, 1, 1, 1, 1, 2, 4, 4], [1, 1, 1, 1, 1, 2, 8], [1, 1, 1, 1, 1, 3, 3, 4], [1, 1, 1, 1, 1, 3, 7], [1, 1, 1, 1, 1, 4, 6], [1, 1, 1, 1, 1, 5, 5], [1, 1, 1, 1, 1, 10], [1, 1, 1, 1, 2, 2, 2, 2, 3], [1, 1, 1, 1, 2, 2, 2, 5], [1, 1, 1, 1, 2, 2, 3, 4], [1, 1, 1, 1, 2, 2, 7], [1, 1, 1, 1, 2, 3, 3, 3], [1, 1, 1, 1, 2, 3, 6], [1, 1, 1, 1, 2, 4, 5], [1, 1, 1, 1, 2, 9], [1, 1, 1, 1, 3, 3, 5], [1, 1, 1, 1, 3, 4, 4], [1, 1, 1, 1, 3, 8], [1, 1, 1, 1, 4, 7], [1, 1, 1, 1, 5, 6], [1, 1, 1, 1, 11], [1, 1, 1, 2, 2, 2, 2, 2, 2], [1, 1, 1, 2, 2, 2, 2, 4], [1, 1, 1, 2, 2, 2, 3, 3], [1, 1, 1, 2, 2, 2, 6], [1, 1, 1, 2, 2, 3, 5], [1, 1, 1, 2, 2, 4, 4], [1, 1, 1, 2, 2, 8], [1, 1, 1, 2, 3, 3, 4], [1, 1, 1, 2, 3, 7], [1, 1, 1, 2, 4, 6], [1, 1, 1, 2, 5, 5], [1, 1, 1, 2, 10], [1, 1, 1, 3, 3, 3, 3], [1, 1, 1, 3, 3, 6], [1, 1, 1, 3, 4, 5], [1, 1, 1, 3, 9], [1, 1, 1, 4, 4, 4], [1, 1, 1, 4, 8], [1, 1, 1, 5, 7], [1, 1, 1, 6, 6], [1, 1, 1, 12], [1, 1, 2, 2, 2, 2, 2, 3], [1, 1, 2, 2, 2, 2, 5], [1, 1, 2, 2, 2, 3, 4], [1, 1, 2, 2, 2, 7], [1, 1, 2, 2, 3, 3, 3], [1, 1, 2, 2, 3, 6], [1, 1, 2, 2, 4, 5], [1, 1, 2, 2, 9], [1, 1, 2, 3, 3, 5], [1, 1, 2, 3, 4, 4], [1, 1, 2, 3, 8], [1, 1, 2, 4, 7], [1, 1, 2, 5, 6], [1, 1, 2, 11], [1, 1, 3, 3, 3, 4], [1, 1, 3, 3, 7], [1, 1, 3, 4, 6], [1, 1, 3, 5, 5], [1, 1, 3, 10], [1, 1, 4, 4, 5], [1, 1, 4, 9], [1, 1, 5, 8], [1, 1, 6, 7], [1, 1, 13], [1, 2, 2, 2, 2, 2, 2, 2], [1, 2, 2, 2, 2, 2, 4], [1, 2, 2, 2, 2, 3, 3], [1, 2, 2, 2, 2, 6], [1, 2, 2, 2, 3, 5], [1, 2, 2, 2, 4, 4], [1, 2, 2, 2, 8], [1, 2, 2, 3, 3, 4], [1, 2, 2, 3, 7], [1, 2, 2, 4, 6], [1, 2, 2, 5, 5], [1, 2, 2, 10], [1, 2, 3, 3, 3, 3], [1, 2, 3, 3, 6], [1, 2, 3, 4, 5], [1, 2, 3, 9], [1, 2, 4, 4, 4], [1, 2, 4, 8], [1, 2, 5, 7], [1, 2, 6, 6], [1, 2, 12], [1, 3, 3, 3, 5], [1, 3, 3, 4, 4], [1, 3, 3, 8], [1, 3, 4, 7], [1, 3, 5, 6], [1, 3, 11], [1, 4, 4, 6], [1, 4, 5, 5], [1, 4, 10], [1, 5, 9], [1, 6, 8], [1, 7, 7], [1, 14], [2, 2, 2, 2, 2, 2, 3], [2, 2, 2, 2, 2, 5], [2, 2, 2, 2, 3, 4], [2, 2, 2, 2, 7], [2, 2, 2, 3, 3, 3], [2, 2, 2, 3, 6], [2, 2, 2, 4, 5], [2, 2, 2, 9], [2, 2, 3, 3, 5], [2, 2, 3, 4, 4], [2, 2, 3, 8], [2, 2, 4, 7], [2, 2, 5, 6], [2, 2, 11], [2, 3, 3, 3, 4], [2, 3, 3, 7], [2, 3, 4, 6], [2, 3, 5, 5], [2, 3, 10], [2, 4, 4, 5], [2, 4, 9], [2, 5, 8], [2, 6, 7], [2, 13], [3, 3, 3, 3, 3], [3, 3, 3, 6], [3, 3, 4, 5], [3, 3, 9], [3, 4, 4, 4], [3, 4, 8], [3, 5, 7], [3, 6, 6], [3, 12], [4, 4, 7], [4, 5, 6], [4, 11], [5, 5, 5], [5, 10], [6, 9], [7, 8], [15]]

カタログ

この投稿の下部にあるスタックスニペットは、a)言語ごとの最短ソリューションのリストとして、b)全体的なリーダーボードとして、回答からカタログを生成します。

回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。

## Language Name, N bytes

N提出物のサイズはどこですか。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば:

## Ruby, <s>104</s> <s>101</s> 96 bytes



2
ハンドルの意味を明確にできますか?
デニス

@flawr私は同意しません-すべてのパーティションを見つけることは厳密なパーティションを見つけることとは十分に異なります。ただし、これはだまされやすいターゲットである可能性があります。
メゴ

順序付けられていないパーティションを探して、パーツの数を制限しないことで、これが十分に異なると思います。
xnor

buitinの意味を明確にできますか?
リーキー修道女

回答:


6

Pyth、10 9バイト

{SMlMM./U

これが不正行為であるかどうかは定かではありませんが、ルールは整数パーティションを使用できないとのみ述べています(質問自体には明確に記載されていませんが、質問のOPによるコメントは整数パーティションと述べています)。私は文字列 リストパーティションを使用しています。これは、「マザー」リストに連結するリストのスライスを作成します。文字列ではなくリストを使用するというアイデアについて@Maltysenに感謝する必要があると思います。

私のマシンではn = 15で1秒もかかりません。

データフロー擬似コード内:

              input       // initial data
        U     range       // makes a list of length equal to input
      ./      partition   // partitions string
   lMM        length      // length of each substring in each way to partition
 SM           sort        // sort each way to partition
{             deduplicate // removes all duplicate after sorting
              print       // implicit, output final result

こちらからオンラインでお試しください。


{mSlMd./*Nバイトを節約
Leaky Nun

文字列パーティションの代わりにリストパーティションを使用する場合、7バイトを使用できます:pyth.herokuapp.com/?code
sMM

@LeakyNunまあ私は実際に試してみましたが、それはバイトを保存しませんでした。あなたのコメントを見たとき、私の答えは実際には10バイトであることがわかったので、実際に間違って数えました(geditブロックを1から開始するのを忘れていました)。
busukxuan

@Maltysen各サブリストをソートしてから、重複排除を行う必要があります。
busukxuan

@Maltysenあなたは正しかった、リストを使うことはそれを短くする。リンクしたコードに並べ替えと重複排除を追加しようとしましたが、それは役に立ちませんでしたが、* NをUに置き換えるアイデアを得たのはあなたのおかげです!ありがとう!
-busukxuan

6

Pyth、18バイト

L?b{SM+R-bsdsyMb]Y

オンラインでお試しください!y最後に関数を呼び出すために使用されます)

これはかなり速いです。

これは再帰を使用します。入力がの場合b、私のメソッドはから0までのパーティションを生成し、b-1それぞれから正しいパーティションを生成します。

たとえば、次の場合b=4

  • b=0 与える [[]]
  • b=1 与える [[1]]
  • b=2 与える [[2], [1, 1]]
  • b=3 与える [[3], [1, 2], [1, 1, 1]]

次に、の各パーティションにb=0追加します4(合計4にします)。の各パーティションにb=13(合計を作成するために4)追加します。等

これは主にその仕組みです。

L?b{SM+R-bsdsyMb]Y

L                    define a function called "y" which takes an argument: "b"
 ?b                  test for truthiness of b (in this case, test if b>0).


   {SM+R-bsdsyMb     if truthy:

             yMb         call this function from 0 to b-1.
            s            unpack each list of partitions, generating only partitions.
      +R                 to each partition (d), append:
        -                    the difference of
         b                   b (the argument) and
          sd                 the sum of d (the partition).
    SM                   sort each partition.
   {                     remove duplicates.


                ]Y   if falsey:

                 Y       yield [].
                ]        yield [[]].

5

MATL、20バイト

:"0Gq:@XNG3$Yc!dS!Xu

オンラインでお試しください!

入力15には、オンラインコンパイラで約2秒かかります。

説明

これは、パーティションポイントを生成し、パーティションの長さに変換することで機能します。これが意味することは次のとおりです。入力N = 5の場合、可能なパーティションは[2 2 1]です。これはパーティションポイント[0 2 4 5]で表され、連続する差異(または長さ)は、結果として入力番号のパーティションを提供します。

パーティションポイントのすべての配列は0で始まり、Nで終わります。中間点の数kは0からN -1 まで変化します。以下のためにNKが与えられると、中間点は数字の組み合わせとして生成することができる[1、2、...、Nは、 -1]取らkは時。

パーティションポイントのいくつかの配列は、異なる順序で同じ結果を引き起こす可能性があります。たとえば、パーティションポイント[0 1 3 5]はパーティション長[1 2 2]を与えます。つまり、前の[2 2 1]と同じ順序でのみ同じです。パーティションの長さの各配列をソートし重複削除することにより、これを考慮する必要があります。

:        % Implicitly input N. Push [1 2 ... N]. These are the possible values of k,
         % except with N instead of 0
"        % For each
  0      %   Push 0
  Gq:    %   Push [1 ... N-1]. These the possible intermediate points
  @XN    %   Push k and produce the combinations. Each k produces a 2D array with
         %   each combination on a row. The value k=N produces an empty array
  G      %   Push N
  3$Yc   %   Prepend a column of zeros and append a column of N to the array
  !d     %   Transpose. Consecutive differences of each column
  S!     %   Sort each column. Transpose
  Xu     %   Keep only unique rows
         % Implicitly end for and display all arrays in the stack

1
パーティションポイントの概念は、これを解決する非常に賢い方法です。
ニック

@ニックありがとうございます!そして、このサイトへようこそ(で活動中)!:-)
ルイスメンドー


5

J、49 42 36 35 32バイト

a:1&([:~.@,(,;}./:~@,(+{.))&>)~]

今は暗黙です!

1からnまでの整数パーティションを構築することにより、nの整数パーティションを構築します。n = 15の結果をミリ秒で計算します。

n = 1に[[1]]対応する初期整数パーティションから始めて、2つの操作の結果を結合して次の整数パーティションを構築します。各パーティションに1を追加します。各パーティションで最小値を1ずつ増やします。もちろん、重複したパーティションは削除されます。整数パーティションn = 2以降を取得するには、

Partition for n = 1
[[1]]

Partition for n = 2
[[1, 1]] join [[2]]
= [[1, 1], [2]]

Partition for n = 3
[[1, 2], [1, 1, 1]] join [[3], [1, 2]]
= [[3], [1, 2], [1, 1, 1]]

... and so on

使用法

   f =: a:1&([:~.@,(,;}./:~@,(+{.))&>)~]
   f 1
┌─┐
│1│
└─┘
   f 2
┌───┬─┐
│1 1│2│
└───┴─┘
   f 3
┌─────┬───┬─┐
│1 1 1│1 2│3│
└─────┴───┴─┘
   f 5
┌─────────┬───────┬─────┬───┬─────┬───┬─┐
│1 1 1 1 1│1 1 1 2│1 2 2│2 3│1 1 3│1 4│5│
└─────────┴───────┴─────┴───┴─────┴───┴─┘
   # f 15
176

説明

Jは不規則配列をサポートしていないため、各パーティションをボックス化して、他のパーティションに追加するときにゼロが埋め込まれないようにする必要があります。

a:1&([:~.@,(,;}./:~@,(+{.))&>)~]  Input: n
a:                                The empty box
                               ]  Get the input n
  1&(                        )~   Repeat n times with an initial array of one empty box
           (              )&>       Operate on each partition
                     (   )            Hook a partition
                       {.               Get its head (the smallest value)
  1                   +                 Add 1 to it
  1           }.                      Drop the first value in each partition
                    ,                 Join the previous two results
                /:~@                  Sort it
  1         ,                         Prepend a 1 to the initial partition
             ;                        Box the last two results and join them
     [:   ,                         Flatten the pairs of boxes
       ~.@                          Remove duplicates and return
                                  Return the final result where each box
                                  is a partition of n

4

Python、65バイト

Python 3

def f(n,i=1,l=[]):n or print(l);i>n or[f(n-i,i,[i]+l),f(n,i+1,l)]

この関数はパーティションを蓄積し、選択項目に分岐して出力を出力します。パーティションに入れる1の数、2の数などを決定します。各値についてi、それ

  • サイズの一部を追加しi、に減少nするn-i、または
  • に移動します i+1

の場合i>n、これ以上部品を作成できないため、停止します。場合nに該当する0、パーティションは成功したので、印刷されています。

Python 2

f=lambda n,i=1:n/i and[l+[i]for l in f(n-i,i)]+f(n,i+1)or[[]][n:]

パーティションのリストを出力する再帰的な方法。Python 3コードと同様に、パーツサイズiをカウントアップし、各ステップでサイズの別のパーツを追加するiか停止するかを決定します。

これらは両方ともn=15ほぼ瞬時に実行されます。


3

Javascript、194バイト

p=n=>{var a=[];for(var i=1;i<=n-i;i+=1){for(v of p(n-i)){v.push(i);a.push(v.sort())}}a.push([n]);return a};n=5;s=p(n).map(v=>JSON.stringify(v));s=s.filter((v,i)=>s.indexOf(v)==i);console.log(s);

縮小されていない

文字列を並べ替えて比較することで一意を見つけることはかなりハッキングですが、おそらくスペースを節約できます。

p = n => {
    var a = [];

    for (var i = 1; i <= n-i; i++)
    {
        for (v of p(n-i)) {
            v.push(i);
            a.push(v.sort());
        }
    }

    a.push([n]);

    return a;
}

n = 5;
s = p(n).map(v =>  JSON.stringify(v));
s = s.filter((v,i) => s.indexOf(v) == i);
console.log(s);

4
Quite a hack but saves spaceそれがまさにこのサイトの目的です。:D
DJMcMayhem

2

Python 3.5、82 72バイト

f=lambda n:{(*sorted([*p,i]),)for i in range(1,n)for p in f(n-i)}|{(n,)}

タプルのセットを返します。n = 15はすぐに終了します。

repl.itでテストします


2

Haskell、44バイト

0%m=[[]]
n%m=[j:r|j<-[m..n],r<-(n-j)%j]
(%1)

補助関数n%mはの分割nを部分に与え≥m、主関数はを使用しm=1ます。また、各第一のエントリの枝jm≤j≤nの残りのパーティションに再帰、n-j少なくともある部分にj。基本ケースでn==0は、空のパーティションのみが提供されます。




1

J、39バイト

[:~.i.<@\:~@(#;.1~"1 0)1,@{@;(<1 0)#~<:

これは整数を取り、ボックス化された配列の配列を返す単項動詞です。ここで試してみてください。使用法:

   p =: [:~.i.<@\:~@(#;.1~"1 0)1,@{@;(<1 0)#~<:
   p 3
+-----+---+-+
|1 1 1|2 1|3|
+-----+---+-+

入力15では、マシン上で約1秒間実行されます。

説明

この課題は、カタログ({)およびカット(;.)の仕事のように見えました。アルゴリズムの概要は次のとおりです。

  • 長さ0-1の配列をすべて生成します n
  • それらのそれぞれについて、ダミーの長さをカットします-n、1に沿って arrayを各部分の長さをリストします。
  • 長さを並べ替え、結果から重複する配列を削除します。

どうやら、ルイスメンドーも同じ考えを持っていたです。

コードの説明:

[:~.i.<@\:~@(#;.1~"1 0)1,@{@;(<1 0)#~<:   Input is n.
                                     <:   n-1
                                   #~     copies of
                             (<1 0)       the boxed array [1 0].
                       1    ;             Prepend the boxed array [1].
                          {@              Catalog: produces all combinations of taking one
                                          item from each box, in a high-dimensional matrix.
                        ,@                Flatten the matrix. This results in a list of all
                                          boxed 0-1 arrays of length n that begin with a 1.
    i.                                    The array A =: 0, 1, ..., n-1.
            (     "1 0)                   For each of the boxed arrays B:
              ;.1~                          cut A along the occurrences of 1s in B,
             #                              take the length of each part,
        \:~@                                sort the lengths,
      <@                                    and put the result in a box.
[:~.                                      Remove duplicate boxes.

;.再びカットの非常に素晴らしい使用。
マイル

1

Brachylog、33バイト(非競合)

:1f:oad.
:1eI,.##lI,.:{.>0}a+?,.=

バグ修正のため、これは競合しません。

これは15私のマシンでは約1秒かかります。以下のために20、より大きなこれはでクラッシュOut of global stack例外。

説明

これは、いかなる種類のパーティション化ビルトインも使用せず、代わりに+制約伝播を通じて双方向に機能するという事実を使用します。

  • 主な述語:

    :1f                       Find the list of all valid outputs of predicate 1
       :oa                    Sort each element of that list
          d.                  Output is that list of sorted lists minus all duplicates
    
  • 述語1:

    :1eI                      I is an integer between Input and 1
        .##lI,                Output is a list of length I
              .:{.>0}a        Elements of Output are integers greater than 0
                      +?,     The sum of the elements of Output is Input
                         .=   Assign values to the elements of Output
    

1

Mathematica、62 54バイト

Inner[#2~Table~#&,FrobeniusSolve[r=Range@#,#],r,Join]&

整数のパーティションNについて解くことにより求めることができるn個の非負整数のタプル(C 1C 2、...、C N)は、そのC 1 + 2 C 2 + ... + N CのN = nnのFrobeniusSolveすべての整数パーティションを見つけるために、それぞれの値のコピーを作成するために使用されるこの方程式のすべての解を見つけることができます。


...そして、これはどのように組み込みではないのですか?
リーキー修道女

@LeakyNun FrobeniusSolveは整数分割を見つけません。与えられた形式の方程式に対する非負整数の すべての解見つけます。x1 ... xNa1 x1 + a2 x2 + ... aN xN = ba1 ... aNb。および。
マイル

0

JavaScript (Firefox 30-57)79 ES6、65バイト

f=(n,m=1,a=[])=>n?m>n?[]:[...f(n-m,m,[...a,m]),...f(n,m+1,a)]:[a]

@xnorのPythonソリューションのポート。(もしあなたがm同様に再帰できることに気づいたならn...)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.