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

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

1
複数のファイルをデフラグする最少ディスク書き込み
前書き ディスクがインデックスブロックを有する直鎖状の容器である0介しsize-1。 ファイルは、そのファイルで使用されるブロックインデックスの名前付きリストです。 ファイルシステムの例は次のように表されます。 15 ALPHA=3,5 BETA=11,10,7 「ディスクには15ブロックあります。ファイルALPHAの最初のブロックは、インデックス3のディスクブロックです...」 ディスクマップは次のように描画できます。 Block Index 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 Contents | | | |A0 | |A1 | |B2 | | |B1 |B0 | | | | ディスクは、ディスク内のすべてのファイルが連続して保存されている場合、最適化されていると見なされます。 あなたの目標: 特定のディスクを最適化する、法的措置の最短シーケンスを発行します。 法的な動き 移動には、ファイルの名前、移動するファイル内のブロックのインデックス、移動先のディスクブロックのインデックスの3つの情報が含まれます。 例えば ALPHA:1>4 …

15
g l f a t a n 2
時には、デカルト座標(x,y)を極座標に変換するのは本当に大変です(r,phi)。r = sqrt(x^2+y^2)非常に簡単に計算できますが、角度を計算する際にケースの区別が必要になることがよくあります。phiこれarcsinはarccos、arctanおよび他のすべての三角関数が、それぞれが円の半分のみに広がる共領域を持つためです。 多くの言語には、直交座標を極座標に変換するための組み込みatan2機能があります。または、少なくとも(x,y)角度を計算する関数がありますphi。 仕事 あなたのタスクは、2つ(浮動小数点、両方ではないゼロ)デカルト座標を取るプログラム/関数を記述することで(x,y)、対応する極角出力するphi、phiと(度、ラジアン、またはグレードでなければならないグレード Iは、平均グラジアン 1であります/ 400の完全な円)、あなたにとってより便利な方。 角度は正の方向で測定され、の角度はゼロです(1,0)。 詳細 あなたは、角度計算ビルトインを使用することはできませんphiを含む2点の座標、与えられたatan2、rect2polar、argOfComplexNumberおよび同様の機能を。ただし、通常の三角関数とその逆関数を使用できます。これらの関数は1つの引数のみを取ります。単位記号はオプションです。 半径はr非負でなければならない、とphiの範囲でなければなりません[-360°, 360°](それはあなたの出力かどうかは関係ありません270°か-90°)。 例 Input Output (1,1) 45° (0,3) 90° (-1,1) 135° (-5,0) 180° (-2,-2) 225° (0,-1.5) 270° (4,-5) 308.66°
18 code-golf  math  geometry  trigonometry  code-golf  number-theory  fibonacci  code-golf  math  sequence  fibonacci  code-golf  string  code-golf  math  graphical-output  geometry  code-golf  string  code-golf  math  geometry  code-golf  math  bitwise  number  popularity-contest  graphical-output  image-processing  fractal  code-golf  number-theory  code-golf  date  multi-threading  code-golf  math  code-golf  math  number  sequence  code-golf  math  number  sequence  arithmetic  code-golf  decision-problem  logic-gates  code-golf  decision-problem  balanced-string  code-golf  math  arithmetic  combinatorics  code-golf  expression-building  code-golf  physics  code-golf  abstract-algebra  code-golf  number  arithmetic  integer  code-golf  ascii-art  number  code-golf  number-theory  primes  code-golf  arithmetic  grid  code-golf  code-golf  sequence  code-golf  kolmogorov-complexity  compression  code-golf  math  number  arithmetic  array-manipulation  code-golf  primes  hexagonal-grid  complex-numbers  code-golf  number  counting  code-golf  math  number  arithmetic 

