タグ付けされた質問 「combinatorics」

組み合わせ論を伴う課題に。

2
OEIS A005434を計算する
タスクは、OEIS A005434をできるだけ迅速に計算することです。 S長さのバイナリ文字列を考えnます。からインデックスを作成すると1、からまでの順序ですべてに対して完全にS[1..i+1]一致するかどうかを判断できます。例えば、S[n-i..n]i0n-1 S = 01010 与える [Y, N, Y, N, Y]. これは、ある0試合0、01一致しない場合10、010一致は010、0101一致していない1010 し、最終的に01010自分自身にマッチします。 長さの考えられるすべての異なるビット文字列を繰り返し処理するときに取得するsとsのf(n)個別の配列の数になるように定義します。YN2^nSn 観察者は、この質問が私の最近の別の質問の簡単な変形であることに気付くでしょう。しかし、私は巧妙なトリックがこれをはるかに速く簡単にすることを期待しています。 仕事 でn開始を増やすに1は、コードで出力する必要がありますn, f(n)。 回答例 のn = 1..24正解は次のとおりです。 1, 2, 3, 4, 6, 8, 10, 13, 17, 21, 27, 30, 37, 47, 57, 62, 75, 87, 102, 116, 135, 155, 180, 194 得点 あなたのコードは順番n = …

