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

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

4
強く接続されたコンポーネント
有向グラフ内の2つの異なる頂点は、グラフ内に互いからのパスがある場合、強く接続されます。強連結成分グラフのサブセットに別個の頂点の各ペアが強固に接続され、サブセットにそれ以上の頂点を追加すると、このプロパティを破るであろうように、グラフのサブセットです。 あなたの課題は、グラフを強く接続されたコンポーネントに分離することです。具体的には、グラフ内のすべてのSCCを出力する必要があります。 I / O: 入力として、有向エッジのリスト、隣接リスト、隣接行列、またはその他の妥当な入力形式を使用できます。よくわからない場合は尋ねてください。グラフには完全に接続されていない頂点がなく、自己エッジがないと仮定できますが、それ以上の仮定はできません。オプションで、頂点の数だけでなく、頂点のリストを入力として使用することもできます。 出力として、各サブリストが強く接続されたコンポーネントである頂点のリストのリストなどの頂点のパーティション分割、または各ラベルが異なるコンポーネントに対応する頂点のラベル付けのいずれかを指定する必要があります。 ラベルを使用する場合、ラベルは頂点、または整数の連続したシーケンスである必要があります。これは、計算がラベルに流れ込むのを防ぐためです。 例: これらの例は、各エッジが1番目のエントリから2番目のエントリに向けられているエッジのリストと、出力パーティションを取ります。この形式または別の形式を自由に使用できます。 入力は最初の行にあり、出力は2行目にあります。 [[1, 2], [2, 3], [3, 1], [1, 4]] [[1, 2, 3], [4]] [[1, 2], [2, 3], [3, 4]] [[1], [2], [3], [4]] [[1, 2], [2, 1], [1, 3], [2, 4], [4, 2], [4, 3]] [[1, 2, 4], [3]] [[1, …

3
ループとループとループ
チャレンジ ASCIIアートの入力(最終的にループする可能性のあるパスを指示する)が与えられると、ループの長さ(ある場合)およびループのいずれかにある「テール」の長さを出力する関数を作成します。以下のフォーム。 入力 入力を関数に渡す必要があります。以下は、単純な入力の例です。 # --> # --> # ^ | | | | v # <-- # 上記のブロックは次のように視覚化できます 「尾」は1つのアイテムで、ループは4つの長さです。 より難しいもの: # --> # --> # ^ | | | | v # --> # <-- # # --> # ^ ^ | | | | | | v # …

4
高次元の格子状グラフで最大の独立集合を見つける
指定された正の整数について、n長さのすべてのバイナリ文字列を考慮します2n-1。与えられた文字列について、の長さの各部分文字列内のs の数のカウントを含む長さの配列をしSましょう。たとえば、if およびthen です。のカウント配列を呼び出します。Ln1nSn=3S = 01010L=[1,2,1]LS 同じカウントの2つの文字列が一致し、それぞれのカウント配列がプロパティthat およびfor all を持っている場合に一致するS1と言います。S2L1L2L1[i] <= 2*L2[i]L2[i] <= 2*L1[i]i 仕事 増加のためnで始まるn=1、タスクは、長さの各文字列の最大セットのサイズを見つけることです2n-1何の2つの文字列が一致しないように。 コードは、値ごとに1つの数値を出力する必要がありますn。 スコア あなたのスコアは、n他の誰もあなたの答えのいずれに対してもより高い正解を投稿していない最高です。明らかに、すべての最適な回答があれば、n投稿した最高のスコアが得られます。ただし、あなたの答えが最適でなくても、他の誰もそれを打つことができなければ、あなたはまだスコアを得ることができます。 回答例 以下のためにn=1,2,3,4私が取得します2,4,10,16。 言語とライブラリ 使用可能な任意の言語とライブラリを使用できます。可能であれば、コードを実行できるとよいので、可能であればLinuxでコードを実行/コンパイルする方法の完全な説明を含めてください。 主要なエントリー 5 Mathematicaの MartinBüttnerによる C ++の Reto Koradiによる6。値は2, 4, 10, 16, 31, 47, 75, 111, 164, 232, 328, 445, 606, 814, 1086です。最初の5つは最適であることが知られています。 Javaの Peter Taylorによる7。値は 2, 4, …

10
グラフのリダイレクトを解除する
前書き この課題では、自己ループのある有向グラフが与えられますが、タスクはそれを自己ループのない無向グラフに変換することです。 入力 入力は、頂点が{0, 1, ..., n-1}自然数に設定された有向グラフですn ≥ 0(または{1, 2, ..., n}、1ベースのインデックス付けを使用する場合)。グラフはlength- nlist として与えられます。LここでL[i]は、vertexの外側のリストiです。たとえば、リスト[[0,1],[0],[1,0,3],[]]はグラフを表します .-. | v '-0<--2-->3 ^ | | | v | 1<--' ネイバーリストは必ずしも順序付けられているわけではありませんが、重複がないことが保証されていることに注意してください。 出力 出力は、次のように取得された、入力と同じ形式の別のグラフです。 すべての自己ループを削除します。 残りの各エッジについてu -> v、反転エッジがv -> uまだ存在しない場合は追加します。 入力と同様に、出力グラフの隣接リストは順序付けられていない場合がありますが、重複リストを含めることはできません。上記のグラフの場合、正しい出力はになり[[1,2],[0,2],[0,1,3],[2]]、グラフを表します 0<->2<->3 ^ ^ | | v | 1<--' ルール グラフでは、0ベースまたは1ベースのインデックスを使用できます。機能と完全なプログラムの両方が許容されます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。 テストケース これらのテストケースでは、0ベースのインデックス付けを使用します。1から始まる場合、各数値をインクリメントします。これらの隣接リストは昇順でソートされますが、必須ではありません。 [] -> [] …

15
都市名ゲーム
必要に応じて、都市名ゲームのルールに従って都市をソートするプログラムを作成します。 都市の各名前は、前の都市名の最後の文字から始まる必要があります。例えばLviv -> v -> Viden -> n -> Neapolis -> s -> Sidney -> y -> Yokogama -> a -> Amsterdam -> m -> Madrid -> d -> Denwer ソートされたリストで、最初の都市の最初の文字と最後の文字の最後の文字は何も一致してはいけません。同じ文字である必要はありません。 都市名には文字のみが含まれると想定できます。 プログラムの出力は、入力と同じ大文字にする必要があります 例: % ./script Neapolis Yokogama Sidney Amsterdam Madrid Lviv Viden Denwer ["Lviv", "Viden", "Neapolis", "Sidney", "Yokogama", "Amsterdam", …

11
NFAをシミュレートする
非決定性有限オートマトンは、タプル有限状態機械である複数の状態にマッピングされます。すなわち。DFAの通常のδ :Q × Σ → Q遷移関数を別の関数Δ :Q × Σ → P(Q )に置き換えます。(state,symbol)(state,symbol)(state,symbol)δ:Q×Σ→Q δ:Q×Σ→Q \delta : Q \times \Sigma \to Q\ Δ:Q×Σ→P(Q)Δ:Q×Σ→P(Q)\Delta : Q \times \Sigma \to \mathcal{P}(Q) NFAが何であるかがわかっている場合は、次のセクションをスキップできます。 正式な定義 NFAは、 状態の有限集合QQQ 記号の有限集合ΣΣ\Sigma 遷移関数Δ:Q×Σ→P(Q)Δ:Q×Σ→P(Q)\Delta : Q \times \Sigma \to \mathcal{P}(Q) は初期状態q0∈Qq0∈Qq_0 \in Q 最終状態の集合F⊆QF⊆QF \subseteq Q マシンは中から始まりと記号の有限列読み込みのw ∈ Σ *を、各シンボルのために、それは同時に、現在の状態を遷移関数機能を適用すると、現在の状態の集合に状態のそれぞれの新しいセットを追加します。q0q0q_0w∈Σ∗w∈Σ∗w \in …

16
関係が推移的かどうかを判別
チャレンジの説明 いくつかの定義から始めましょう: 関係は、要素の順序対の集合である(この課題では、我々は整数を使用することがあります) たとえば[(1, 2), (5, 1), (-9, 12), (0, 0), (3, 2)]、関係です。 関係は、要素の任意の2つのペアに対して推移的と呼ばれ(a, b)、(b, c)この関係で、ペアが(a, c)また存在し、 [(1, 2), (2, 4), (6, 5), (1, 4)]それが含まれているため、推移的である(1, 2)と(2, 4)、しかし、(1, 4)同様に、 [(7, 8), (9, 10), (15, -5)]任意の二つのペアが存在しないため、推移的であり (a, b)、(c, d)本ようb=cです。 [(5, 9), (9, 54), (0, 0)]は推移的では(5, 9)あり(9, 54)ません。(5, 54) 整数のペアのリストを指定して、関係が推移的かどうかを判断します。 入出力 合理的な形式の整数のペアのリストが提供されます。関係を考える [(1, …

5
迷宮を歩く
または、それは実際には迷路ではありませんが、それでもです。 ルール: 入力は、2行の文字列で構成される*、1、xとX。そのひもは通り抜ける迷路です。行の長さは同じです。 入力を,(カンマ)を含む文字列またはこれらの2行の間の任意の便利な区切り文字として受け取ることができます。または、両方の行を関数の個別の引数として使用できます。 出力は、文字列を終了するために必要な手順の数です(最後の手順は、文字列から移動する手順です)。 最初のシンボルの前の左上隅(上の行)から開始します。 各ステップで、1シンボルずつ(n番目から(n + 1)番目の位置まで)移動します。次に、踏んだキャラクターに応じて、結果は異なります。各文字の機能は次のとおりです。 *-何もない。普通に踏むだけです。 x-踏んだら、ラインを切り替えますが、最初から同じ水平距離を保ちます。たとえば、上の行の3番目の位置に足を踏み、xここで小文字に遭遇しました。次に、すぐに下の行に移動しますが、再び3番目の位置に移動します。 X-行を切り替えて、次の位置に移動します。この例は同じですが、3番目から4番目の位置に移動します(したがって、2番目の行の4番目の位置にいます)。 1 -ちょうど別の位置で前進します。 各キャラクターが仕事をすると、スペースに置き換えられ、「機能」しなくなります。 次に例を示します。 入力: x * 前述のように、最初の行の最初のシンボルの前から開始します。最初のステップでは、文字に移動しx、この文字は、2行目に切り替えます。文字xはもはや機能しませんxが、で置き換えられ*ます。これは、後者の例でより関連します。あなたは今、下の行のアスタリスクにいて、それはあなたに何もしませんでした。 2番目のステップは前方への移動であり、ストリングを終了するため、ラビリンスは完了し、2ステップかかりました。 出力 2。 入力: xX* x1* 最初のステップ:xに進みますx。これにより、下の行に移動します。ここに、使用された文字がアスタリスクに置き換えられるというルールがあります。その後、最初の行に戻りますxが、使用されてアスタリスクになったため、もう行はありません。したがって、このアスタリスク上を安全に移動し、ステップが完了しました(最初の行の最初の位置にいます)。 2番目のステップ:上に移動Xすると、下の行に移動し、次に前方に移動します。2行目の3番目の位置(アスタリスク)に常駐し、2番目の位置(を含む1)には一度もアクセスしたことがありません。 3番目のステップ:前方に移動して、文字列を終了します。 出力:3。 テストケース: 入力: *1* xxx 出力:3。(13番目の位置にジャンプするため)。ここでは、2行目にアクセスすることはありませんが、入力の必須部分です。 入力: *X*1*x x*1xx* 出力:4。 入力: 1x1x ***X 出力:3。 入力: 1*x1xxx1*x x*x1*11X1x 出力:6。 入力: xXXXxxx111* **xxx11*xxx …

5
外部からどのくらい離れていますか?
中心が整数間隔で配置された軸に沿った単位正方形要素に分割された2D領域を取ります。エッジは、2つの要素で共有される場合は内部エッジと呼ばれ、それ以外の場合は外部エッジと呼ばれます。 あなたの目標は、として知られている各要素の中心から出発外縁に到達するために横断しなければならない隣接要素の最小数を見つけることであるtraversal distance、またはdistance略しています。エッジのみを横断できます(つまり、コーナーカット/斜め移動はできません)。「外部要素」(少なくとも1つの外部エッジを持つ要素)は0、外部エッジに到達するために隣接する要素を横断する必要があると見なされることに注意してください。 入力 入力は、すべての要素の中心の(x、y)を示す非負の整数ペア座標のリストです。重複する要素はないと想定されます(つまり、x / yペアが要素を一意に識別します)。要素の入力順序について何も想定してはいけません。 入力の原点を任意の場所(0、0、1、1など)に変換できます。 すべての入力要素が接続されていると仮定できます。つまり、上記の規則を使用して、任意の要素から他の要素に移動することが可能です。これは、2D領域が単に接続されているという意味ではないことに注意してください。内部に穴がある場合があります。 例:次は無効な入力です。 0,0 2,0 エラーチェックは不要です。 入力は、任意のソース(ファイル、stdio、関数パラメーターなど)からのものです。 出力 出力は、各要素を識別する座標のリストと、エッジに到達するために通過した対応する整数距離である必要があります。出力は、任意の要素の順序にすることができます(たとえば、入力として受け取ったのと同じ順序で要素を出力する必要はありません)。 出力は、任意のソース(ファイル、stdio、関数の戻り値など)に対するものです。 要素の座標を外部距離と一致させる出力はすべて問題ありません。たとえば、これらはすべて問題ありません。 x,y: distance ... [((x,y), distance), ...] [(x,y,distance), ...] 例 テキスト入力例の形式はx,y、1行に1つの要素があります。これを便利な入力形式に変更してください(入力形式の規則を参照)。 テキスト例の出力は、x,y: distance行ごとに1つの要素を持つ形式です。繰り返しになりますが、これを便利な出力形式に変更してください(出力形式の規則を参照)。 グラフィカルな図の左下の境界は(0,0)であり、内部の数字は、外側の端に到達するために予想される最小距離を表します。これらの図は純粋にデモンストレーションのみを目的としていることに注意してください。プログラムはこれらを出力する必要はありません。 例1 入力: 1,0 3,0 0,1 1,2 1,1 2,1 4,3 3,1 2,2 2,3 3,2 3,3 出力: 1,0: 0 3,0: 0 …

7
レストランはどこに置けばいいですか?
あなたはレストランのオーナーです。y軸と呼ばれる主要道路が1つしかないデカルトの新しいエリアに開通しています。あなたのレストランとそのエリアの各家からの合計距離を最小化するようにレストランを配置したい。 入力: 入力は n, the number of houses house1 house2 house3 ... houseN ここで、各家はフォームの座標x yです。各単位は1キロメートルを表します。 入力を文字列として取得するか、引数として選択した形式で入力を取得する関数を提供できます。 出力:レストランのy座標(y軸に配置されることに注意してください)。実際には、道路の脇にありますが、違いはごくわずかです。 n番目の家であれば基本的に、h_nかつD距離関数である、あなたが見つけたいkというようにD(h_0, (0, k)) + D(h_1, (0, k)) + D(h_2, (0, k)) + ... + D(h_n, (0, k))最小化されます。 距離は、顧客が自宅からレストランまで正確に直線で移動するかのように計算されることに注意してください。それは(x, y)あなたのレストランまでの距離ですsqrt(x^2 + (y - k)^2)。 出力は、少なくとも小数点以下2桁まで正確でなければなりません。 出力は文字列として出力するか、関数から返すことができます。 入出力の例: Input: 2 5.7 3.2 8.9 8.1 Output: …

11
グラフを作成する
この課題でのタスクは、一連のディレクティブから無向グラフを作成することです。負でない整数ごとに1つのディレクティブがあり、それぞれが特定のグラフを新しいグラフに変換します。 ディレクティブ0:新しい切断されたノードを追加します。 指令 1:新しいノードを追加し、既存のすべてのノードに接続します。 ディレクティブm > 1:次数(隣接数)がで割り切れるすべてのノードを削除しmます。注0すべてで割り切れるm切断ノードは常に削除されますので、。 ディレクティブは、空のグラフから左から右に1つずつ適用されます。たとえば、シーケンス[0,1,0,1,0,1,3]は次のように処理され、素晴らしいASCIIアートを使用して説明されます。空のグラフから始め、次の指示に従って単一の頂点を追加し0ます。 a 次に、別の頂点を追加し、次の指示に従って、最初の頂点に接続し1ます。 a--b 0andの指示に従って、切断された別の頂点を追加し、次に接続された頂点を追加します1。 a--b c \ \ / `--d 0andの指示に従って、これをもう一度繰り返します1。 ,--f--e / /|\ a--b | c \ \|/ `--d 最後に、次の指示に従って、次数3の頂点aとを削除bし3ます。 f--e |\ | c |/ d これは、シーケンスによって定義されるグラフ[0,1,0,1,0,1,3]です。 入力 一連のディレクティブを表す、負でない整数のリスト。 出力 シーケンスによって定義されたグラフ内のノードの数。 テストケース [] -> 0 [5] -> 0 [0,0,0,11] -> 0 …

1
列車を妨害して遅く走らせる[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新する Code Golf Stack Exchangeのトピックになるようにします。 閉じた3年前。 「アラビアバザールに行って、恋に落ちたプレゼントを買いたいと思っています。しかし、到着が遅すぎると、すべての店が閉まってしまい、何も買えなくなります。私?」 目標:すべての店舗が閉鎖される前に、ノースリッチモンドストリートから少年をアラビアに連れて行きます。 実際の目標:店が閉まる前に少年がアラビアに到着しないようにしてください。 プログラムは、次の形式で入力を受け取ります。 <time> <map> どこ <time>少年が旅行に費やすことができる最大時間(分単位)です。正の整数です。 <map> 電車が通ることができるルートのグラフです。 グラフの形式は次のとおりです。 各ステートメントはセミコロンで終了します。 マップ内のノード(スイッチを表す)は、単一の小文字を使用して表されます。 ノード間のパスは、構文a,X,bで表されます。ここXで、はパスの重みを表す整数です。パスの重みは、列車がこれらの2つのノードを通過するのにかかる時間(分単位)です。 アラビアはで表されa、ノースリッチモンドストリートはで表されますn。 すべてのパスは双方向です。 たとえば、このグラフ(パスが双方向のふりをします): ウィキメディア・コモンズ経由のArtyom Kalininによる画像。CC BY-SA 3.0ライセンスの下で使用されます。 次のようにグラフ表記に記録されます。 a,4,b;a,2,c;b,5,c;b,10,d;c,3,e;e,4,d;d,11,f; この入力には、 nため、無効な入力であることに。無効な入力が与えられた場合、プログラムは何でも実行できます。 入力例を次に示します。 21 n,4,b;n,2,c;b,5,c;b,10,d;c,3,e;e,4,d;d,11,a; (これは、上の画像とa置き換えられn、f置き換えられたグラフと同じグラフです。aです)。 少年はから取得する必要がありますnへのa21分以内。彼がルートを取る場合n-> c-> e-> d-> a、彼は20分でそこに着きます。ノードのコンマ区切りリストとしてそのルートを表すことができます。 n,c,e,d,a 一方、ルートn-> b-> c-> e-> d-> aでは、少年は27分かかりますが、これは間に合いません。このルートを次のように表すことができます。 n,b,c,e,d,a …

10
帰宅途中で酔っぱらいを遅くする方法
次のような正方形のn x nグリッドグラフを考えます。 このグラフは11 x 11であることに注意してください。 任意の時点で、男性は交差点に立って、次の交差点まで一度に1ステップずつ垂直または水平に移動するだけです。悲しいことに、彼は少し飲みすぎたので、最大4つの可能な方向(上、下、左、右)からランダムに移動する方向を選択します。これは、彼が壁に立っているかのように、もちろん3つの選択肢しかなく、コーナーでは2つしか持っていないため、最大4つです。 彼は左下隅からスタートし、彼の目標は右上隅である家に帰ることです。時間は、単に彼が取るステップの数です。 しかし、あなたは悪意のある敵であり、彼ができるだけ早く家に帰ることを望んでいます。歩行中はいつでもグラフから任意の数のエッジを削除できます。唯一の制限は、彼が家に帰るために常に何らかの方法を残さなければならず、彼がすでに使用したエッジを削除できないことです。 課題は、可能な限り悪意のある敵を考案し、ランダムな飲酒歩行器を使用して100 x 100 20 x 20のグラフでテストすることです。スコアは、単純にランダムウォーカーが10 1000回以上実行されるまでの平均時間です。 Linuxで自由に利用でき、簡単にインストールできる限り、好きな言語とライブラリを使用できます。 何を実装する必要がありますか? ランダムウォーカーと攻撃者用のコードを実装する必要があり、実行時の出力が攻撃者コードを使用した1000回の実行の平均になるようにコードを組み合わせる必要があります。ランダムウォーカーコードは、(x-1、y)、(x + 1、y)、(x、y-1)、および(x、y + 1)から選択するだけなので、非常に簡単に記述できます。それらのどれも削除されていないか、範囲外です。 敵のコードはもちろんより難しく、酔っ払いが既に通過したエッジを覚えておく必要があるので、彼はそれらのいずれも削除しようとせず、酔っぱらいへのルートがまだあることを確認します。迅速に行うために。 補遺 10の実行は本当に十分ではありませんが、本当に長い散歩をすることができた人々を罰したくはありませんでした。私は今、人気のリクエストのために1000に増やしました。ただし、歩く時間が長すぎて現実的な時間内に1000回のランニングができない場合は、できるだけ多くのランニングをレポートしてください。 100 x 100のハイスコア表。 オプティマイザーによる976124.754。 103000363.218 by Peter Taylor。 編集1.グラフのサイズを20 x 20に変更して、テストの実行時間を短縮しました。人々がスコアを提出すると、そのサイズの新しい高テーブルスコアを作成します。 20 x 20のハイスコア表。 230,794.38 (100k runs) by justhalf 227,934 by Sparr 213,000 (approx) …

6
グラフ5-彩色
正直なところ、これはまだ質問されていないとは信じられませんが、ここでは バックグラウンド 単純な無向平面(グラフは交差なしで平面に描くことができます)グラフを考えると、グラフが4色であることが証明された定理です。ただし、グラフを5色にする方がはるかに簡単です。これが、今日の課題に焦点を当てるものです。 グラフの有効なk色は、次のプロパティを持つグラフのノードへの「色」の割り当てです。 2つのノードがエッジで接続されている場合、ノードは異なる色で色付けされます。 グラフ全体で、最大5色があります。 これを踏まえて、単純な無向平面グラフを5色にするための非常に基本的なアルゴリズムを紹介します。このアルゴリズムには次の定義が必要です 到達可能性:ノード1がノード2から到達可能である場合、最初のノードがノード2で最後がノード1であるように、それぞれがエッジで接続された一連のノードがあることを意味しますノード1がノード2から到達可能である場合、ノード2はノード1から到達可能です。 サブグラフ:ノードNの特定のセットのグラフのサブグラフは、サブグラフのノードがすべてNであり、両方のノードがエッジで接続されている場合にのみ、元のグラフのエッジがサブグラフにあるグラフです。北にあります Color(N)を、N個のノードを持つ平面グラフを5色で色付けする関数とします。以下の関数を定義します 接続されているノードの数が最も少ないノードを見つけます。このノードには、最大で5つのノードが接続されます。 グラフからこのノードを削除します。 この新しいグラフでColor(N-1)を呼び出して、色を付けます。 削除したノードをグラフに追加し直します。 可能であれば、追加されたノードに、接続されているノードのいずれにもない色を割り当てます。 可能でない場合、追加されたノードに隣接する5つのノードすべてに5つの異なる色があるため、次のプロセスを試す必要があります。 追加されたノードn1 ... n5を囲むノードに番号を付けます n1またはn3のいずれかと同じ色の元のグラフのすべてのノードのサブグラフを検討します。 このサブグラフで、n1から到達可能なノードのセット(n1を含む)で、n1からn3に到達できない場合、n1のすべての色をn3に置き換えます。追加したノードn1の元の色に色を付けます。 この新しいグラフでn1からn3に到達できる場合、n1とn3ではなく、ノードn2とn4でステップ9からのプロセスを実行します。 チャレンジ edgelist(グラフを表す)の入力を指定して、各ノードに値を割り当てることにより、グラフに色を付けます。 入力:グラフ内のエッジのリスト(つまり、[('a','b'),('b','c')...]) 入力エッジリストは、(a、b)がリスト内にある場合、(b、a)はリスト内にないことに注意してください。 出力:値のペアを含むオブジェクト。各ペアの最初の要素はノードで、2番目はその色、つまり、[('a',1),('b',2)...]または{'a':1,'b':2,...} 色、数字、文字、その他のものを表すために何でも使用できます。 入力と出力が非常に明確である限り、入力と出力は非常に柔軟です。 ルール これはコードゴルフの挑戦です 上記のアルゴリズムを使用する必要はありません。これは単に参照用です。 どのグラフでも、多くの場合、有効な色付けの方法があります。アルゴリズムが生成した色付けが有効である限り、それは受け入れられます。 グラフは5色でなければならないことに注意してください。 テストケース 次のコードを使用して、カラーリング結果の有効性をテストします。グラフごとに有効なグラフの色が多数あるため、このアルゴリズムは単に色の有効性をチェックします。コードの使用方法については、docstringをご覧ください。 いくつかのランダムな(そしてかなり馬鹿げた)テストケース: テストケース2:Krackhardt Kite Graph [(0, 1), (0, 2), (0, 3), (0, 5), (1, 3), …

14
[N]とM反復の再帰的に連結された累積和
2つの正の整数NをM取得し[N]、M反復での連結累積和を作成します。最後の反復の結果を出力します。 連結累積合計の定義: 数字Nから始めてシーケンスを定義するX = [N] 追加Xの累積和X 手順を2 M回繰り返します。 ベクトルの累積合計X = [x1, x2, x3, x4]は次のとおり[x1, x1+x2, x1+x2+x3, x1+x2+x3+x4]です。 例N = 1とM = 4: P =累積和関数。 M = 0: [1] M = 1: [1, 1] - X = [1, P(1)] = [[1], [1]] M = 2: [1, 1, 1, 2] - X …
14 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 

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