2
デッドロックを見つける
デッドロックを見つける マルチスレッドアプリケーションをプログラミングするときは、共有リソースにアクセスするときにさまざまなスレッドのデッドロックを避けるように注意する必要があります。デッドロックは、スレッドの試みは、他のスレッドが最初でロックされたリソースにアクセスしようとしているのと同時に、別のスレッドでロックされているリソースにアクセスするときに発生します。これは単純なケースですが、より長いリソースチェーンではより複雑になる可能性があります。 チャレンジ 各スレッドがアクセスするリソースのリストで、考えられるデッドロック状況を検出できるプログラムまたは関数を作成する必要があります。これはコードゴルフなので、バイト単位の最短回答が勝ちです。 すべてのスレッドは同時に開始されますが、その後はインターリーブの任意の組み合わせで実行できます。4つのアクションそれぞれ有する2つのスレッドがある場合、それは(各番号はそのIDを持つスレッドによって取られる行動である)として実行することができ1,1,1,1,2,2,2,2、2,2,2,2,1,1,1,1、1,2,1,2,1,2,1,2、1,1,2,2,2,2,1,1、又は任意の他の可能な組み合わせ。 入力 STDIN、関数パラメーター、または最も近い代替手段を介して、文字列のリストを受け取ります。各文字列は、形式になります+a -b。この文字列はすべて、スレッドによるリソースのlocking(+)/ unlocking(-)を表します。すべてのスレッドの間に---セパレータがあります。スレッドが既にロックしているリソースをロックしようとしないこと、およびすべてのスレッドが終了する前にロックしたすべてのリソースを明示的にロック解除することが保証されます。次に例を示します。 +a # Lock resource a +b # Lock resource b -a # Unlock resource a -b # Unlock resource b --- # Thread separator +b # Lock resource b -b # Unlock resource b 出力 入力にデッドロックの可能性が含まれていない場合、出力は偽であり、デッドロックの可能性が含まれている場合は、真実です。例えば: true false 1 0 すべて有効な出力ですが、真実/偽と明確に定義されたものはすべて受け入れられます。 …

2
ポリストリップのカウント
報奨金は、期限が切れる3日で。この質問への回答は、+ 200レピュテーションバウンティの対象となります。 Adámは、既存の回答に報酬を与えたいと考えています。「この明確に説明された回答が新しい勝者であり、APLでの最初の回答であるため、この賞金の対象となります。」 ポリストリップは、次のルールに準拠したポリオミノのサブセットです。 各ピースは1つ以上のセルで構成されます セルに3つ以上の隣接セルを含めることはできません セルは穴を囲むべきではありません 自由なポリオミノは、他のもの(拾い上げたりひっくり返したりできる部分)の厳密な変換(平行移動、回転、反射、またはグライド反射)がない場合に区別されます。無料のポリオミノを平行移動、回転、反射、またはグライド反射してもその形状は変わりません(ウィキペディア) たとえば、30個の無料のヘプタストリップ(長さ7のポリストリップ)があります。これらはすべて、14x15のグリッドにまとめられています。 画像クレジット:Miroslav Vicher ゴール n入力として正の整数を取り、個別のフリーnポリストリップを列挙するプログラム/関数を作成します。 n = 1-> 1(単一の正方形) n = 2-> 1(2つの正方形で作られた2つのポリストリップが1つだけあります) n = 3-> 2(1つは3つの正方形が直線で結合され、もう1つはL字型です) n = 4-> 3(1つの直線、1つのL字型、1つのZ字型) 。。。 テストケース: n polystrips 1 1 2 1 3 2 4 3 5 7 6 13 7 30 8 64 9 …

