タグ付けされた質問 「graph-theory」

グラフに関する問題については、オブジェクト間の関係をモデル化するために使用される数学的構造。

7
グラフとしての3x3x3キューブの表面
あなたの仕事は、それぞれがルービックキューブのファセットに対応する54の頂点を持つグラフを生成することです。対応するファセットが辺を共有する場合、2つの頂点間にエッジがあります。 ルール アルゴリズムでグラフを表すために、隣接リスト、隣接行列、エッジリスト、または適切な形式を出力することを選択できます。(人間が読める視覚的なグラフは、ほとんどの場合、一般的にアルゴリズムの合理的な形式ではありません。) すべての頂点を自分自身に隣接させることも、隣接させないこともできます。 エッジごとに両方向を含める(セルフループでは1〜2回カウントする)か、エッジを1回だけ出力しますが、ウェイを混在させることはできません。 頂点の番号を付け直したり、いくつかの番号をスキップしたり、任意の方法で頂点に番号以外のラベルを使用することもできます。他の人があなたの答えをより簡単な方法でチェックできるように、番号が明らかでない場合は番号も投稿する必要があります。 これはコードゴルフです。バイト単位の最短コードが優先されます。 出力例 これは、例で使用されている頂点の番号付けです。 0 1 2 3 4 5 6 7 8 9 10 11 18 19 20 27 28 29 36 37 38 12 13 14 21 22 23 30 31 32 39 40 41 15 16 17 24 25 26 33 34 …

7
最長のハイパーキューブパス
チャレンジ 同じ長さの2つの異なるビット文字列が与えられます。(たとえば、000および111。)あなたの目標は、次のような一方から他方へのパスを見つけることです。 各ステップで、あなたは(あなたがから行くことができる唯一の1ビットを変更する000のいずれかに001、010、100)。 同じビット文字列に2回アクセスすることはできません。 これらの制約の下で、パスは可能な限り長くなります。 たとえば、から000に進むと111、次のパスを取ることができます 000, 001, 011, 010, 110, 100, 101, 111 これは、長さ3の8ビット文字列すべてにアクセスするため、可能な限り長くする必要があります。 ルール 標準の抜け穴が適用されます。 入力は、ゼロと1の2つの文字列、またはゼロと1の2つの配列、またはブール値の2つの配列として受け取ることができます。 入力を正しいバイナリ表現を持つ2つの整数(書き込みおよびas および無効)として受け取ることはできません。00011107 必要に応じて、ビット文字列の長さを入力として使用できます。 プログラムは、一度に1つずつアクセスしたビット文字列を出力するか、アクセスしたビット文字列の配列を返すことにより(それぞれ入力と同じ形式で)パスを出力できます。 出力には、パスの開始と終了(入力)が含まれている必要があります。 これはcode-golfで、バイト単位の最短コードが勝ちです。 例 0 1 -> 0, 1 10 01 -> 10, 00, 01 or 10, 11, 01 000 111 -> any of the following: 000, 100, 110, …

28
逆モジュラスを計算する
タスク: の値を出力します。xここでa mod x = b、2つの値がありますa,b。 仮定 aそして、b常に正の整数になります 常に解決策があるとは限りません x 複数のソリューションが存在する場合は、少なくとも1つを出力します。 解決策がない場合は、何も出力しないか、解決策が存在しないという兆候を出力します。 組み込みが許可されています(他の数学的アプローチほど面白くありません) 出力は常に整数です 例 A, B >> POSSIBLE OUTPUTS 5, 2 >> 3 9, 4 >> 5 8, 2 >> 3, 6 6, 6 >> 7, (ANY NUMBER > 6) 8, 7 >> NO SOLUTION 2, 4 >> NO …
18 code-golf  math  number-theory  code-golf  number  integer  code-golf  string  code-golf  music  code-golf  arithmetic  array-manipulation  decision-problem  code-golf  math  rational-numbers  code-golf  code-golf  graphical-output  hardware  code-golf  math  number  code-golf  string  parsing  natural-language  code-golf  tips  brain-flak  code-golf  graph-theory  code-golf  number  polynomials  king-of-the-hill  code-golf  ascii-art  kolmogorov-complexity  animation  king-of-the-hill  code-golf  tips  code-golf  ascii-art  code-golf  string  array-manipulation  data-structures  code-golf  math  number  code-golf  string  base-conversion  binary  code-golf  decision-problem  graph-theory  code-golf  math  polynomials  code-golf  kolmogorov-complexity  physics  code-golf  sequence  number-theory  code-golf  math  integer-partitions  code-golf  array-manipulation  random  permutations  code-golf  string  decision-problem 