4
組み合わせのリストを繰り返しで貪欲に分割する
まず、いくつかの定義: とが与えられた場合n、マルチセットkのソートされたリストを検討してください。各マルチセットについて、繰り返しを使用して番号を選択します。k{0, 1, ..., n-1} たとえば、n=5およびの場合、次のようになりk=3ます。 [(0、0、0)、(0、0、1)、(0、0、2)、(0、0、3)、(0、0、4)、(0、1、1)、( 0、1、2)、(0、1、3)、(0、1、4)、(0、2、2)、(0、2、3)、(0、2、4)、(0、 3、3)、(0、3、4)、(0、4、4)、(1、1、1)、(1、1、2)、(1、1、3)、(1、1、 4)、(1、2、2)、(1、2、3)、(1、2、4)、(1、3、3)、(1、3、4)、(1、4、4) 、(2、2、2)、(2、2、3)、(2、2、4)、(2、3、3)、(2、3、4)、(2、4、4)、( 3、3、3)、(3、3、4)、(3、4、4)、(4、4、4)] 一部は一部のすべてのマルチセットの交差点の大きさは、少なくともある特性を有するマルチセットのリストですk-1。つまり、すべてのマルチセットを受け取り、それらを(マルチセットの交差を使用して)一度に交差させます。例[(1, 2, 2), (1, 2, 3), (1, 2, 4)]として、交差点のサイズが2であるパー​​ツはですが、[(1, 1, 3),(1, 2, 3),(1, 2, 4)]交差点のサイズが1であるため、そうではありません。 仕事 あなたのコードは2つの引数nを取る必要がありkます。次に、これらのマルチセットをソート順に貪欲に調べ、リストの一部を出力します。この場合n=5, k=3、正しいパーティション分割は次のとおりです。 (0, 0, 0), (0, 0, 1), (0, 0, 2), (0, 0, 3), (0, 0, 4) (0, 1, 1), (0, 1, …

7
ヤコビ行列を作成する
未知数のベクトルを取り、いくつかの一般的な微分可能関数を適用します。ヤコビアンは、次いで行列によって与えられるように。 たとえば、と仮定m=3しn=2ます。次に(0ベースのインデックスを使用) のヤコビアンfは この課題の目標は、このヤコビ行列を出力することです。 入力 プログラム/関数は、2つの正の整数mとを入力として受け取る必要nがfありuます。これらはそれぞれとのコンポーネントの数を表します。入力は、任意のソース(stdio、関数パラメーターなど)から取得できます。あなたはこれらが受け取られる順序を指示することができ、これはあなたの答えへのどんな入力でも一貫していなければなりません(あなたの答えで指定してください)。 出力 ヤコビ行列を表すもの。この表現は、ヤコビ行列のすべての要素を明示的に記述する必要がありますが、各項の正確な形式は、何が区別され、何が明確であり、すべてのエントリが論理的な順序で出力される限り、実装で定義されます。マトリックスを表すための受け入れ可能なフォームの例: 外部リストの各エントリがヤコビアンの行に対応し、内部リストの各エントリがヤコビアンの列に対応するリストのリスト。 各行がヤコビアンの行であり、行の各区切り文字で区切られたエントリがヤコビアンの列に対応する文字列またはテキスト出力。 マトリックスのグラフィック/ビジュアル表現。例:MatrixFormコマンドを使用したときにMathematicaによって表示されるもの 他のいくつかの密行列オブジェクト。すべてのエントリは既にメモリに格納されており、クエリできます(つまり、ジェネレータオブジェクトを使用できません)。例としては、Mathematicaが内部的にMatrixオブジェクトをどのように表すかが挙げられます エントリ形式の例: 形式の文字列。d f_i/d u_jここでi、およびjは整数です。例:d f_1/d u_2。dとf_1またx_2はの間のこれらのスペースはオプションであることに注意してください。また、アンダースコアもオプションです。 d f_i(u_1,...,u_n)/d u_jまたはの形式の文字列d f_i(u)/d u_j。つまり、関数コンポーネントの入力パラメーターf_iはオプションであり、明示的に指定するか、コンパクトな形式で残すことができます。 フォーマットされたグラフィック出力。例:式を評価したときにMathematicaが出力するものD[f_1[u_,u_2,...,u_n],u_1] 開始インデックスとその目的uを選択できますf(回答で指定してください)。出力は、必要なシンク(stdio、戻り値、出力パラメーターなど)への出力です。 テストケース 次のテストケースでは、この規則を使用していm,nます。インデックスは0ベースで表示されます。 1,1 [[d f0/d u0]] 2,1 [[d f0/d u0], [d f1/d u0]] 2 2 [[d f0/d u0, d f0/d u1], [d f1/d u0, d …

3
数に到達する方法
最初の番号の入力と第2の数(両方とも正の整数、exludedゼロ)を考えると、次のアクションを使用して、あなたが最初の第二の実施を作ることができるどのように多くの方法で決定します+1、+2と*3。操作は単純に左から右に適用されます。 例: 入力:1 2。出力:1。つまり、あなただけ得ることができる2ことによって+1、片道そう。 入力:1 3。出力:3。+2つまり+1+1、またはを実行して3を取得できます。*3 入力:1 4。出力:4。 入力:2 6。出力:6。 入力:2 7。出力:9。 入力:1 10。出力:84。 方法がない場合、たとえば100 100、または100 80、出力は0です。 入力を配列または任意の便利なセパレーター付きの文字列として受け取ることもできます。 最短のソリューションが優先されます。

13
置換を伴う組み合わせを生成する
n個の要素のセットから、サイズkの置換(または繰り返しの組み合わせ)のあるすべての組み合わせをリストします。 置換との組み合わせは、その中のすべての要素がn個の要素のセットにも含まれる、順序付けされていないマルチセットです。ご了承ください: 順不同です。したがって、異なる順序で以前に印刷されたセットは、再度印刷されません。 マルチセットです。同じ要素を複数回表示できます(必須ではありません)。これは、交換との組み合わせと通常の組み合わせの唯一の違いです。 セットは正確にk個の要素を持つ必要があります。 代わりに、それはn個の要素のそれぞれをk回含むマルチセットのサイズkのサブセットでもあります。 入力がなければならないのいずれかのn及びkの要素が最初であり、nは正または負でない整数、またはn個の要素及びKあなたが引き受けることができる、n個の要素は、互いに全て異なっています。 出力は、指定されたセットのサイズkで置き換えられたすべての組み合わせのリストである必要があります。それらと各要素の要素を任意の順序で印刷できます。 置換を伴う組み合わせを生成するビルトインは使用できません。しかし、組み込みを使用して、通常の組み合わせ、順列、タプルなどを生成できます。 これはコードゴルフで、最短のコードが勝ちます。 例 Input: 4 2 Output: [0 0] [0 1] [0 2] [0 3] [1 1] [1 2] [1 3] [2 2] [2 3] [3 3]

4
再配置の不等式
バックグラウンド 転位不平等は数字を並べ替えるに基づいて不平等です。同じ長さの数値の2つのリストがある場合、x 0、x 1、x 2 ... x n-1および同じ長さのy 0、y 1、y 2 ... y n-1で、ここでIリストの数値を並べ替えることができます。合計を最大化するには、x 0 y 0 + x 1 y 1 + x 2 y 2 + ... + x n-1 y n-1で2つのリストを並べ替えます減少しない順序。 読むWikipediaのこちらの記事を。 仕事 STDINから入力を受け取るプログラム、または数値(同じ長さ)の2つの配列(または関連するコンテナー)を受け入れる関数を作成します。 2つの配列(aとb)を受け入れる関数を作成すると仮定すると、最大化するために2番目の配列(b)の数値を再配置する方法の数がわかります。 a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+...+a[n-1]*b[n-1] この場合には、配列b [1であれば0、2 1、2 2、3 3、3 4、(明確にするための指標) [1 0、2 1、2 2、3 3、3 …

4
チェス盤のポーンが多すぎる
整数2nを指定して、2n ^ 2の黒のポーンと2n ^ 2の白のポーンを2n x 2nのチェス盤に配置して、ポーンが他のポーンを攻撃しないようにする方法の数を見つけます。 黒のポーンは白のポーンのみを攻撃でき、その逆も可能です。 通常のチェスの攻撃ルールは次のとおりです。つまり、白いポーンは正面の対角線のすぐ後ろの正方形を攻撃し、黒いポーンはすぐ後ろの斜めの正方形を攻撃します(白い観察者が見るように)。 すべての回転、反射は個別としてカウントされます。 120秒で2nの最高値のすべての可能な構成を出力できるプログラムが勝利します。(ただし、すべてのプログラムを歓迎します) たとえば、アリスのプログラムは120秒以内に最大n = 16を処理でき、ボブのプログラムは同じ時間内に最大n = 20を処理できます。ボブが勝ちます。 プラットフォーム:Linux 2.7GHz @ 4 CPU

6
n個のノードを持つすべての二分木を列挙する
整数nを指定すると、n個の内部ノードを持つすべての可能な完全な二分木を列挙します。(完全な二分木は、すべての内部ノードにちょうど2つの子を持ちます)。ツリー構造は、1が内部ノードを表し、0が外部ノード(Null)を表すツリーの事前注文トラバーサルとして出力される必要があります。 最初の数nの例を次に示します。 0: 0 1: 100 2: 11000 10100 3: 1110000 1101000 1100100 1011000 1010100 これは、最も少ないキャラクターに賞金が支払われるコードゴルフです。ツリーは、1行に1つずつ標準出力に出力されます。プログラムは、コマンドラインまたは標準入力からnを読み取る必要があります。

22
自身がn回あるリストのデカルト積
値のリストと正の整数を指定するnと、コードはリストとn時間のデカルト積を出力します。 たとえば、疑似コードでは、関数は次のようになります。 for x1 in list: for x2 in list: for x3 in list: ... for xn in list: print x1, x2, x3, ... , xn 例: repeated_cart([1,2,3], 3) 1 1 1 1 1 2 1 1 3 1 2 1 1 2 2 1 2 3 1 3 1 …

2
できるだけ早く交差する三目並べ
あたりとしてルークの要求とピーター・テイラーのほか、この課題へ。 前書き 誰もがゲームの三目並べを知っていますが、この課題では、少しひねりを加えます。クロスのみを使用します。3つの十字架を続けて配置した最初の人が負けます。興味深い事実は、誰かが負ける前の最大クロス数は6に等しいことです。 X X - X - X - X X つまり、3 x 3のボードの場合、最大数は6です。したがって、N = 3の場合、6を出力する必要があります。 N = 4または4 x 4ボードの別の例: X X - X X X - X - - - - X X - X これは最適なソリューションです。クロスの最大数が9に等しいことがわかります。12 x 12ボードの最適なソリューションは次のとおりです。 X - X - X - X X - …

3
一連のマスクのいずれかに一致するバランスの取れたバイナリ文字列をカウントする
バイナリ文字列がから引き出された文字のみを含む文字列である01。バランスバイナリ文字列が正確に多くのように含むバイナリ文字列である0としてS 1 S。 正の整数nと任意の数のマスクが与えられます。各マスクの長さは2n文字で、012から描画された文字のみが含まれます。バイナリ文字列とマスクは、長さが同じで、マスクに2がないすべての位置の文字と一致する場合に一致します。例えば、マスク011022試合バイナリ文字列011000、011001、011010、011011を。 与えられたN及び(改行で区切られた)入力としてマスクは、出力マスクの一つ以上に一致する別個の平衡バイナリ文字列の数をしなければなりません。 例 入力 3 111222 000112 122020 122210 102120 推論 唯一バランスバイナリ文字列マッチング111222である111000。 000112に一致する唯一のバランスのとれたバイナリ文字列は000111です。 マッチングバランスバイナリストリング122020がある111000(既にカウント)、110010及び101010。 122210に一致するバランスのとれたバイナリ文字列は、110010(既にカウント済み)、101010(すでにカウント済み)、および100110です。 102120に一致するバランスのとれたバイナリ文字列は、101100と100110です(すでにカウントされています)。 したがって、出力は 6 入力 10 22222222222222222222 推論 20があり、長さ20の10個のバランスのとれたバイナリ文字列があります。 出力 184756 勝者 勝者は、競争の入力を最も速く計算し、もちろん他の入力と同じように扱います。(私は明確な勝者を持ち、異なる入力が異なる勝者を与えるケースを避けるために決定されたコードを使用します。最速のコードを見つけるためのより良い方法を考えたら、そう教えてください)。 コンテスト入力 http://pastebin.com/2Dg7gbfV

7
コードゴルフ:フェイリーシーケンス(I)
チャレンジ このタスクでは、整数N(10 ^ 5未満)が与えられ、次数NのFareyシーケンスが出力されます。 入力Nは1行で指定され、入力はEOFで終了します。 入力 4 3 1 2 出力 F4 = {0/1, 1/4, 1/3, 1/2, 2/3, 3/4, 1/1} F3 = {0/1, 1/3, 1/2, 2/3, 1/1} F1 = {0/1, 1/1} F2 = {0/1, 1/2, 1/1} 制約 入力数は10 ^ 6の値を超えません 任意の言語を使用できます 最短のソリューションが勝ちます!
10 code-golf  math  code-golf  math  code-golf  number  number-theory  code-golf  math  arithmetic  repeated-transformation  code-golf  geometry  popularity-contest  code-golf  code-golf  tips  haskell  math  fastest-algorithm  code-golf  combinatorics  code-golf  math  polynomials  rational-numbers  code-golf  code-golf  popularity-contest  javascript  code-golf  kolmogorov-complexity  code-golf  code-golf  math  combinatorics  permutations  code-challenge  restricted-source  random  array-manipulation  code-challenge  generation  code-golf  code-golf  ascii-art  arithmetic  division  code-challenge  number  code-golf  math  number  binary  code-golf  ascii-art  code-golf  interpreter  stack  code-golf  internet  networking  code-golf  math  code-golf  ascii-art  code-golf  math  sequence  code-golf  hello-world  restricted-source  code-golf  ascii-art  code-golf  geometry  code-golf  kolmogorov-complexity  pi  code-golf  math  combinatorics  permutations  code-golf  math  code-challenge  ascii-art  code-golf  string  code-golf  quine  code-golf  math  floating-point  golfscript  code-golf  string  code-golf  sliding-puzzle  code-challenge  arithmetic  code-golf  math  code-golf  geometry  optimized-output 

3
超音速ドミノタイル
仕事 三つの整数読み取りプログラム書き込みmは、nは STDINから、またはコマンドライン引数のいずれかとして、寸法の矩形のすべての可能なタイル貼りの印刷N×M個により2×1及び1×2ドミノ、最終的に有効なタイリングの数。 個々のタイリングのドミノは、2×1の-場合は2つのダッシュ(|)、1×2ドミノの場合は2つの垂直バー()で表す必要があります。各タイリング(最後のタイリングを含む)の後にはラインフィードが必要です。 スコアリングの目的で、STDINから、またはプログラムが有効なタイルの数のみを印刷し、タイル自体は印刷しないようにするコマンドライン引数としてフラグを受け入れる必要もあります。 プログラムは1024バイト以下にする必要があります。m× n≤64のようなすべての入力に対して機能する必要があります。 (4x6長方形のすべてのドミノタイルを印刷することに触発されています。) 例 $ sdt 4 2 ---- ---- ||-- ||-- |--| |--| --|| --|| |||| |||| 5 $ sdt 4 2 scoring 5 得点 スコアは、フラグが設定された入力8 8に対するプログラムの実行時間によって決まります。 これを最速のコンピュータチャレンジではなく最速のコードにするために、すべての提出物を自分のコンピュータ(Intel Core i7-3770、16 GiB PC3-12800 RAM)で実行して公式スコアを決定します。 コードをコンパイルまたは実行する方法の詳細な手順を残してください。言語のコンパイラ/インタプリタの特定のバージョンが必要な場合は、その旨を表明してください。 以下の場合、私は提出物にスコアを付けないままにする権利を留保します。 私のオペレーティングシステム(Fedora 21、64ビット)用の無料の(ビールのような)コンパイラ/インタープリタはありません。 私たちの努力にもかかわらず、あなたのコードは機能しないか、私のコンピューターで正しくない出力を生成します。 コンパイルまたは実行には1時間以上かかります。 コードまたは利用可能な唯一のコンパイラ/インタープリタには、システムコールrm -rf ~または同様に魚のようなものが含まれています。 リーダーボード コンパイルと実行の両方を、コンパイルでは10,000回、実行では(コードの速度に応じて)100から10,000回のループで実行し、平均を計算して、すべての送信を再評価しました。 …

1
神聖幾何学を計算する[終了]
休業。この質問には詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善してみませんか?詳細を追加し、この投稿を編集して問題を明確にしてください。 10か月前に閉鎖。 Pathfinderという名前の卓上RPGには、Sacred Geometryと呼ばれるキャラクターが取ることができる偉業があります。これにより、数学を実行する代わりに呪文を磨くことができます。これを使用すると、キャラクターは6面の特定のスキルのランクに等しいサイコロは、スペルレベルに基づいてテーブルを参照して、その3つの素数がそのスペルレベルの「素数」であるかどうかを判断し、次の方法で素数の1つを生成できるかどうかを計算します。ロールされたすべての数値に対して、加算、減算、乗算、および除算と括弧によるグループ化のいくつかの組み合わせを実行します。 スペルレベルごとの主定数の表は次のとおりです。 +-------------+-----------------+ | Spell Level | Prime Constants | +-------------+-----------------+ | 1st | 3, 5, 7 | | 2nd | 11, 13, 17 | | 3rd | 19, 23, 29 | | 4th | 31, 37, 41 | | 5th | 43, 47, 53 | …

1
本当にユニークな配列を数える
これは、一意のセットを作成するCount配列のフォローアップです。大きな違いは、一意性の定義です。 A長さの配列を考えnます。配列には正の整数のみが含まれます。例えばA = (1,1,2,2)。f(A)のすべての空でない隣接サブアレイの合計のセットとして定義してみましょうA。この場合f(A) = {1,2,3,4,5,6}。作成する手順f(A) は次のとおりです。 のサブ配列はAです(1), (1), (2), (2), (1,1), (1,2), (2,2), (1,1,2), (1,2,2), (1,1,2,2)。それぞれの合計は1,1,2,2,2,3,4,4,5,6です。したがって、このリストから取得するセットはです{1,2,3,4,5,6}。 配列が逆になることを除いて、と同じ長さの配列が他にない場合は、配列をA 一意と呼びます。例として、しかし、同じ合計のセットを生成する長さの他の配列はありません。Bf(A) = f(B)Af((1,2,3)) = f((3,2,1)) = {1,2,3,5,6}3 仕事 所与のためのタスク、nおよびsその長さのユニークな配列の数をカウントすることです。sとの間である1と想定でき9ます。要素が特定の整数sまたはのいずれかである配列をカウントするだけで済みますs+1。たとえば、s=1カウントする配列に1およびのみが含まれている場合2。ただし、一意性の定義は、同じ長さの他の配列に関するものです。具体的な例としては、と同じ合計のセットを提供するため、一意で[1, 2, 2, 2]はありません[1, 1, 2, 3]。 配列の逆数と配列自体を数える必要があります(配列がもちろんパリンドロームでない限り)。 例 s = 1、n = 2、3、4、5、6、7、8、9の回答は次のとおりです。 4, 3, 3, 4, 4, 5, 5, 6 の場合s = …

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