14
変装の順列
実数のエントリを持つ次元のベクトルが与えられた、距離に関して最も近い順列を見つけます。nnnvvvppp(1 、2 、。。。、N )(1、2、。。。、n)(1,2,...,n)l1l1l_1 詳細 より便利な場合は、代わりに順列を使用できます。最も近い順列が複数ある場合は、いずれか1つまたはすべてを出力できます。(0 、1 、。。。、N - 1 )(0、1、。。。、n−1)(0,1,...,n-1) 2つのベクトル間の距離は、として定義されl1l1l_1あなた、vあなたは、vu,vd(u 、v )= ∑私| あなたは私− v私| 。d(あなたは、v)=∑私|あなたは私−v私|。d(u,v) = \sum_i \vert u_i-v_i\vert. 必要に応じて、入力が整数のみで構成されていると想定できます。 例 [0.5 1] -> [1 2], [2 1] c*[1 1 ... 1] -> any permutation [1 4 2 6 2] -> [1 4 3 5 2], [1 …

9
XKCDカレンダーの事実
インスピレーション。許可を得て掲載。 可能なXKCDカレンダーの「事実」の1つを印刷します。 生のテキストと構造は、APLリファレンス実装またはExplain XKCDのトランスクリプト(図の下のタイトルテキストを含む)から取得できます。 ルール すべての決定ノードで、各選択肢に等しい(疑似)ランダムチャンスがなければなりません。 すべて大文字を使用できます。 3つの文を生成する必要があります。質問、理由、タイトルテキスト。 3つの文は、それぞれ、、およびで終了し?、互いに1つのスペースで区切る必要があります。.. 含めることができる余分な空白は、末尾のスペースや改行だけです。 例 Did you know that the Latest Sunset drifts out of sync with the Zodiac because of time zone legislation in Indiana? Apparently it's getting worse and no one knows why. While it may seem like trivia, it has to …

1
正方形グリッドを等しい面積の部分に分割する
この課題は、次のパズルに基づいています。セルにマークが付いnたnグリッドごとに与えられnます。あなたの仕事はn、各部分nが正確に1つのマークされたセルを含む正確なセルで構成される部分にグリッドを分割することです。 例 左側にパズルを、右側にその(ユニークな)ソリューションを示します。 チャレンジ n妥当な形式のゼロインデックス座標のセットが提供されます。 [(0,0), (0,3), (1,0), (1,1), (2,2)] そして、あなたの仕事は、有効なパーティションを返すプログラムを作成することです(これも妥当な形式で)。 [ [(0,0), (0,1), (0,2), (1,2), (1,3)], [(0,3), (0,4), (1,4), (2,4), (3,4)], [(1,0), (2,0), (3,0), (4,0), (4,1)], [(1,1), (2,1), (3,1), (3,2), (4,2)], [(2,2), (2,3), (3,3), (4,3), (4,4)] ] パズルに解決策がない場合、プログラムはエラーをスローするか空の解決策を返すことでそれを示す必要があります。 入出力の例 [(0,0)] => [[(0,0)]] [(0,0), (1,1)] => [ [(0,0), (1,0)], [(0,1), …

8
共役順列
サイズnの順列は、最初のn個の正の整数の並べ替えです。(各整数が一度だけ表示されることを意味します)。順列は、サイズnのアイテムのリストの順序を変更する関数のように扱うことができます。例えば (4 1 2 3) ["a", "b", "c", "d"] = ["d", "a", "b", "c"] したがって、順列は関数のように構成できます。 (4 1 2 3)(2 1 3 4) = (4 2 1 3) これは多くの興味深い特性をもたらします。今日私たちは共役に焦点を合わせています。置換yとx(両方ともサイズn)は、置換gとg -1(サイズnも)がある場合に限り共役です x = gyg-1 そしてGGは-1恒等置換(最初に等しいn個の適切な順序で番号)。 あなたのタスクは、標準入力メソッドを介して同じサイズの2つの順列を取得し、それらが共役かどうかを判断することです。2つの一貫した値の1つを出力する必要があります。1つは共役で、もう1つは共役ではありません。 これはコードゴルフであるため、回答はバイト単位でスコアリングされ、バイト数は少ない方が良いでしょう。 共役順列については多くの定理があり、自由に使用できます。幸運と幸せなゴルフです。 入力は、上記のような順列を表す値の順序付けされたコンテナ(1-nまたは0-n)として、または順序付けされたコンテナを使用して順列を実行する関数として受け取ることができます。関数を使用することを選択した場合、事前定義された名前ではなく、引数として使用する必要があります。 テストケース (1) (1) -> True (1 2) (2 1) -> False (2 1) …

10
制約付きで可能なすべての整数のグリッドを列挙する
問題 非負整数の3 x 3の正方形グリッドを考えてください。各行iの整数の合計はに設定されますr_i。同様に、各列jの整数の合計はに設定されますc_j。 タスクは、行と列の合計の制約が与えられた場合の、グリッドへの可能なすべての整数の割り当てを列挙するコードを記述することです。コードは一度に1つの割り当てを出力する必要があります。 入力 コードは、行制約を指定する3つの非負整数と、列制約を指定する3つの非負整数を取る必要があります。これらは有効であると仮定できます。つまり、合計または行の制約が列の制約の合計に等しいと仮定できます。コードはこれを便利な方法で実行できます。 出力 コードは、計算したさまざまな2Dグリッドを、人間が読める形式で選択して出力する必要があります。もちろん、きれいなほうがいい。出力に重複したグリッドを含めることはできません。 例 すべての行と列の制約が正確で1ある場合、6異なる可能性のみがあります。最初の行について1は、最初の3つの列のいずれかに入力できます。2番目の行については2選択肢があり、最後の行は前の2つによって完全に決定されます。グリッド内の他のすべてはに設定する必要があります0。 入力が2 1 0行および列1 1 1用であるとします。APLの美しい出力形式を使用すると、可能な整数グリッドは次のとおりです。 ┌─────┬─────┬─────┐ │0 1 1│1 0 1│1 1 0│ │1 0 0│0 1 0│0 0 1│ │0 0 0│0 0 0│0 0 0│ └─────┴─────┴─────┘ ここで、入力1 2 3は行と列3 2 1に対するものであるとします。可能な整数グリッドは次のとおりです。 ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ │0 0 1│0 0 1│0 …

25
シンプルなパターン
入力: 選択した入力形式での2つの1桁(それらをm、と呼んでみましょうn)と2つの文字(aとと呼んでみましょうb)。 出力: チュートリアルでは、のふりをしm=2, n=5, a='a', b='b'ます。 出力は、4つの入力から作成された文字列になります。resultvalueでstringを呼び出しましょう""。まず、CONCATENATE aへのresult m回なので、CONCATENATE aへresult 2回。resultに等しくなりましたaa。第二に、CONCATENATE bへのresult m回なので、CONCATENATE bへresult 2回。resultに等しくなりましたaabb。最後に、resultがすでにより長い場合n、resultlengthを持つように切り捨てnます。それ以外の場合は、のm長さの実行aとが長さになるbまで交互に続けます。最後は、長さです。resultnresultaabba5 テストケース: Input: m = 2, n = 4, a = A, b = B Output: AABB Input: m = 3, n = 8, a = A, b = B Output: AAABBBAA Input: m = …
17 code-golf  string  code-golf  arithmetic  code-golf  string  array-manipulation  rubiks-cube  code-golf  math  number  code-golf  tips  bash  code-golf  ascii-art  music  code-golf  arithmetic  code-golf  math  number  arithmetic  integer  code-golf  number  array-manipulation  code-golf  geometry  grid  set-partitions  code-golf  math  number  code-golf  combinatorics  code-golf  regular-expression  code-golf  permutations  code-golf  ascii-art  code-golf  number  array-manipulation  matrix  code-golf  kolmogorov-complexity  compile-time  cops-and-robbers  polyglot  cops-and-robbers  polyglot  code-golf  string  code-golf  string  ascii-art  matrix  animation  code-golf  ascii-art  code-golf  string  balanced-string  code-golf  integer  integer-partitions  expression-building 

1
ホールデムまたはフォールドエム?
あなたの友人が土壇場でハイステークスポーカーゲームに招待しました。コンピューター科学者として、あなたは自分のスキルを使ってゲームで優位に立つことにしました。あなたの仕事は、2 cards(あなたの手)と0, 3, 4 or 5 cards(配られたカード)を与えられ、あなたが得ることができる最高の手が何であるかを決める必要があります。7枚すべてのカードが引数として与えられた場合、答えはかなり明確です。与えられない場合、問題はより複雑になります。しかし、これはあなたが探している優位性を得るのに十分ではありません。また、残りのカードから可能な限り最高のハンドを計算して、対戦相手が持っているものを理解する必要もあります。 ホールデムリフレッシャー ホールデムについて知らない場合、ゲームの各プレイヤーは、自分の「手」として2枚のカードから始めます。3回の「ターン」の過程で、追加のカードがすべてのプレイヤー間で共有されることが明らかになります。最初のターン、3枚のカードが公開されます。2回目、さらに1回、3回目に最終カードが公開されます。最初に与えられた2枚のカードは手札を表し、後者は連続したターンで与えられた0、3、4、または5枚のカードを表します。 可能な数: [2,3,4,5,6,7,8,9,T(10),J,Q,K,A] 可能なスーツ: [S,C,H,D] フルデッキ: [2S,3S,4S,5S,6S,7S,8S,9S,TS,JS,QS,KS,AS, # Spades. 2C,3C,4C,5C,6C,7C,8C,9C,TC,JC,QC,KC,AC, # Clubs. 2H,3H,4H,5H,6H,7H,8H,9H,TH,JH,QH,KH,AH, # Hearts. 2D,3D,4D,5D,6D,7D,8D,9D,TD,JD,QD,KD,AD] # Diamonds. ハンドランキング: 1:Royal Flush (A-K-Q-J-10, all from the same suit). 2:Straight Flush (Sequential cards, all from the same suit). 3:Four-of-a-Kind (Self explanatory). 4:Full House (3-of-a-kind …

15
オイラー数を計算する
オイラー数 A(n, m)の順列の数であり、[1, 2, ..., n]正確にここでm要素が前の要素よりも大きいです。これらはライズとも呼ばれます。たとえば、の場合n = 3、3!= 6個の順列[1, 2, 3] 1 2 3 < < 2 elements are greater than the previous 1 3 2 < > 1 ... 2 1 3 > < 1 ... 2 3 1 < > 1 ... 3 1 2 > < 1 …

13
逆順列インデックス
前書き リストの辞書式の順列n個の要素は、0から番号を付けることができ、N!-1.たとえば、3!= 6個の順列が(1,2,3)あろう(1,2,3)、(1,3,2)、(2,1,3)、(2,3,1)、(3,1,2)、(3,2,1)。 順列がリストに適用されると、その要素は順列の数字と同じ順序で並べられます。たとえば、yieldsに順列(2,3,1)を適用しl = (a,b,c)ます(l[2],l[3],l[1]) = (b,c,a)。 順列の逆は、この操作を逆にする順列として定義されます。つまり、順列を適用し、その逆(またはその逆)は配列を変更しません。たとえば、yの逆(2,3,1)は(3,1,2)、(b,c,a)yieldsに適用されるため(a,b,c)です。 また、順列自体に適用される順列の逆は、整数1… nを生成します。たとえば、yields に適用(3,1,2)し(2,3,1)ます(1,2,3)。 私たちは今、関数定義revind(Xをインデックスと順列の逆置換の指標として)のx。(興味がある場合、これはA056019です。) インデックスの順列ので、私は唯一の最後の変更のkリストの項目を場合に限っ 0≤ I < K!、我々は影響を与えずに、リストの先頭に任意の数の要素を追加することができますrevind(Iを)。したがって、リストの長さは結果に影響しません。 チャレンジ あなたのタスクはrevind(x)を実装することです。入力/引数として単一の非負整数xを取り、結果を単一の非負整数として出力/返す完全なプログラムまたは関数を作成します。 入力および出力は0インデックスまたは1インデックスの場合がありますが、これはそれらの間で一貫している必要があります。 インデックスによって順列を生成する、順列のインデックスを返す、または逆順列を見つける組み込み関数は禁止されています。(すべての順列または次の順列を生成するビルトインが許可されます。) 標準のコードゴルフ規則が適用されます。 例 以下の例は0から始まります。 Input Output 0 0 1 1 2 2 3 4 4 3 5 5 6 6 13 10 42 51 100 41 1000 3628 2000 …
17 code-golf  combinatorics  permutations  code-golf  image-processing  brainfuck  encode  steganography  code-golf  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  ascii-art  fibonacci  code-golf  string  code-golf  sorting  popularity-contest  statistics  code-golf  ascii-art  kolmogorov-complexity  code-golf  code-golf  ascii-art  tic-tac-toe  code-golf  string  code-challenge  classification  test-battery  binary-matrix  code-golf  math  arithmetic  code-golf  ascii-art  random  code-golf  string  code-golf  number  binary  bitwise  code-golf  number  arithmetic  code-golf  math  ascii-art  code-golf  string  ascii-art  code-golf  string  ascii-art  code-golf  string  code-golf  counting  code-golf  number  binary  bitwise  decision-problem  code-golf  array-manipulation  code-golf  tips  brain-flak  code-challenge  quine  source-layout  code-generation  code-golf  linear-algebra  matrix  abstract-algebra  binary-matrix  code-golf  string  palindrome  code-golf  puzzle-solver  sudoku  code-golf  ascii-art  code-golf  graphical-output  internet  code-golf  ascii-art  kolmogorov-complexity  code-golf  math  code-golf  clock 

5
チョコレートの数字
与えられたmことにより、nチョコレートバー、m,n正、出力にバーを破るには、いくつかの方法mn、各ブレークがグリッド線に発生した1枚で1。 順序が重要です。ピースも区別できるため、1 x 3のチョコレートバーの両端の2つのピースは同等ではありません。 たとえば、2 x 2ブロックの場合: _ _ _ _ _ _ _ _ |_‖_| -> |‗| |_| -> |_| |‗| -> |_| |_| |_‖_| |_| |_| _ |_| _ _ |_| |_| |_| _ _ _ _ _ _ _ _ |_‖_| -> |_| |‗| -> |‗| |_| …

9
噴水を数える
噴水は、各コインがその下の行の2枚のコインに接触、または下の行であり、下段が接続されるように行のコインの配置です。これが21コイン噴水です。 あなたの課題は、指定された数のコインでいくつの噴水が作れるかを数えることです。 入力として正の整数が与えられます n。n存在するさまざまなコインファウンテンの数を出力する必要があります。 標準I / Oルール、標準の抜け穴は禁止されています。ソリューションはn = 101分以内に計算できる必要があります。 望ましい出力n = 1 ... 10: 1, 1, 2, 3, 5, 9, 15, 26, 45, 78 このシーケンスはOEIS A005169です。 これはコードゴルフです。最少バイトが勝ちます。

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