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

他のタグでカバーされていないアスペクトの最適化に焦点を当てた課題。

4
セルオートマトンによる複数投票
セルオートマトンには、マジョリティ問題と呼ばれる非常に重要な問題があります。 多数決問題、または密度分類タスクは、多数決を正確に実行する1次元セルラーオートマトンルールを見つける問題です。 ... iがゼロ状態で、jが1状態である合計i + j個のセルを持つ2状態セルオートマトンの構成を考えると、投票問題の正しい解決策は最終的にすべてのセルをゼロに設定する必要がありますi> jであり、i <jの場合、最終的にすべてのセルを1に設定する必要があります。i = jの場合、望ましい最終的な状態は指定されていません。 すべてのケースでセルオートマトンが大多数の問題を解決できないことが証明されていますが、大部分のケースでそれを解決できる多くのルールがあります。Gacs-Kurdyumov-Levinオートマトンの精度は、ランダムな初期条件で約78%です。GKLルールは複雑ではありません。 半径3。セルの新しい状態は、それ自体、右側の3つのセル、左側の3つのセルの7つの前のセルに依存することを意味します。 セルが現在の場合O、その新しい状態はそれ自体の過半数であり、セルはその左側にあり、セルはその左側に3ステップあります。 セルが現在の場合1、その新しい状態はそれ自体の大半であり、セルはその右側にあり、セルはその右側に3歩進みます。 以下に例を示します。 0 1 0 1 1 1 0 1 1 0 1 0 0 1 0 1 1 1 1 1 1 1 0 0 1 1 0 0 0 1 1 1 1 1 1 …

9
一意に分離されたピクセル
以下のためにNによってN画像、全く分離距離が複数回存在しないように、ピクセルのセットを見つけます。つまり、2つのピクセルが距離dで区切られている場合、それらは正確にdで区切られている唯一の2つのピクセルです(ユークリッド距離を使用)。dは整数である必要はないことに注意してください。 課題は、他の誰よりも大きなセットを見つけることです。 仕様 入力は必要ありません-このコンテストのNは619に修正されます。 (人々は尋ね続けているので、番号619について特別なことは何もありません。最適な解決策を考えにくいほど大きく、Stack Exchangeが自動的に縮小することなくN x Nの画像を表示できるほど小さいように選択されました。最大630 x 630のフルサイズを表示し、それを超えない最大の素数で行くことにしました。) 出力は、スペースで区切られた整数のリストです。 出力の各整数は、ピクセルの1つを表し、0から英語の読み取り順序で番号が付けられます。たとえば、N = 3の場合、位置は次の順序で番号が付けられます。 0 1 2 3 4 5 6 7 8 必要に応じて、実行中に進行状況情報を出力できますが、最終的なスコアリング出力が簡単に入手できる限りです。STDOUTまたはファイル、または下のStack Snippet Judgeに貼り付けるのに最も簡単なものに出力できます。 例 N = 3 選択した座標: (0,0) (1,0) (2,1) 出力: 0 1 5 勝ち スコアは、出力内の場所の数です。最も高いスコアを持つ有効な回答のうち、そのスコアで最も早く投稿を出力します。 コードは確定的である必要はありません。最高の出力を投稿できます。 研究の関連分野 (ゴロムのリンクについてはAbulafiaに感謝します) これらはどちらもこの問題と同じではありませんが、どちらも概念が似ており、これにアプローチする方法についてのアイデアを提供します。 ゴロム定規:1次元の場合。 ゴロム長方形:ゴロム定規の2次元拡張。Costas配列として知られるNxN(正方形)ケースのバリアントは、すべてのNについて解かれます。 この質問に必要なポイントは、ゴロム長方形と同じ要件の対象ではないことに注意してください。ゴロム長方形は、各点から互いへのベクトルが一意であることを要求することにより、1次元のケースから拡張されます。これは、水平方向に2の距離で分離された2つのポイントと、垂直方向に2の距離で分離された2つのポイントが存在できることを意味します。 この質問の場合、一意でなければならないのはスカラー距離です。したがって、水平と垂直の2の分離はありません。この質問に対するすべての解はゴロム長方形になりますが、すべてのゴロム長方形がこの質問。 上限 Dennisはチャットで487がスコアの上限であることを有益に指摘し、証拠を示しました。 …

