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

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

12
さまざまな組み合わせが可能
問題 値nが与えられた場合、参照(0、0)から(2n、0)に内接する山の風景を想像してください。斜面の間に空白があってはならず、山はX軸の下に下りません。解決すべき問題は次のとおりです。n(ランドスケープのサイズを定義)とピークの数k(kは常にn以下)を前提として、kのピークで山の組み合わせはいくつ可能ですか? 入力 ランドスケープの幅を表すnおよびピークの数であるk。 出力 可能な組み合わせの数だけ。 例 n = 3およびk = 2の場合、答えは3つの組み合わせです。 視覚的な例を示すために、それらは次のとおりです。 /\ /\ /\/\ /\/ \ / \/\ / \ 6(3 * 2)の位置と2つのピークを使用して可能な3つの組み合わせです。 編集:-その他の例- n k result 2 1 1 4 1 1 4 3 6 5 2 10 当選条件 標準のコードゴルフ規則が適用されます。バイトでの最短の提出が優先されます。

4
ボールをビンに入れる方法の数を数える
このタスクでは、奇数の白いボールと同じ数の黒いボールが与えられます。タスクは、各ビンに各色の奇数があるように、ボールをビンに入れるすべての方法を数えることです。 たとえば、3つの白いボールがあるとします。異なる方法は次のとおりです。 (wwwbbb) (wb)(wb)(wb) 2つの異なる可能性のために。 5つの白いボールがある場合、さまざまな方法があります。 (wwwwwbbbbb) (wwwbbb)(wb)(wb) (wwwb)(wbbb)(wb) (wb)(wb)(wb)(wb)(wb) 単一の整数である入力は、好きな方法で取得できます。出力は単一の整数です。 あなたのコードは、11個の白いボールが完全に見えるように十分に高速でなければなりません。 任意の言語またはライブラリを使用できます。