7
グラフの最長サイクル
有向グラフを指定すると、最長のサイクルが出力されます。 ルール 任意の妥当な入力形式が許可されます(エッジのリスト、接続性マトリックスなど)。 ラベルは重要ではないので、入力に与えられていない追加情報が含まれていない限り、あなたが必要または希望するラベルに制限を課すことができます(たとえば、サイクル内のノードが整数でラベル付けされ、他のノードはアルファベット文字列でラベル付けされます)。 サイクルは、すべて接続されているノードのシーケンスであり、サイクルの開始および終了であるノード以外のノードは繰り返されません([1, 2, 3, 1]サイクルですが、そうで[1, 2, 3, 2, 1]はありません)。 グラフが非循環の場合、最長サイクルの長さは0であるため、空の出力(空のリスト、出力なしなど)が生成されます。 サイクル内のノードのリストの最後で最初のノードを繰り返すことはオプションです(同じサイクル[1, 2, 3, 1]を[1, 2, 3]示します)。 同じ長さのサイクルが複数ある場合、それらのいずれかまたはすべてが出力される場合があります。 ビルトインは使用できますが、ソリューションで使用する場合は、簡単なビルトインを使用しない代替ソリューション(すべてのサイクルを出力するビルトインなど)を含めることをお勧めします。ただし、代替ソリューションはスコアにはまったくカウントされないため、完全にオプションです。 テストケース これらのテストケースでは、入力はエッジのリスト(最初の要素はソースノードで、2番目の要素は宛先ノード)として与えられ、出力は最初/最後のノードの繰り返しのないノードのリストです。 [(0, 0), (0, 1)] -> [0] [(0, 1), (1, 2)] -> [] [(0, 1), (1, 0)] -> [0, 1] [(0, 1), (1, 2), (1, 3), (2, 4), …

2
針で干し草の山を見つける
干し草の山で針を見つけるのにひねりを加えるには、ちょうど 1本の 針を含む最大の連続した干し草を見つける必要があります。対角線上のセルは接続できず、左/右/上/下のみ接続できることに注意してください。 入力 'N'(針)および'#'(干し草)文字の配列(またはユーザー入力行の数、選択)。入力にはこれらの2文字のみが含まれ、それぞれ少なくとも1文字が含まれている必要があります。例えば: N#N#N #NN## ###N# N##N# 出力 有効な最大の干し草のサイズ。この例では、11を出力します(11個の干し草と1本の針があります)。 # # ## ###N# ## # これはcode-golfなので、最短のコードが優先されます。標準的な抜け穴の制限が適用されます。 テストケース 左に入力、右に可能な最大の干し草の山 ケース1:4 N## ## NN# # #NN N #N# # ケース2:7 ### ### N#N # NNN N ### ### ケース3:10 N###N ### #N#N# #N# #N#N# # # N###N ### ケース4:10 N#N#N …

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 すべて有効な出力ですが、真実/偽と明確に定義されたものはすべて受け入れられます。 …

4
ジョーンズ氏が自転車で往復するのを手伝ってください
ジョーンズ氏は自転車で往復したいと考えています。彼は複数の都市を任意の順序で訪れたいと考えていますが、休日に同じ場所に2度いるのが嫌いなので、自分のルートを自分自身に渡ってはいけません。彼はサイクリングが大好きなので、ルートの長さはまったく関係ありませんが、ターゲットなしで風景を走り回るのは嫌です。彼が好むルートは、迂回することなく、市内から直線で他の都市へのルートです。 ジョーンズ氏は情熱的なコードゴルファーであるため、一連の都市を考慮して、彼のために往復旅行を計画するプログラムを見つけてもらいたいと考えています。入力の形式はA (B|C)です。Aは都市の名前でBありC、その座標です。座標は正で、1000未満であると想定できます。都市のデータセットは行区切りです。次に、入力例がどのように見えるかの例を示します。 SomeTown(1 | 10) ACity(3 | 4) どこでも(7 | 7) ホーム(5 | 1) ジョーンズ氏はつまらないものではなく、有用なプログラムを持ちたいだけです。したがって、これらの基準を満たす限り、出力がどのように見えるかを自分で決めることができます。 出力は都市の地図であり、それらの間にルートが描かれています。何かが正しい場合、ルートはそれ自体と重ならないようにし、開始した場所で終了する 座標は通常のプログラミングのようです:(1 | 1)はNWコーナーにあります。読みやすいように、マップの境界線に一種の定規を追加します 都市名は地図上に書き留める必要がありますが、地図上のどこかで説明されている略語を自由に使用してください マップはASCIIアートまたは画像の両方にすることができます 出力を読みやすくする 出力は次のようになります。 1234567 1 D 2 * * 3 * * 4 B * 5 * * 6 * * 7 * C 8 * ** 9 * …

12
このシーケンスはグラフィックですか?
グラフィック・シーケンスはそれぞれのノードに対してエッジの数を表す正の整数のシーケンスである単純なグラフ。たとえば、シーケンス2 1 1は、2つのエッジと1つの接続を持つ2つの3つのノードを持つグラフを示します。 すべてのシーケンスがグラフィックシーケンスであるとは限りません。たとえば、2 12つのノードを接続してその一方に2つのエッジを持たせる方法がないため、グラフィックシーケンスではありません。 仕事 合理的な方法で整数のシーケンスを取得します。これには、整数の配列とそのサイズ、符号なし整数のリンクリスト、および倍精度ベクトルが含まれますが、これらに限定されません。入力にゼロがないと仮定できます。また、入力が最小から最大または最大から最小にソートされていると想定することもできます。 シーケンスがグラフィックシーケンスであるかどうかを出力する必要があります。それ以外の場合、偽の値である場合は、真の値。 ゴール これはコードゴルフです。目標はプログラムのバイト数を最小限にすることです テストケース 大きい順に並べ替え -> True 3 3 3 2 2 2 1 1 1 -> True 3 3 2 2 1 1 -> True 3 3 2 -> False 8 1 1 1 1 1 1 1 1 -> True 1 …

8
長い単語の連鎖を構築する
この課題は、次の単語の最初の3文字が最後の単語の最後の3文字と一致する英語の単語の最長チェーンを見つけることです。Linuxディストリビューションで利用可能な一般的な辞書を使用します。こちらからダウンロードできます。 https://www.dropbox.com/s/8tyzf94ps37tzp7/words?dl=0 99171英語の単語があります。ローカルLinux /usr/share/dict/wordsが同じファイルである場合(md5sum == cbbcded3dc3b61ad50c4e36f79c37084がある場合)、それを使用できます。 単語は回答で1回だけ使用できます。 編集:文字は大文字/小文字、アポストロフィ、アクセントを含めて正確に一致する必要があります。 有効な回答の例は次のとおりです idea deadpan panoramic micra craftsman mantra traffic fiche 。スコアは8です。 有効な単語のチェーンが最も長い答えが勝者になります。同点の場合、最も早い回答が勝ちます。答えには、見つけた単語のチェーンと、(もちろん)それを実行するために書いたプログラムがリストされているはずです。

1
正規表現の検証正規表現[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Code Golf Stack Exchangeのトピックになるようにします。 去年閉鎖されました。 入力として正規表現文字列を受け入れ、それが有効かどうかを確認する正規表現を作成します。基本的に、正規表現はそれ自体を検証できるはずです。(無効な正規表現は検証されないため、使用できません.*。;) フレーバーは、よく知られている実装(Perl、sed、grep、gawkなど)によって完全にサポートされている必要があり、それらの実装がサポートするものを完全にサポートしている必要があります。[弁護士が話すことを心配しないでください。私は、スマート***の可能性のある抜け穴を削除しようとしています。] 私はそれをコードゴルフしたいと思いますが、機能が豊富ではないフレーバーを知って使用している人々に優位性を与えるのではないかと心配しています。または、私の心配は根拠がありませんか?
17 code-challenge  code-golf  code-golf  game  sudoku  code-challenge  math  ai-player  code-challenge  sorting  rosetta-stone  code-challenge  code-challenge  programming-puzzle  code-golf  number  code-golf  maze  code-golf  math  regular-expression  code-golf  sequence  code-golf  graph-theory  code-golf  string  word-puzzle  natural-language  brainfuck  metagolf  optimized-output  fastest-algorithm  code-golf  game-of-life  cellular-automata  code-golf  puzzle-solver  grid  code-golf  combinatorics  binary-tree  popularity-contest  code-challenge  code-golf  ascii-art  kolmogorov-complexity  brainfuck  metagolf  code-golf  c  date  code-golf  word-puzzle  crossword  word-search  code-golf  code-golf  quine  code-golf  string  random 

9
自分の冒険を選択してください
Choose Your Own Adventureブックは、読者がストーリーの結果に影響を与える決定を行う必要があるインタラクティブな文学の形式です。ストーリーの特定の時点で、読者には選択可能な複数のオプションがあり、それぞれが読者を本の異なるページに送ります。 たとえば、ファンタジーの設定では、14ページで22ページに「ジャンプ」して神秘的な洞窟に飛び込むか、8ページにジャンプして近くの森を探索するかを決定する必要があります。これらの「ジャンプ」は次のようなページ番号のペアとして: 14 22 14 8 ほとんどの場合、物語には多くの結末がありますが、良い結末はわずかです。目標は、ストーリーをナビゲートして良い結末に達することです。 仕事: 特定の本の「ジャンプ」のリストが与えられたら、あなたの仕事は、特定の結末に至るルートを決定することです。これは非常に簡単なので、真の課題はできる限り少ない文字数で行うことです。 これは コードゴルフです。 サンプル入力(1が開始で、100が目標): 1 10 10 5 10 13 5 12 5 19 13 15 12 20 15 100 サンプル出力: 1 10 13 15 100 サンプル入力: 15 2 1 4 2 12 1 9 3 1 1 15 …

5
ある番号から別の番号に移動するための最小操作
単一の8ビット値で動作する単純な言語を定義しましょう。3つのビット演算を定義しています(コードの説明は8ビットvalue変数を想定しています)。 !最下位ビットを無効にします(value ^= 1) <左シフト(value = value << 1 | value >> 7)の折り返し >右シフトの折り返し(value = value >> 1 | value << 7) 入力: 2つの8ビット数、aとb。8ビットなので、代わりに文字として使用することもできます。 出力: 上記の3つの操作を使用して、aからbに到達する最短の方法。文字列または文字の配列を返すことも、各操作に定数の異なる値を定義してそれらの配列を返すこともできます(はい、<手段>と>手段とも言うことができます<)が、回答で出力形式を説明してください。 複数の等しく長い方法がある場合、それらのいずれかまたはすべてを出力できます。 ルール: プログラムまたは機能を送信できます 標準的な抜け穴が適用されます 各言語のバイト数が最も少ない提出が優先されます(回答は受け付けられません) 総当たり攻撃(または少なくとも総当たり攻撃だけでなく)のないソリューションは、私の賛成票を得る可能性があります。 テストケース: 12, 13 => '!' 1, 2 => '<' 254, 253 => '<' 5, 5 => '' 98, …

4
Portmantoutを生成します!
バックグラウンド 3年前、この男のトムマーフィーは、ポートマントーの考えを言語のすべての単語に拡張し、これをポートマントー(portmanteau plus tout [ すべてのフランス語])と呼びました。英語を108,709個の単語のリストとして定義すると、彼は次の2つのプロパティを持つ611,820個の文字のシーケンスを見つけることができました。 すべての英語の単語は文字列に含まれています。 文字列に2つの隣接する文字を含む近隣は英語の単語です。 ここでは「(ビデオ解説と一緒に)このportmantoutを見つけることができるページへのリンクをね。 portmantout portmantoutの2つのプロパティのうち最初のプロパティは簡単に理解できます。2つ目は、説明が必要な場合があります。 基本的に、単語は重複する必要があります。「golfcode」は、「fc」を含む単語がないため、英語のポートマントには決して表示されません。ただし、portmantoutで「codegolf」が見つかる場合があります。「ego」はギャップを埋めます(他のすべての文字のペアは「code」または「golf」のいずれかです)。 あなたのタスク: 文字列のリストを受け取り、リストのportmantoutを返すプログラムまたは関数を作成します。 このPython 3コードはportmantoutを検証します。 テストケース すべてのリストは順不同です。あれは、 {"code", "ego", "golf"} -> "codegolf" {"more", "elm", "maniac"} -> "morelmaniac" or "morelmorelmaniac" or "morelmorelmorelmaniac" or... Would a morelmaniac be some sort of mycologist? {"ab", "bc", "cd", "de", "ef", "fg", "gh", "hi", "ij", …

7
バイナリツリーの回転
バランスの取れたバイナリ検索ツリーは、O(log n)ルックアップ(または同様の操作)を保証するために不可欠です。多数のキーがランダムに挿入および/または削除される動的環境では、ツリーがルックアップにとって恐ろしいリンクリストに縮退する場合があります。したがって、この効果に対抗するさまざまな種類の自己バランス型バイナリツリー(AVLツリーやスプレイツリーなど)があります。これらのツリーは、ツリーのバランスを再調整するさまざまな種類の回転に基づいています。 回転 この課題では、単一の右回転のみを見ていきます。そのような回転(左回転は対称)は次のようになります。 5 3 / \ / \ 3 6 => 1 5 / \ / \ 1 4 4 6 葉のいずれか1、4または6左または右のサブツリーがある場合、回転は単にそれらをそこに保持します。これがより大きなツリーのサブツリーである場合、ノードで単に「切断5」し、回転したツリー(現在のノード3)をそのノードに「再接続」します。 チャレンジ バイナリ検索ツリー1とキーを指定すると、上記のようにそのノードでツリーが右回転します。上記の例で提供されるキーはになります5。 ルールとI / O 選択したキーとテストケースのキーの間に全単射がある限り、任意のタイプのキーを使用できます。 [3,[]]あいまいさがなければ(たとえば、特に指定しない限りあいまいです)、選択した言語に自然な限り、バイナリツリーの表現を選択できます。 入力は常にバイナリ検索ツリーになるため、重複キーはありません あなたはキーがツリーに含まれていると仮定するかもしれません キーを含むノードには左の子があると仮定できます 提供されたキーの下に正しいサブツリーを想定することはできません あなたは、回転の前にツリーがアンバランスであると仮定することはできません 回転後にツリーのバランスが取れているとは思わないかもしれません デフォルトのI / O方式を使用できます あなたの提出は、ツリーを返す関数またはソリューションを印刷する完全なプログラムである可能性があります テストケース これらの例は、次のようなツリーを表します 葉の場合: [] キーxを持つツリーで、両方のサブツリーがリーフの場合:[x] キーxとサブツリーを持つツリーの場合left right:[x,left,right] 最初の例は、セクションRotationsで提供されるものです。何らかの理由でそれらをグラフィカルに表示する必要がある場合は、ここで2に進みます。 5 …

15
推移的平等
チャレンジ プログラムには3つの入力が必要です。 変数の数である正の整数、 非負整数の順序付けられていないペアのセット。各ペアは変数間の等式を表し、 開始変数を表す正の整数、 開始変数(開始変数自体を含む)と推移的に等しいことを示すことができるすべての変数を表す、負でない整数のセットを返す必要があります。 すなわち、所与の入力においてN、EおよびS、セットを返すQ、その結果: S ∈ Q。 もしZ ∈ Qして(Y = Z) ∈ E、その後、Y ∈ Q。 もしZ ∈ Qして(Z = Y) ∈ E、その後、Y ∈ Q。 これは、グラフ理論の問題として表現することもできます。 無向グラフとグラフ内の頂点が与えられた場合、その接続されたコンポーネント内の頂点をリストします。 仕様書 0ベースまたは1ベースのインデックスを使用することを選択できます。 最初の入力は、存在する変数の数をカウントします。変数は数値として与えられます。または、この入力を受け取ることはできません。この場合、これは、インデックススキームに応じて、存在する最高の変数インデックスまたはこれよりも大きいインデックスのいずれかに等しいと見なされます。 入力が正しい形式であると仮定できます。最初の入力で指定された範囲外の変数は与えられません。たとえば、3, [1 = 2, 2 = 0], 1は有効な入力ですが、そうで4, [1 = 719, 1 = 2, 3 = 2], …

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