1
円のリストが与えられたら、最小の包含長方形の面積を出力します
半径のリストが表示されます。すべてが収まる最小の長方形の領域を出力する必要があります。 たとえば、リスト[5,3,1.5]を指定すると、が出力されます157.460。 これは画像です: 幅は15.7460、高さは10なので、面積は157.460です ルール: stdinまたは関数の引数を使用してリストを取得し、stdoutまたは関数の戻りを使用して回答を出力します。 半径は、最大で小数点以下2桁です。 リストの長さは2〜6です。 出力は、小数点以下3桁以上の精度である必要があります。 必要な場合、π= 3.1416。 テストケース: [5,3,1.5] = 157.460 [9,4,8,2] = 733.431- ここで働いています。 [18,3,1] = 1296.000 バイト単位の最短コードが優先されます。

3
重い箱の積み重ね
重い箱がたくさんあるので、できるだけ少ない数のスタックに積み重ねたいと思っています。問題は、サポートできる以上のボックスをスタックできないため、より重いボックスをスタックの最下部に配置する必要があることです。 チャレンジ 入力:箱の重量のリスト(kg単位)。 出力:ボックスのスタックを説明するリストのリスト。これは、入力に可能な限り少ない数のスタックを使用する必要があります。有効なスタックであるためには、スタック内の各ボックスの重量が、その上のすべてのボックスの重量の合計以上でなければなりません。 有効なスタックの例 (下から上へ) [3] [1、1] [3、2、1] [4、2、1、1] [27、17、6、3、1] [33、32、1] [999、888、99、11、1] 無効なスタックの例 (下から上へ) [1、2] [3、3、3] [5、5、1] [999、888、777] [4、3、2] [4321、3000、1234、321] テストケースの例 1 IN: [1, 2, 3, 4, 5, 6, 9, 12] OUT: [[12, 6, 3, 2, 1], [9, 5, 4]] 2 IN: [87, 432, 9999, 1234, 3030] OUT: [[9999, …

13
最小の魔法の合計にする
この課題を短くしてください。 4つの番号が与えられます:p1、p2、p3、p4。 数値のマジックサムは次のように定義されます。 magic_sum = |p1 - p2| + |p2 - p3| + |p3 - p4| + |p4 - p1| 上記の整数値(p1、p2、p3、またはp4)のいずれかのみを変更できます。値の魔法の合計が最小値になるように値を変更する必要があります。 例えば: p1、p2、p3、p4 = 17、-6、15、33。この場合、マジックサムの値は78です。 ここで-6を16に変更すると、マジックサムの値は36になります。これは達成可能な最小値です。 数値は正または負の整数になる可能性があることに注意してください。 これはコードゴルフなので、コードの最小バイトが勝ちます。ブラウニーは、レクリエーション言語よりも実用的な言語を使用していることを指摘しています。4日はあなたとありますように。 繰り返します: サンプル1 入力1 17 -6 15 33 出力1 36 説明1 -6は16に置き換えることができ、達成可能な最小の魔法の合計を与えます。 サンプル2 入力2 10 10 10 10 出力2 0 or 2 どちらでもかまいません …

2
ニューラルネットワークは素数を認識できますか?
バックグラウンド 素数性の認識は、(人工)ニューラルネットワークにはあまり適していないと思われます。ただし、普遍近似定理では、ニューラルネットワークは任意の連続関数を近似できるため、特に、希望する有限サポート関数を表すことができるはずです。それで、最初の100万の数の中のすべての素数を認識してみましょう。 より正確には、これはプログラミングWebサイトであるため、2 ^ 20 = 1,048,576まで進みましょう。このしきい値を下回る素数の数は82,025または約8%です。 チャレンジ すべての20ビット整数を素数または素数として正しく分類できるニューラルネットワークはどれくらい小さいでしょうか? この課題のために、ニューラルネットワークのサイズは、それを表現するために必要な重みとバイアスの総数です。 詳細 目標は、単一の明示的なニューラルネットワークのサイズを最小化することです。 ネットワークへの入力は、整数の個々のビットを含む長さ20のベクトルになり、0と1で表されるか、-1と+1で表されます。これらの順序は、最上位ビットが先か、最下位ビットが先です。 ネットワークの出力は単一の数値である必要があります。これにより、カットオフ値を超えると入力が素数として認識され、同じカットオフ値を下回ると入力が素数でないと認識されます。たとえば、正は素数を意味し(負ではなく負)、あるいは0.5より大きい場合は素数を意味します(そして0.5未満は素数ではありません)。 ネットワークは、すべての2 ^ 20 = 1,048,576の入力で100%正確でなければなりません。上記のように、この範囲には82,025個の素数があることに注意してください。(常に「素数ではない」を出力すると、92%正確になります。) 標準的なニューラルネットワークの用語では、これはおそらくオーバーフィッティングと呼ばれます。言い換えれば、あなたの目標は素数を完全に過剰適合させることです。他の言葉としては、「トレーニングセット」と「テストセット」が同じであることです。 この課題では、「トレーニング可能な」または「学習可能な」パラメータの数は考慮されていません。実際、ネットワークにはハードコーディングされた重みが含まれている可能性が高く、以下の例は完全にハードコーディングされています。代わりに、すべての重みとバイアスがパラメーターと見なされ、カウントされます。 ニューラルネットワークをトレーニングまたは生成するために必要なコードの長さはスコアに関係ありませんが、関連するコードを投稿することは確かにありがたいです。 ベースライン ベースラインとして、82,025個のすべての素数を1,804,551個の合計重みとバイアスで「記憶」することができます。 以下のこのコードには、実例、テストコード、既知のニューラルネットワークライブラリを使用したニューラルネットワークの動作定義、「ハードコード」(または少なくとも「トレーニングされていない」)ニューラルネットワーク、スコアの実際の測定。 import numpy as np bits = 20 from keras.models import Sequential from keras.layers import Dense from sympy import isprime # Hardcode some weights weights = …

1
単純な逆ポーランド記法プログラミング言語用にコンパイラを最適化する
説明 仮想プログラミング言語(IPL)はポーランド語逆表記法を使用します。次のコマンドがあります。 i-番号を入力し、スタックにプッシュします o-スタックの非破壊出力トップ(数値はスタックにとどまります) d-スタックの先頭を破棄 整数 -この数値をスタックにプッシュします +-* -スタックから2つの数値をポップし、対応する操作を実行して結果をプッシュバックします。IPLには区分はありません。 IPLは整数でのみ機能し、単純な計算に使用されます。IPLプログラムは1行で記述され、スペースで区切られます。空の文字列は有効なIPLプログラムです。 IPLプログラム: i i + o 2つの数値を入力し、それらを加算して結果を出力します。 スタックにプッシュできる入力番号と整数は[-999、999]の範囲ですが、出力は任意です。あなたの言語が大きな数字をサポートしていない場合でも大丈夫です。 入出力フォーマット 文字列、リスト、トークンなど、理解および読み取り/書き込みが明確である限り、任意の入力/出力形式を選択できます。 仕事 IPLプログラムが与えられます。それを最適化する(長さを減らす)必要があります。 i 12 + 3 + o d 2 3 + d 最適化後は i 15 + o スタックの状態を保持する必要はありませんが、入力および出力の量とその順序は、元の最適化されたプログラムと一致する必要があります。 IPLプログラム: -40 i * 2 * o i + 3 1 + …

3
簡易カーニングを実装する
前書き カーニングとは、テキストの文字間の間隔を調整することを意味します。例として、Top次の3つのグリフで書かれた単語を考えます。 ##### ..... ..... ..#.. ..... ..... ..#.. ..##. .###. ..#.. .#..# .#..# ..#.. .#..# .#..# ..#.. ..##. .###. ..... ..... .#... ..... ..... .#... グリフ間のギャップをドットで埋めて完了させることもできますが、ギャップはどうやら広すぎるように見えます。代わりに、グリフを左にスライドさせて、ほとんど触れないようにします。 #####........ ..#.......... ..#..##..###. ..#.#..#.#..# ..#.#..#.#..# ..#..##..###. .........#... .........#... これはずっと良く見える!のバーがTの左の境界線の上にあることに注意してくださいo。この課題では、このような長方形のグリフに簡単なカーニングプログラムを実装することがタスクです。 カーニングプロセス 二長方形の2次元文字配列考える.と#同じ形状を。単純なカーニングプロセスでは、最初に1列の.sを挟んで配列を並べて配置します。次に、#右と左の配列のいくつか#が直交または斜めに隣接するまで、右の配列のそれぞれを左に1ステップ移動します。カーニングの結果は、隣接するを導入する前のステップ#です。あなたの仕事は、このプロセスを実装することです。 例を見てみましょう: Inputs: ..### #.... #.... ..##. ...#. ...## ..### ....# Process: ..###....#. …
24 code-golf  grid  code-challenge  atomic-code-golf  code-golf  combinatorics  probability-theory  card-games  code-golf  number  geometry  code-golf  decision-problem  chess  code-golf  math  number  sequence  code-golf  string  regular-expression  code-golf  arithmetic  integer  code-golf  math  array-manipulation  code-golf  number  decision-problem  integer  code-golf  string  ascii-art  kolmogorov-complexity  code-golf  decision-problem  graph-theory  binary-matrix  code-golf  string  parsing  code-golf  string  code-golf  morse  code-golf  code-golf  string  code-golf  ascii-art  cellular-automata  code-golf  binary  base-conversion  code-golf  arithmetic  decision-problem  integer  checksum  code-golf  matrix  linear-algebra  code-golf  code-golf  game  code-golf  sequence  binary  code-golf  combinatorics  optimization  code-golf  decision-problem  quine  code-golf  rational-numbers  bitwise  code-golf  string  permutations  code-golf  kolmogorov-complexity  unicode  code-golf  ascii-art  number  code-golf  number  integer  binary  base-conversion  code-golf  array-manipulation  code-golf  chemistry  code-golf  number  sequence  fibonacci  code-golf  matrix  optimization  code-golf  number  code-golf  math  number  sequence  code-golf  math  array-manipulation  matrix  linear-algebra  code-golf  kolmogorov-complexity  cops-and-robbers  cops-and-robbers  code-golf  tips  basic  code-golf  decision-problem  binary  tiling  game  king-of-the-hill  python  code-golf  c  code-golf  ascii-art  code-golf  string  kolmogorov-complexity  alphabet  code-golf  number  code-golf  string  code-golf  number  sequence  integer  code-golf  number  permutations  restricted-complexity  restricted-time 

2
可能な限り大きな文字列に対して可能な最大実行回数を計算します
[この質問は、文字列の実行を計算するためのフォローアップです] 期間p文字列はw任意の正の整数であるpようなw[i]=w[i+p] ときはいつでも、この式の両辺が定義されています。per(w)の最小周期のサイズを示しましょうw。文字列wは周期的であると言うper(w) <= |w|/2。 したがって、非公式には、定期的な文字列は、少なくとも1回繰り返される別の文字列から構成される単なる文字列です。唯一の問題は、文字列の最後で、少なくとも1回全体が繰り返される限り、繰り返される文字列の完全なコピーを必要としないことです。 たとえば、文字列を考えますx = abcab。per(abcab) = 3としてx[1] = x[1+3] = a、x[2]=x[2+3] = bより短い期間はありません。abcabしたがって、文字列は周期的ではありません。ただし、文字列ababaはとして周期的per(ababa) = 2です。 より多くの例としては、abcabca、ababababaとabcabcabcも周期的です。 正規表現が好きな人のために、これは文字列が周期的かどうかを検出します: \b(\w*)(\w+\1)\2+\b タスクは、より長い文字列内のすべての最大周期部分文字列を見つけることです。これらは文献ではランと呼ばれることもあります。 部分文字列wは、周期的であり、w[i-1] = w[i-1+p]でもない場合、最大の周期的部分文字列(実行)ですw[j+1] = w[j+1-p]。非公式には、同じ期間のより大きな「実行」に「実行」を含めることはできません。 2回の実行は、文字列全体の異なる場所で発生する同じ文字列を表すことができるため、実行を間隔で表します。上記の定義を間隔で繰り返します。 文字列内のラン(又は最大周期サブストリング)がT間隔である [i...j]とj>=i、このような、 T[i...j] 周期のある周期的な単語です p = per(T[i...j]) それは最大です。正式には、T[i-1] = T[i-1+p]でもありませんT[j+1] = T[j+1-p]。非公式には、同じ期間のより大きな実行に実行を含めることはできません。 表すRUNS(T)文字列の実行のセットT。 実行の例 文字列の4つの最大の周期ストリング(実行)がT = atattattありT[4,5] = tt、T[7,8] = tt、T[1,4] …

3
最小の長方形カバー
長方形カバー 次のようなビットのマトリックスがあるとします。 1 1 0 0 0 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 0 1 1 0 1 1 1 0 1 このマトリックスの長方形カバーを見つけたいと思います。これは、0を含まないが、すべて1を含むマトリックスの長方形のサブセットのセットです。サブセットは互いに素である必要はありません。上記のマトリックスの長方形カバーの例を次に示します。 +----+ +----+ |1 1| 0 0 0 …

5
シュートをトリガーしてジャックポットを保護する
ゲームショーに参加します。課題の1つは次のように機能します。 最初の部屋には、多数の同一のボールが含まれています。 2番目の部屋には、一連のシュートがあり、各シュートには、ボールがいくつ置かれたかを数えるセンサーがあります。シュートに置かれたボールは回収できません。 各シュートは、一定数のボール(トリガーカウント)が投入された後にトリガーされます。トリガーされると、ライトが点滅し、ノイズが発生し、トリガーしたことは間違いありません。 N次のチャレンジに進むには、シュートをトリガーする必要があります。 トリガーのカウントは知っていますが、カウントとシュートの対応はわかりません。 最初の部屋から2番目の部屋にボールを移動する1つの機会があります。ボールをシュートに入れると、それ以上ボールを取り戻すことはできません。 あなたが取る各ボールは、ジャックポットからお金を差し引きます。 明らかに、あなたはあなたが挑戦に合格することを確実にしたいが、大当たりのお金の損失を最小限に抑えたい。プログラム、関数、動詞などを書いて、必要なボールの数を教えてください。 例 トリガーカウントが2、4、および10で、通過するために2つのシュートをトリガーする必要があるとします。10個のボールを渡す戦略があります。最初のシュートに最大4個のボール、2番目のシュートに最大4個のボール、3番目のシュートに最大4個のボールを配置します。3つのシュートの1つは2つのボールだけでトリガーするため、合計10を使用するだけです。10未満で動作することが保証されている戦略はないため、正しい出力になります。 入力 入力は、整数トリガーカウントの配列と、トリガーするシュートの数を示す整数で構成されます。どちらの順序でも2つの入力を取ることができ、必要に応じて、配列の長さで3番目の入力を取ることができます。 すべての入力がゼロよりも大きく、トリガーする必要があるシュートの数がシュートの数を超えないと仮定できます。 また、回答で明確に述べている限り、カウントがソートされている(昇順または降順)と想定することもできます。 出力 出力は、最適な戦略に必要なボールの数を示す単一の整数でなければなりません。 テストケース フォーマット: N counts solution 1 [2 4 10] 6 2 [2 4 10] 10 3 [2 4 10] 16 1 [3 5 5 5 5 5 5 5 5 5] 5 2 …

2
「サブベクトル反転」を使用してソートを最適化する
これは、最小の反転を使用してベクトルを昇順でソートすることを目的とする、操作が最も少ないチャレンジです。アルゴリズムは「サブベクトル反転」1を使用してのみベクトルをソートできますが、算術演算、ループ、ソートされているかどうかの確認などに他の演算を使用できます。アルゴリズムが実行するサブベクトル反転の数はスコアです。 1 「サブベクトル反転」: ベクトル内の数値の範囲を選択し、その範囲内の要素を逆にします。 簡単な例を挙げると、vector {4,3,2,1}から始める場合、さまざまな方法で並べ替えることができます。 ベクトル全体を反転します。これは、1回の反転のみを必要とするため、明らかに最短のアプローチです。{4,3,2,1} -> {1,2,3,4} バブルソートのバージョンを実行できます。これには、6回の取り消しが必要です。 {4,3,2,1} -> {3,4,2,1} -> {3,2,4,1} -> {2,3,4,1} -> {2,3,1,4} -> {2,1,3,4} -> {1,2,3,4} 最初の3つの要素から始めて、最後に3つ、最後に最初の2つと最後の2つで、4つのスワップが必要です。 {4,3,2,1} -> {2,3,4,1} -> {2,1,4,3} -> {1,2,4,3} -> {1,2,3,4} ... 等々。使用可能なオプションは無限にあります(必要に応じて、任意の操作を繰り返すことができます)。 ルールと要件: 100個の数字を含むリストの場合、コードは1分未満で終了する必要があります。これは自分で時間を計ることができますが、フェア2をプレイしてください。 ソリューションを検証できるように、実行するすべてのスワップの開始インデックスと終了インデックスを保存する必要があります。(これの意味を以下で説明します)。 コードは確定的でなければなりません。 数値ベクトル、リンクリスト、長さの配列など、任意の形式で入力を取得できます。 ベクターのコピーで何でもできます。これには、さまざまな反転の試行と、最も効率的なチェックが含まれます。総当たり攻撃はまったく問題ありませんが、制限時間を守ってください。 スコアは、5つのテストベクトルのフリップの総数です。タイブレーカーは日付スタンプになります。 例: 4 1 23 21 49 2 7 …

23
アスキーアートオクタゴン
入力整数を指定するとn > 1、n文字で構成される辺の長さのASCIIアートオクタゴンを出力します。以下の例を参照してください。 n=2 ## # # # # ## n=3 ### # # # # # # # # # # ### n=4 #### # # # # # # # # # # # # # # # # #### n=5 ##### # # # # # # …
22 code-golf  ascii-art  code-golf  geometry  code-golf  balanced-string  code-golf  cops-and-robbers  code-challenge  cops-and-robbers  code-golf  code-golf  random  cryptography  code-golf  array-manipulation  number  code-challenge  integer  code-golf  math  integer  code-golf  math  math  parsing  image-processing  test-battery  math  number  combinatorics  fastest-code  code-golf  code-golf  math  number-theory  rational-numbers  polynomials  code-golf  math  geometry  code-golf  code-golf  number-theory  primes  factoring  code-golf  restricted-source  code-golf  string  decision-problem  counting  code-golf  math  sequence  fibonacci  code-golf  array-manipulation  counting  code-golf  array-manipulation  number-theory  code-golf  array-manipulation  code-golf  random  code-golf  string  hexadecimal  code-golf  string  code-challenge  sorting  code-golf  number  floating-point  code-golf  sorting  code-golf  decision-problem  fibonacci  code-golf  number  combinatorics  code-golf  string  code-golf  math  code-golf  electrical-engineering  code-golf  javascript  code-golf  base-conversion  code-golf  array-manipulation  matrix  binary-matrix  code-golf  kolmogorov-complexity  python  perl  ruby  code-golf  number  code-golf  optimization  integer-partitions  code-golf  string  code-golf  ascii-art 

2
整数線形計画法
前書き 整数線形計画法のソルバーを記述します。 チャレンジ あなたの仕事は整数線形計画法(ILP)のソルバーを書くことです。ILPでは、一連の未知数(すべて整数)の線形不等式が与えられ、目標は線形関数の最小または最大を見つけることです。 たとえば、不等式の場合(混合整数線形計画法からの例) 4x+2y-15≤0 x+2y- 8≤0 x+ y- 5≤0 - x ≤0 - y ≤0 目的関数3x+2y、目的関数の最大値は12(x=2,y=3)で、最小値は0(x=y=0)でなければなりません。 入力は2D配列(または標準仕様に準拠する任意の同等物)として与えられ、各行は最終行を除く1つの不等式に対応します。配列内の数字は係数であり、その≤0部分は常に省略されます。n各行に要素がある場合、n-1未知の要素があることを意味します。 配列の最後の行は、線形関数に対応しています。係数がリストされます。 たとえば、上記の問題の入力配列は次のとおりです。 [[4,2,-15],[1,2,-8],[1,1,-5],[-1,0,0],[0,-1,0],[3,2,0]]. 出力は、適切な形式で指定された最小値と最大値である必要があります。 次の問題の場合(上記の問題から2つの制限が取り除かれます): [[4,2,-15],[1,2,-8],[1,1,-5],[3,2,0]]. 最大値はまだ12ですが、最小値は存在せず、目的関数は任意の大きな(絶対値の意味で)負の値を持つことができます。この場合、プログラムは12、回答者が決定した偽の値に従ってを出力する必要があります。別のケースは、解決策がまったくないことです。たとえば、 [[4,2,-15],[-1,-2,7],[-1,0,3],[0,1,0],[3,2,0]]. この場合、偽の値も出力する必要があります。目的関数の「最適値」が無限である場合と、解がまったくない場合を識別するのは良いことですが、これは必要ではありません。 入力には、不等式と目的関数の両方の整数係数のみが含まれます。未知数もすべて整数です。不等式の係数行列は、完全なランクを持つことが保証されています。 テストケース @KirillLの功績。元のテストスイートでバグを見つけ、ILPの問題についての理解を深めてくれました。 Input Output [[4,2,-15],[1,2,-8],[1,1,-5],[-1,0,0],[0,-1,0],[3,2,1]] [1,13] [[4,2,-15],[1,2,-8],[1,1,-5],[3,2,0]] [-inf, 12] [[4,2,-15],[-1,-2,7],[-1,0,3],[0,1,0],[3,2,0]] [NaN, NaN] [[-1,-1,-1,-1,-1,8],[1,1,1,1,0,0],[5,5,5,5,6,7]] [55, inf] [[-1,-1,-1,-1,-1,8],[1,1,1,1,0,0],[0,0,0,0,0,4]] [4, 4] [[4,2,-15],[-1,-2,7],[-1,0,3],[0,1,0],[0,0,4]] [NaN, NaN] …

11
フルーツ袋詰め工場
あなたの使命は、コンベヤーベルトから袋に果物を詰めて小売業者に送ることを最適化し、最大数の袋を最適化できるアルゴリズム(プログラムまたは機能)を構築することです。 各バッグには少なくとも一定量の重量が必要ですが、その重量を使用して別のバッグを満たすことができるため、超過分は利益を失います。袋詰め機は常にnキューからの果物を先読みしnており、処理中の(単一の)袋にこれらの果物のいずれかを追加することのみを選択できます。nキューの最初の要素を超えて見ることはできません。プログラムは、バッグの中にすでにある重量を常に正確に知っています。 これを視覚化するもう1つの方法はn、新しい果物が到着する前に果物を採取する必要がある場所に、最終的なサイズの積載エリアを備えたコンベアベルトを用意することです。最後に残った果物と満杯でない袋は廃棄されます。 入力 キュー内の果物の重量のリスト/配列(正の整数) バッグの最小総重量(正の整数) 先読みn(正の整数) 出力 アルゴリズムは、すべてのバッグについて、その中の果物の重さを返す必要があります。それは、あなたやあなたの言語にとって便利な手段であれば、その標準入力でも戻り値でもなんでもです。プログラムを実行して、コンピューターで1分でスコアを計算できるはずです。 例 Total weight 1000, lookahead of 3 and fruit queue: [171,163,172,196,156,175,162,176,155,182,189,142,161,160,152,162,174,172,191,185] One possible output (indented to show how the lookahead affects the bagging): [171,163,172, 156,175, 176] [162, 155,182,189, 161,160] [152,162,174,172,191,185] 得点 アルゴリズムは、私が用意した10000個のオレンジのバッチで、両端を含む2〜7の先読みで6回実行してテストされます。少なくとも1000ユニットの袋に詰めてください。オレンジは通常、平均重量170、標準偏差13で分布しています。 スコアは、6回の実行からのバッグの数の合計になります。最高のスコアが勝ちます。標準の抜け穴は許可されていません。 Haskellの簡単な実装例とテストスイートの定型文

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