4
今、私たちはn次元で考えています!
質問:数値nが2以上の場合、座標がからまでの範囲の、2 n次元n x n x n x n x n x n ... x n格子上の点の異なるペアの数は、少なくとも距離がどれだけ離れているか?ペアとは、同じ2つのポイントが逆の順序で構成されているため、互いに区別されているとは見なされません。ペアの総数は非常に急速に増加することに注意してください。総対の数は行く、、、、、など0n - 1 n{(2,1,3,1), (3,2,1,3)}{(3,2,1,3), (2,1,3,1)}635132 6404 881 2501 088 367 840 テストケース: 2 -> 0 (all pairs are at most a distance of sqrt(2) < 2 apart) 3 -> 28 (They must either be (2,2,1) …

7
pseudoprimesをゴルフしましょう!
はじめに/背景 で、最近の議論で暗号チャット私は議論するために/のヘルプ挑戦されたフェルマー素数判定テストとカーマイケル数を。このテストは、a^(p-1) mod p==1常に素数に当てはまるがp、常にコンポジットには当てはまらないという前提に基づいています。カーマイケル番号は、基本的にはフェルマートのテストで最悪の敵です。取得するために同時に素数にならないように選択aする必要がある番号です。が共素数でない場合、本質的には、自明ではない因子を見つけましたpa^(p-1) mod p!=1apそして、誰もが知っているように、因数分解は非常に難しい場合があります。特に、すべての要素が十分に大きい場合。これで、Fermatテストが実際にはあまり使用されない理由がよくわかります(より優れたアルゴリズムがあります)。これは、(セキュリティの観点から)防御者としてのあなたが同じような量の作業を行わなければならない数があるためです。攻撃者(つまり、数を因数分解します)。 これらの数値が魅力的である理由がわかったので、可能な限り最短の方法で数値を生成します。必要に応じて、生成したコードを記憶することができます。 カーマイケル番号は、OEISではA002997としても知られています。関連する課題はすでに ありますが、サイズではなく速度が最適化されているため、ここからのエントリは競争力がありません。同じ議論が逆の方向にも当てはまり、ここのエントリはサイズを優先して速度とトレードオフをする可能性があります。 仕様 入力 これは標準のシーケンスチャレンジなので、正または負でない整数nを入力として使用します。n必要に応じて、0または1のインデックスを付けることができます(指定してください)。 出力 出力は、必要にn応じて、-番目のカーマイケル番号または最初のnカーマイケル番号のいずれかになります(指示してください)。 仕様 整数xは、xが複合である場合にのみカーマイケル数であり、のすべての整数yについてgcd(x,y)=1、それを保持しy^(x-1) mod x==1ます。 誰が勝ちますか? これはcode-golfなので、バイトで最短のコードが優先されます!標準のIOと抜け穴のルールが適用されます。 テストケース 最初のいくつかのカーマイケル番号は次のとおりです。 561,1105,1729,2465,2821,6601,8911,10585,15841, 29341,41041,46657,52633,62745,63973,75361,101101, 115921,126217,162401,172081,188461,252601,278545, 294409,314821,334153,340561,399001,410041,449065, 488881,512461
9 code-golf  math  sequence  number-theory  primes  code-golf  string  code-golf  math  combinatorics  permutations  restricted-complexity  code-golf  array-manipulation  code-golf  number  sequence  code-golf  number  sequence  code-golf  binary-matrix  code-golf  math  tips  javascript  algorithm  code-golf  string  code-golf  number  sequence  code-golf  math  arithmetic  parsing  code-golf  number  sequence  primes  code-golf  string  ascii-art  geometry  integer  code-golf  geometry  code-golf  number  array-manipulation  code-golf  math  geometry  code-golf  number  sequence  arithmetic  integer  code-golf  string  kolmogorov-complexity  code-golf  number  code-golf  number  chess  code-golf  sequence  decision-problem  subsequence  code-golf  math  number  primes  code-golf  primes  permutations  code-golf  integer  probability-theory  statistics  code-golf  string  code-golf  sequence  decision-problem  parsing  board-game  code-golf  binary  graph-theory  code-golf  board-game  classification  tic-tac-toe  code-golf  ascii-art  polyglot  code-golf  date  code-golf  geometry 

13
比較チェーンを拡張
ほとんどの言語と異なり、Python a<b<cは数学で行われるように評価し、ブール値a<bをと比較するのではなく、実際には3つの数値を比較しcます。これをC(および他の多くの)で記述する正しい方法は、a<b && b<c。 この課題の課題は、このような任意の長さの比較チェーンをPython /直感的な表現から他の言語でどのように記述するかまで拡張することです。 仕様書 プログラムは演算子を処理する必要があります。 ==, !=, <, >, <=, >=。 入力には、整数のみを使用した比較チェーンがあります。 途中の比較の真実性について心配する必要はありません。これは、純粋に構文解析/構文上の課題です。 入力には、スペースで分割することで解析を簡単にする回答を防ぐための空白はありません。 ただし、出力には、&&' のみ、または比較演算子と&&'の両方のいずれか、または両方を囲む単一のスペースがある場合がありますが、一貫性があります。 テストケース Input Output --------------------------------------------------------------- 3<4<5 3<4 && 4<5 3<4<5<6<7<8<9 3<4 && 4<5 && 5<6 && 6<7 && 7<8 && 8<9 3<5==6<19 3<5 && 5==6 && 6<19 10>=5<7!=20 10>=5 && 5<7 && …
9 code-golf  parsing  conversion  syntax  code-golf  sequence  primes  code-challenge  geometry  optimization  code-golf  graph-theory  code-golf  number-theory  primes  integer  code-golf  source-layout  cops-and-robbers  code-golf  source-layout  cops-and-robbers  code-golf  sequence  primes  integer  code-golf  math  number-theory  primes  rational-numbers  code-golf  math  sequence  number-theory  primes  code-golf  string  code-golf  math  combinatorics  permutations  restricted-complexity  code-golf  array-manipulation  code-golf  number  sequence  code-golf  number  sequence  code-golf  binary-matrix  code-golf  math  tips  javascript  algorithm  code-golf  string  code-golf  number  sequence  code-golf  math  arithmetic  parsing  code-golf  number  sequence  primes  code-golf  string  ascii-art  geometry  integer  code-golf  geometry  code-golf  number  array-manipulation  code-golf  math  geometry  code-golf  number  sequence  arithmetic  integer  code-golf  string  kolmogorov-complexity  code-golf  number  code-golf  number  chess  code-golf  sequence  decision-problem  subsequence  code-golf  math  number  primes  code-golf  primes  permutations  code-golf  integer  probability-theory  statistics  code-golf  string  code-golf  sequence  decision-problem  parsing  board-game  code-golf  binary  graph-theory  code-golf  board-game  classification  tic-tac-toe  code-golf  ascii-art  polyglot  code-golf  date  code-golf  geometry 

30
int入力nを指定して、n * reversed(n)を出力します
整数nを指定して出力n * reversed(n) reversed(n)は、reverseの桁を取得したときに取得する数値ですn。 reverse(512) = 215 reverse(1) = 1 reverse(101) = 101 >>>>>>>> func(5) = 5*5 = 25 func(12) = 12*21 = 252 func(11) = 11*11 = 121 func(659) = 659*956 = 630004 最短のコードが勝ちます! リーダーボード コードスニペットを表示 var QUESTION_ID=144816,OVERRIDE_USER=71625;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var …
9 code-golf  math  arithmetic  code-golf  math  integer  code-golf  arithmetic  integer  code-golf  sequence  base-conversion  palindrome  code-golf  math  primes  integer  code-golf  parsing  conversion  syntax  code-golf  sequence  primes  code-challenge  geometry  optimization  code-golf  graph-theory  code-golf  number-theory  primes  integer  code-golf  source-layout  cops-and-robbers  code-golf  source-layout  cops-and-robbers  code-golf  sequence  primes  integer  code-golf  math  number-theory  primes  rational-numbers  code-golf  math  sequence  number-theory  primes  code-golf  string  code-golf  math  combinatorics  permutations  restricted-complexity  code-golf  array-manipulation  code-golf  number  sequence  code-golf  number  sequence  code-golf  binary-matrix  code-golf  math  tips  javascript  algorithm  code-golf  string  code-golf  number  sequence  code-golf  math  arithmetic  parsing  code-golf  number  sequence  primes  code-golf  string  ascii-art  geometry  integer  code-golf  geometry  code-golf  number  array-manipulation  code-golf  math  geometry  code-golf  number  sequence  arithmetic  integer  code-golf  string  kolmogorov-complexity  code-golf  number  code-golf  number  chess  code-golf  sequence  decision-problem  subsequence  code-golf  math  number  primes  code-golf  primes  permutations  code-golf  integer  probability-theory  statistics  code-golf  string  code-golf  sequence  decision-problem  parsing  board-game  code-golf  binary  graph-theory  code-golf  board-game  classification  tic-tac-toe  code-golf  ascii-art  polyglot  code-golf  date  code-golf  geometry 

4
異なる部分文字列の最大数
説明文 長さnとアルファベットサイズを指定するk>0と、プログラムは、最大数の一意の部分文字列を持つパラメーターを持つ文字列の数を決定する必要があります。の場合k=2、これはOEIS A134457を生成します。 例 例えば、2210部分文字列を持っている 、2、22、221、2210、2、21、210、1、10、と0、しかし11の合計のために、2それが唯一の10個のユニークな部分文字列を持っているので、二回表示されます。 これは、3つの異なるシンボルを含む長さ4文字列のできるだけ多くが、それには36 tieing列の合計35個の他の文字列との連携0012、2101および0121。したがって、n=4およびのk=3場合、プログラムは36を出力するはずです。 テストケース n k output 0 5 1 1 3 3 5 1 1 9 2 40 2 3 6 5 5 120

5
ハミング距離シーケンスの数を数える
等しい長さの2つの文字列間のハミング距離は、対応するシンボルが異なる位置の数です。 してみましょうP長さのバイナリ文字列にするnとT長さのバイナリ文字列です2n-1。の左から右へのすべての-lengthサブストリングn間のハミング距離を計算し、それらを配列(またはリスト)に入れることができます。PnT ハミング距離シーケンスの例 ましょうP = 101とT = 01100。このペアから取得するハミング距離のシーケンスは2,2,1です。 仕事 増加のためnで始まるn=1、バイナリ文字列のすべての可能なペアを検討P長さのnとT長さのを2n-1。その2**(n+2n-1)ようなペアが存在するため、ハミング距離のシーケンスが多くなります。ただし、これらのシーケンスの多くは同一です。タスクは、どれがどれだけ異なるかを見つけることnです。 コードは、の値ごとに1つの数値を出力する必要がありますn。 スコア あなたのスコアは、nあなたのコードが私のマシンで5分間に達成した最高点です。タイミングは、そのためだけの時間ではなく、合計実行時間に対するものnです。 誰が勝ちますか 最もスコアの高い人が勝ちます。2人以上の人が同じスコアで終わる場合、それが勝つ最初の答えです。 回答例 ためにnから1の8最適な答えがあります2, 9, 48, 297, 2040, 15425, 125232, 1070553。 言語とライブラリ 利用可能な任意の言語とライブラリを使用できます。可能であれば、コードを実行できるようにするとよいでしょう。そのため、可能であれば、Linuxでコードを実行/コンパイルする方法の完全な説明を含めてください。 マイマシンタイミングは64ビットマシンで実行されます。これは、8GB RAM、AMD FX-8350 Eight-Core Processor、Radeon HD 4250を備えた標準のUbuntuインストールです。これは、コードを実行できる必要があることも意味します。 主要な回答 11におけるC ++ feersumによる。25秒。 11でC ++アンドリュー・エプスタインによります。176秒。 Neil によるJavascriptの10。54秒。 9でHaskellの nimiによります。4分59秒。 8でJavascriptを fənɛtɪkによります。10秒。

1
n交差のプライムノットの数
プライム結び目は次のとおりです。 2つの非自明なノットのノット和として記述できない非自明なノット。 説明結び目和:隣接する2ノットを入れて、 ...次に、それらの間に2本の線を引き、両側を同じストランドにし、先ほど描いた線の間の部分を削除します。この2つのノットの構成により、新しい非プライムノットが形成されます。 以下は、交差が7以下のすべてのプライムノットです(Unknotはプライムではありません)。 与えられた交差数に対して、一意のプライムノットの数を出力する必要があります。 1 0 2 0 3 1 4 1 5 2 6 3 7 7 8 21 9 49 10 165 11 552 12 2176 13 9988 14 46972 15 253293 16 1388705 私は値がより大きい入力で既知であるとは思いません16が、そのような入力が与えられた場合、コードは十分な時間を与えられた正しい結果を見つける必要があります。 OEIS-A002863

4
ドミノタイルの数
与えられた正のことのプログラムや関数を書くのnおよびmは、あなたが合うことができる有効な個別のドミノタイリングの数を計算n個でm個の四角形を。これはシーケンスであるA099390における整数列のオンライン百科事典。関数の引数、CLA、または標準入力で、適切な形式で入力を受け取ることができます。単一の整数を出力として返すか印刷する必要があります。 各タイリングはギャップを残してはならず、回転、反射などを含むすべての個別のタイリングがカウントされます。たとえば、2x3のタイリングは次のとおりです。 |-- ||| --| |-- ||| --| 入力/出力の例: 1, 9 -> 0 2, 2 -> 2 2, 3 -> 3 4, 4 -> 36 4, 6 -> 281 6, 6 -> 6728 7, 10 -> 53175517 プログラムは理論的には任意のnおよびmで機能するはずですが、プログラムで必要なメモリが多すぎる場合やデータ型がオーバーフローする場合は、免除されます。ただし、プログラムはn、m <= 8 で正しく機能する必要があります。 バイト単位の最短コードが優先されます。

4
確率を正確に計算する
このタスクは、確率を正確に計算するコードを記述することです。出力は、最も縮小された形式で分数として記述された正確な確率でなければなりません。つまり、出力んです4/8けど、むしろ1/2。 いくつかの正の整数についてn、1と-1の長さの一様にランダムな文字列を検討し、nそれをAと呼びます。次にA、最初の値に連結します。これはA[1] = A[n+1]、1からのインデックスAが長さを持っている場合 n+1です。ここでn、最初のn値が-1、0、または1であり、確率がそれぞれ1 / 4、1 / 2、1 / 4 である長さの2番目のランダムな文字列についても検討し、Bと呼びます。 たとえば、を検討してくださいn=3。以下のための可能な値Aとは、B可能性A = [-1,1,1,-1]とB=[0,1,-1]。この場合、2つの内積は0および2です。 今の内積考えるA[1,...,n]とBとの内積をA[2,...,n+1]してB。 コードは、両方の内積がゼロである確率を出力する必要があります。 以下のためにn=1、この確率明確です1/2。 nコードでどのように指定されているかは問題ではありませんが、変更方法は非常に単純で明白なはずです。 言語とライブラリ 任意の言語とライブラリを使用できます。コードを実行したいので、可能であればLinuxでコードを実行/コンパイルする方法の完全な説明を含めてください。

1
変数を代入することによる一意の出力の数
次のような一連の数式があるとします。 bacb bcab cbba abbc すべての数式で各変数が「0」または「1」に置き換えられたときに取得できる一意の結果の数を見つけるアルゴリズムを提供します。 変数と項(k!)^2を含む式があります。の面であなたの漸近を表現します。2k-1k^2k 最速のアルゴリズムが優先されます。引き分けの場合、漸近的なメモリ使用量の少ないソリューションが優先されます。それでも同点の場合は、最初の投稿が優先されます。 上記の例では、変数を代入することで次の結果を取得できます。 1110, 0110, 1001, 0100, 1000, 0000, 0010, 1101, 1111, 0001, 1011, 0111 正解は12です。とりわけ1010、上記の数式では計算できません。 私はそれぞれのソリューションを、3つのテストケースを作った230、12076および1446672。

2
最大フェンスの配置を数える
バックグラウンド フェンスを作りたいです。そのために、私はたくさんの棒を集めて、それらを地面に貼りました。実際のフェンスを作るためにポールに釘付けにするボードもたくさん集めました。私はものを構築するときに夢中になる傾向があり、おそらくそれを置く場所がなくなるまでボードをポールに釘付けし続けるでしょう。最終的に可能なフェンスを列挙してほしい。 入力 入力は、便利な形式で極の位置を表す2次元整数座標のリストです。重複は含まれていないと想定できますが、その順序については何も想定できません。 ボードは、極の間の直線で表されます。簡単にするために、水平ボードと垂直ボードのみを考慮します。間に2つの極またはボードが存在しない場合、2つの極をボードで結合できます。つまり、ボードを相互に交差させることはできません。ポールとボードの配置は、新しいボードを追加できない場合に最大になります(同等に、水平または垂直に配置された2つのポールの間にポールまたはボードが存在します)。 出力 出力は、極を使用して構築できる最大配置の数です。 例 入力リストを検討する [(3,0),(1,1),(0,2),(-1,1),(-2,0),(-1,-1),(0,-2),(1,-1)] 上から見ると、対応する極の配置は次のようになります。 o o o o o o o o これらの極を使用して構築できる3つの最大配置があります。 o o o o-o o|o o-o o----o o||| o o| | o o-o o|o o-o o o o したがって、正しい出力は3です。 ルール 関数または完全なプログラムのいずれかを記述できます。最も低いバイト数が優先され、標準の抜け穴は許可されません。 テストケース [] -> 1 [(0,0),(1,1),(2,2)] -> 1 [(0,0),(1,0),(2,0)] -> …

4
キュレーターのジレンマ
前書き あなたは、美術館のキュレーターの友人です。美術館のキュレーターは、最近4人のアーティストから現代美術を手に入れることに喜びを感じています(そのうちの何人かは、キュレーターに芸術作品がないこともあります)。これはモダンアートであるため、アーティストの作品はすべてまったく同じに見えます。あなたの友達は、コンピュータを使用して、これらのピースをどの順序で配置するかを決定したいと考えています。 プログラムの要件 プログラムは5つの整数を受け取る必要があります(関数に渡されるか、stdinを介して入力されます(または何らかの方法で))。最初の4つは、4人のアーティストのそれぞれが提供した絵画の数です。最後の値は順列インデックスですi(0ではなく1から数えます)。キュレーターiは、絵画の辞書式順序による順列を見たいと考えています。 プログラムは、この順列を適切な形式で出力する必要があります。例:abbccdまたは[0 1 1 2 2 3]。合計で10枚に満たない入力の実行時間は1時間未満でなければなりません(これは問題ないはずです)。 組み込み関数を使用して順列を計算することはできません 例 入力:0 1 2 0 2 アーティストBの絵が1つ、アーティストCの絵が2つある(そしてそれらはすべて同じに見える)とすると、辞書式順序の順列は次のようになります。 ['bcc'、 ' cbc '、 'ccb'] 強調表示された順列は、辞書式順序の2番目であるため、正しい出力になります。 入力:1 2 0 1 5 ['abbd'、 'abdb'、 'adbb'、 'babd'、 ' badb '、 'bbad'、 'bbda'、 'bdab'、 'bdba'、 'dabb'、 'dbab'、 'dbba'] テスト中 正しいはずのテストをいくつか示します。 1 2 4 1 5 …

6
順列番号付け
チャレンジ n個の整数の特定のセットについて、辞書式インデックスを出力するプログラムを記述します。 ルール 入力は、スペースで区切られた一意の非負の整数のセットでなければなりません。 順列の辞書式インデックス(範囲0〜n!-1を含む)を出力する必要があります。 順列ライブラリまたは順列ビルトインは使用できません。 インデックスの検索に役立つように、入力の順列のセットまたは順列のサブセットを生成することはできません。 また、指定された順列を次または前の(辞書式に)順列にインクリメントまたはデクリメントすることもできません。 階乗を使用せずにこれを完了する方法が見つかった場合、ボーナスポイント(-10バイト)。 n = 100の場合、実行時間は1分未満である必要があります バイト数による最短コードの勝ち 火曜日に選ばれた勝者(2014年7月22日) 順列の詳細 http://www.monkeyphysics.com/articles/read/26/numbering_permutations.html 順列グループ操作 http://lin-ear-th-inking.blogspot.com/2012/11/enumerating-permutations-using.html 例 0 1 2 --> 0 0 2 1 --> 1 1 0 2 --> 2 1 2 0 --> 3 2 0 1 --> 4 2 1 0 --> 5 0 …

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