タグ付けされた質問 「linear-algebra」

線形代数を含む課題については、ベクトル空間の数学とそれらの間の線形マッピング。

8
UpgoatまたはDowngoat?
ヤギの画像が与えられた場合、プログラムはヤギが逆さまになっているかどうかを特定するのが最善です。 例 これらは入力が何であるかの例です。実際の入力ではありません 入力: 出力: Downgoat スペック プログラムは最大30,000バイトである必要があります 入力には完全なヤギが含まれます 写真には常にヤギが含まれます ヤギが逆さまの場合、output Downgoat、そうでない場合Upgoat ただし、入力は画像として入力できます(ファイル名、画像のbase64など)。 「Upgoat」または「Downgoat」を含む画像名またはその他のメタデータに依存しないでください。要点のファイル名は参照用です。 ハードコードしないでください。それは退屈だ、私はそれを完全に強制することはできませんが、私はうまく尋ねることができます。 テストケース 画像の要点。で始まる画像にdowngoatはDowngoat出力があり、で始まる画像にupgoatはUpgoat出力があります。 テストケースの2番目のバッチ すべてのテストケースで画像をテストしてください。これらの画像はjpgsです。画像サイズは異なりますが、それほど大きくはありません。 注:回答を受け入れる前にいくつかのテストケースを追加して、ハードコードする回答を回避し、プログラムの一般的なパフォーマンスを確認することができます。 アバターを正しく取得するためのボーナスポイント:P 得点 スコアは次の方法で計算できるパーセントです: (number_correct / total) * 100

30
小さな「H」から「H」を作成する
チャレンジ 整数を指定するとsize、次のことを行う関数またはプログラムを作成します。 size1に等しい場合、出力 H H HHH H H 場合はsize1、出力よりも大きく、 X X XXX X X どこXのプログラム/関数の出力size - 1 (必要に応じて0、回答で指定する限り、ベースケースをに対応させることができます) 次の出力形式のいずれかが受け入れられますが、どちらがより便利です。 任意の二つの異なる文字に対応する必要な構造の文字列Hとspace 対応する任意の二つの別個の値を要求される構造を有する二次元アレイ、H及びspace 任意の二つの別個の値は、対応する各列における出力の一つの行と列/文字列のリスト、Hおよびspace 各行に一定量の先行スペースがある限り、先行スペースを使用できます。2つの異なる出力文字は、異なる限り、選択したものに依存します。 コードが返す出力形式を指定します。 テストケース 1 H H HHH H H 2 H H H H HHH HHH H H H H H HH HH H HHHHHHHHH H HH HH …
73 code-golf  ascii-art  fractal  code-golf  code-golf  string  code-golf  string  matrix  code-golf  graph-theory  maze  binary-matrix  code-golf  kolmogorov-complexity  random  code-challenge  metagolf  test-battery  brain-flak  text-processing  code-golf  matrix  code-golf  number-theory  primes  code-golf  string  matrix  code-golf  binary  bitwise  code-golf  number  factorial  floating-point  code-golf  number  sequence  code-golf  sequence  cops-and-robbers  code-golf  sequence  cops-and-robbers  code-golf  string  code-golf  math  decision-problem  number-theory  integer  code-golf  number  decision-problem  functional-programming  code-golf  array-manipulation  matrix  code-golf  string  classification  string  code-challenge  binary  compression  decode  code-golf  string  string  code-challenge  balanced-string  encode  code-golf  number-theory  integer  base-conversion  code-golf  math  number-theory  geometry  abstract-algebra  code-golf  array-manipulation  sorting  optimization  code-golf  math  geometry  image-processing  generation  code-golf  string  cops-and-robbers  repeated-transformation  grammars  cops-and-robbers  repeated-transformation  grammars  code-challenge  restricted-source  tips  source-layout  javascript  code-challenge  kolmogorov-complexity  restricted-source  code-golf  combinatorics  counting  math  fastest-code  linear-algebra  code-golf  math  permutations  matrix  linear-algebra  code-golf  string  decision-problem  restricted-source  code-golf  number  array-manipulation  subsequence  code-golf  number  array-manipulation  matrix  code-golf  brainfuck  code-golf  color  code-golf  quine  source-layout  code-golf  subsequence  code-golf  string  ascii-art  code-golf  string  ascii-art  alphabet  code-golf  decision-problem  interpreter  hexagonal-grid  halting-problem  code-golf  string  polynomials  calculus  code-golf  math  decision-problem  matrix  complex-numbers  code-golf  random  code-golf  number  arithmetic 

19
私のパイは二等分されましたか?
正の整数の空でないリストを取り込むプログラムまたは関数を作成します。"1 2 3 4"またはなどの合理的で便利な形式で入力されていると想定できます[1, 2, 3, 4]。 入力リストの数値は、円グラフ全体のスライスを表します。各スライスサイズは対応する数値に比例し、すべてのスライスは指定された順序でグラフの周囲に配置されます。 たとえば、次のパイ1 2 3 4は次のとおりです。 あなたのコードが答えなければならない問題は、円グラフが今までされてい二分しますか?つまり、円の一方の側から他方の側に完全に直線があり、対称的に2つに分割されていますか? あなたはする必要があり、出力truthyの少なくとも一つの二等分線と出力がある場合に値をfalsy何も存在しない場合、値。 で1 2 3 4例との二分がある4 1と2 3出力truthyであろうように。 ただし、入力の1 2 3 4 5場合は二等分線がないため、出力は偽になります。 追加の例 数値を異なる方法で配置すると、二等分線が削除される場合があります。 例2 1 3 4→偽: 入力リストに数字が1つしかない場合、パイは二等分されません。 例10→偽: 複数の二等分線が存在する場合があります。ゼロ以上である限り、出力は真実です。 例6 6 12 12 12 11 1 12→真実:(3つの二等分線があります) 視覚的に明らかではない場合でも、2分割が存在する場合があります。 例1000000 1000001→偽: 例1000000 1000001 1→真実: (円グラフを生成してくれたnces.ed.govに感謝します。) テストケース …
43 code-golf  math  arithmetic  combinatorics  decision-problem  code-golf  sequence  number-theory  binary  code-golf  number-theory  set-theory  code-golf  hashing  code-golf  game  card-games  code-golf  ascii-art  code-golf  arithmetic  array-manipulation  jelly  code-golf  string  array-manipulation  code-golf  sorting  code-challenge  code-golf  number  date  binary  code-golf  arithmetic  code-golf  math  number  linear-algebra  polynomials  code-golf  ascii-art  code-golf  grid  decision-problem  code-golf  string  combinatorics  code-golf  string  kolmogorov-complexity  arithmetic  date  code-golf  number  data-structures  code-golf  ascii-art  kolmogorov-complexity  code-golf  string  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  array-manipulation 

30
アイデンティティマトリックスの構築
課題は非常に簡単です。入力が整数のn場合、n x n単位行列を出力します。単位行列は、1sが左上から右下に及ぶものです。作成した単位行列を返すまたは出力するプログラムまたは関数を作成します。出力は、2D配列、またはスペース/タブと改行で区切られた数値です。 入出力の例 1: [[1]] 2: [[1, 0], [0, 1]] 3: [[1, 0, 0], [0, 1, 0], [0, 0, 1]] 4: [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]] 5: [[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, …

22
基本的なASCIIタリー
代替タイトル:壁にあなたの刑務所の文を集計します numberを指定するとn、出力はグループごとに従来の5に、行ごとに50にグループ化されます。 例 1 | | | | 4 |||| |||| |||| |||| 5 |||/ ||/| |/|| /||| 6 |||/ | ||/| | |/|| | /||| | 50 |||/ |||/ |||/ |||/ |||/ |||/ |||/ |||/ |||/ |||/ ||/| ||/| ||/| ||/| ||/| ||/| ||/| ||/| ||/| ||/| |/|| |/|| …
36 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 

30
整数行列の決定要因
入力として正方整数行列を指定し、行列の行列式を出力します。 ルール マトリックス内のすべての要素、マトリックスの行列式、およびマトリックス内の要素の総数は、言語の表現可能な整数の範囲内にあると想定できます。 0の小数部を持つ10進数/浮動小数点値の出力が許可されます(例:の42.0代わりに42)。 ビルトインは許可されますが、ビルトインを使用しないソリューションを含めることをお勧めします。 テストケース [[42]] -> 42 [[2, 3], [1, 4]] -> 5 [[1, 2, 3], [4, 5, 6], [7, 8, 9]] -> 0 [[13, 17, 24], [19, 1, 3], [-5, 4, 0]] -> 1533 [[372, -152, 244], [-97, -191, 185], [-53, -397, -126]] -> 46548380 [[100, -200, …

10
Rationalsの内積を見つける
私は友人の家に夕食に行って、彼らは「素因数ベクトル空間」のアイデアを提案しました。この空間では、正の整数はベクトルとして表現され、ベクトルのn番目の要素はn番目の素数が数を分割する回数になります。(これは、ベクトルに無限の数の項があることを意味することに注意してください。)たとえば、20は 2 0 1 0 0 0 ... その素因数分解は2 * 2 * 5であるためです。 素因数分解は一意であるため、各数値は1つのベクトルに対応します。 エントリをペアごとに追加することで、ベクトルを追加できます。これは、関連付けられている数値を乗算するのと同じです。また、スカラー乗算を行うこともできます。これは、関連する数値を累乗するようなものです。 問題は、逆行列がないため、この空間は実際にはベクトル空間ではないことです。先に進んで逆行列を追加してベクトル空間を閉じると、すべての正の有理数をベクトルとして表現する方法ができました。ベクトルの加算が乗算を表すという事実を保持する場合。そして、自然数の逆数はその逆数です。 たとえば、数20のベクトルは 2 0 1 0 0 0 ... したがって、1/20の端数はその逆です -2 0 -1 0 0 0 ... 我々のような割合に関連したベクトル見つけたい場合は14/15を我々は見つけるだろう14 1 0 0 1 0 0 ... および1/15 0 -1 -1 0 0 0 ... そして、ベクトル加算を実行してそれらを乗算します 1 …

20
ファロは配列をシャッフルする
A ファロshuffleが頻繁に「シャッフル」デッキにマジシャンで使用される技術です。ファロシャッフルを実行するには、まずデッキを2つの等しい半分にカットしてから、2つの半分をインターリーブします。例えば [1 2 3 4 5 6 7 8] シャローファロは [1 5 2 6 3 7 4 8] これは何回でも繰り返すことができます。興味深いことに、これを十分な回数繰り返すと、常に元の配列に戻ります。例えば: [1 2 3 4 5 6 7 8] [1 5 2 6 3 7 4 8] [1 3 5 7 2 4 6 8] [1 2 3 4 5 6 …
31 code-golf  permutations  card-games  code-golf  graphical-output  random  code-golf  image-processing  color  code-golf  primes  code-golf  math  arithmetic  combinatorics  decision-problem  code-golf  sequence  number-theory  binary  code-golf  number-theory  set-theory  code-golf  hashing  code-golf  game  card-games  code-golf  ascii-art  code-golf  arithmetic  array-manipulation  jelly  code-golf  string  array-manipulation  code-golf  sorting  code-challenge  code-golf  number  date  binary  code-golf  arithmetic  code-golf  math  number  linear-algebra  polynomials  code-golf  ascii-art  code-golf  grid  decision-problem  code-golf  string  combinatorics  code-golf  string  kolmogorov-complexity  arithmetic  date  code-golf  number  data-structures  code-golf  ascii-art  kolmogorov-complexity  code-golf  string  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  array-manipulation 

10
シンボリック行列乗算
行列の乗算を説明する方法はたくさんあります。ここのほとんどの人はそれに精通していると思うので、私は単一の図に固執します(そして図は非常に記述的です)。より詳細な情報が必要な場合は、ウィキペディアの記事、またはWolframMathWorldの説明をご覧になることをお勧めします。 簡単な説明: あなたは二つの行列、持っていると仮定AとB、Aが 3行2であり、Bは 2行3です。これらに対してAB、BAのいずれかの行列に行列乗算を実行すると、以下の結果が得られます。 チャレンジ: 言語にシンボリック行列乗算を実装します。入力として2つのマトリックスを使用します。ここで、マトリックス内の各要素は非空白ASCII文字(コードポイント33〜126)で表されます。これらの行列の積を出力する必要があります。 出力に関する規則: 2つのエントリの製品には、間に記号を入れてはなりません。それはだab、ではないa*b、a·b、times(a,b)または類似した何か。でaaはありませんa^2。 用語の合計には、間にスペース(ASCIIコードポイント32)が必要です。それa bはa+b、ではなく、plus(a,b)または類似したものです。 これら2つのルールの理論的根拠は次のとおりです。すべての非空白文字は行列内の記号として許可されているため、数学記号として使用するのは面倒です。だから、あなたが普通に書くことができるものはそうa*b+c*dなりますab cd。 条件の順序を選択できます。ab cd、dc abおよびcd ba数学的に同じことを話しているので、あなたもここに順序を選択することができます。数学的に正しい限り、順序は一貫している必要はありません。 マトリックスのフォーマットに関する規則: マトリックスは、行間に区切り文字のない単一の文字列を除き、任意の形式で入力できます(これは、出力が完全に台無しになるためです)。両方の行列は同じ形式で入力する必要があります。以下の例はすべて、マトリックスを入力および出力する有効な方法です。 "ab;cd" <- This will look awful, but it's still accepted. "a,b\nc,d" [[a,b],[c,d]] [a, b] [c, d] これにより面倒に見える多くのフォーマットが可能になることは承知していますが、課題は出力のフォーマットではなく行列の乗算です。 一般的なルール: 有効な入力を想定することができます。行列の乗算は、指定された次元で常に可能です。 マトリックスは2つしかありません。 行列が空でないと仮定することができます 組み込み関数が受け入れられます(ただし、書式設定の要件のため、おそらく少し面倒です)。 もちろん、必要に応じて(\'ではなく')入力にエスケープ文字を使用できます。 標準の入出力方法はすべてOKです。 テストケース: 2つの入力行列は、間に空の行が表示されています。出力はの後に表示されOutput:ます。2つの出力マトリックスがある場合、受け入れられる他の出力を表示するだけです。 テストケース#1 Inputs: [a] [b] Output: …

17
ヴァンダーモンドの決定要因
n値のベクトルが与えられる(x1,x2,x3,...,xn)と、対応するVandermonde行列の行列式を返します。 この決定要因は次のように記述できます。 詳細 プログラム/関数は、可変長を可能にする便利な形式の浮動小数点数のリストを受け入れ、指定された行列式を出力する必要があります。 入力と出力は、言語がサポートする値の範囲内にあると想定できます。ご使用の言語が浮動小数点数をサポートしていない場合、整数と見なすことができます。 いくつかのテストケース 2つの等しいエントリ0が存在する場合、対応するVandermondeマトリックスには2つの等しい行があるため、行列式が決定されることに注意してください。この欠落したテストケースを指摘してくれた@randomraに感謝します。 [1,2,2,3] 0 [-13513] 1 [1,2] 1 [2,1] -1 [1,2,3] 2 [3,2,1] -2 [1,2,3,4] 12 [1,2,3,4,5] 288 [1,2,4] 6 [1,2,4,8] 1008 [1,2,4,8,16] 20321280 [0, .1, .2,...,1] 6.6586e-028 [1, .5, .25, .125] 0.00384521 [.25, .5, 1, 2, 4] 19.3798828

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 

8
ビリヤードボールの衝突
衝突直前のビリヤードボールの2次元の位置と速度を考慮して、完全に弾性衝突した後の速度を計算します。ボールは、同じ半径、同じ質量、均一な密度、および摩擦のない理想的な球体(または同等:円)と見なされます。 入力は8個の数字から構成されています。p0x,p0y,v0x,v0y,p1x,p1y,v1x,v1yここで、p0x,p0y第1のボールの中心であり、v0x,v0yその速度、および同様にp1x,p1y,v1x,v1y第2のボールのために。入力を任意の順序で受け入れ、便利な方法で構造化できます。たとえば、2x2x2配列、またはpandの2x2配列とandの2つのlength-2配列v0などv1です。また、xyペアの代わりに複素数(言語でサポートされている場合)を使用しても問題ありません。ただし、デカルト座標以外の座標系では入力しないでください。つまり、極座標は使用できません。 ビリヤードボールの半径はp0x,p0yとの間の距離の半分であることに注意してください。そのp1x,p1yため、入力の明示的な部分としては与えられません。 便利なデカルト表現で4つの数値を出力または返すプログラムまたは関数を記述しますv0x,v0y,v1x,v1y。衝突後の値です。 可能なアルゴリズムは次のとおりです。 両方の中心を通る法線を見つける 2つの中心の中間点を通り、法線に垂直な接線を見つける 変更は、システムを調整し、打破v0x,v0yし、v1x,v1yその接線と通常の成分へv0t,v0nとv1t,v1n v0およびの法線成分を交換し、v1接線成分を保存します 元の座標系に戻す テスト(小数点以下5桁に丸められた結果): p0x p0y v0x v0y p1x p1y v1x v1y -> v0x' v0y' v1x' v1y' [-34.5,-81.8, 34.7,-76.1, 96.2,-25.2, 59.2,-93.3] [ 49.05873, -69.88191, 44.84127, -99.51809] [ 36.9, 77.7,-13.6,-80.8, -7.4, 34.4, 15.1,-71.8] [ 5.57641, -62.05647, -4.07641, -90.54353] [-51.0, 17.6, 46.1,-80.1, 68.6, 54.0,-35.1,-73.9] [ …

27
一般化されたマトリックストレース
インスピレーション。 与えられた(とにかく): 2つの引数(または2つの要素のリストで構成される単一の引数)ブラックボックス関数、(入力と出力は1、2、3、…)f: ℤ+ × ℤ+ → ℤ+ 少なくとも2行2列の厳密に正の整数行列 行列の関数traceを返します。 関数トレースとは何ですか? 通常のマトリックストレースは、マトリックスの主な対角線(左上から右下)の合計です。 [[1,2,3],[4,5,6],[7,8,9]]→ [1,5,9]→ 1+5+9→15 しかし、加算する代わりfに、対角線に沿って適用したい: [[1,2,3],[4,5,6],[7,8,9]]→ [1,5,9]→ f(f(1,5),9)かf(1,f(5,9)) 左から右または右から左のどちらを使用するかを明記してください。 指定された行列とすべての中間値は、言語の整数ドメイン内の厳密に正の整数になります。行列は非正方形の場合があります。 例 f(x,y) = xy、[[1,2,3],[4,5,6],[7,8,9]]→ 1×5×9→45 f(x,y) = xy、[[1,2,3],[4,5,6],[7,8,9]]→ →1591 f(x,y) = x-y、[[4,5,6],[1,2,3]]→ 4-2→2 f(x,y) = (x+y)⁄2、[[2,3,4],[5,6,7],[8,9,10]]→ 5または7 f(x,y) = x+2y、[[1,2,3],[4,5,6],[7,8,9]]→ 47または29 f(x,y) = max(x,y)、[[1,2,3],[4,5,6],[7,8,9]]→ max(1,5,9)→9 f(x,y) = 2x、[[1,2,3],[4,5,6],[7,8,9]]→ 2または4 …

16
3行3列の行列の逆行列を見つける
チャレンジ a, b, c, d, e, f, g, h, i入力として、正方行列に対応する9つの数値を与えます。 M=⎛⎝⎜adgbehcfi⎞⎠⎟M=(abcdefghi)\mathbf{M} = \begin{pmatrix}a& b& c\\ d& e& f\\ g& h& i\end{pmatrix} 行列の逆行列M−1M−1\mathbf{M}^{-1}を見つけて、その成分を出力します。 逆行列 3 x 3の逆行列は、次の式に従います。 MM−1=M−1M=I=⎛⎝⎜100010001⎞⎠⎟MM−1=M−1M=I=(100010001)\mathbf{MM}^{-1} = \mathbf{M}^{-1}\mathbf{M} = \mathbf{I} = \begin{pmatrix}1&0&0\\0&1&0\\0&0&1\end{pmatrix} そして、次のように計算できます: M−1=1det(M)CTM−1=1det(M)CT\mathbf{M}^{-1} = \frac{1}{\det(\mathbf{M})}\mathbf{C}^T ここで、は補因子の行列です。CC\mathbf{C} C=⎛⎝⎜ei−fhch−bibf−cefg−diai−cgcd−afdh−egbg−ahae−bd⎞⎠⎟C=(ei−fhfg−didh−egch−biai−cgbg−ahbf−cecd−afae−bd)\mathbf{C}=\begin{pmatrix}ei-fh&fg-di&dh-eg\\ch-bi&ai-cg&bg-ah\\bf-ce&cd-af&ae-bd\end{pmatrix} そして、は転置です。CCTCT\mathbf{C}^TCC\mathbf{C} CT=⎛⎝⎜ei−fhfg−didh−egch−biai−cgbg−ahbf−cecd−afae−bd⎞⎠⎟CT=(ei−fhch−bibf−cefg−diai−cgcd−afdh−egbg−ahae−bd)\mathbf{C}^T = \begin{pmatrix}ei-fh&ch-bi&bf-ce\\fg-di&ai-cg&cd-af\\dh-eg&bg-ah&ae-bd\end{pmatrix} そしての決定要因である。Mdet(M)det(M)\det(\mathbf{M})MM\mathbf{M} det(M)=a(ei−fh)−b(di−fg)+c(dh−eg)det(M)=a(ei−fh)−b(di−fg)+c(dh−eg)\det(\mathbf{M}) = a(ei-fh)-b(di-fg)+c(dh-eg) 実施例 たとえば、入力がであるとしましょう0, -3, …

13
ハフニアンのコードゴルフ
課題は、行列のハフニアンの codegolfを書くことです。2n行ごとの2n対称行列のハフニアンは、A次のように定義されます。 ここで、S 2nはから1までの整数のすべての順列のセット2n、つまりを表し[1, 2n]ます。 ウィキペディアのリンクでは隣接行列について説明していますが、コードは実際の値の対称入力行列に対して機能するはずです。 ハフニアンのアプリケーションに興味のある人のために、mathoverflowリンクでもう少し説明します。 コードは必要に応じて入力を受け取り、適切な形式で出力できますが、コードに入力を提供するための明確な指示を含む完全に機能する例を回答に含めてください。 入力行列は常に正方で、最大16 x 16です。空の行列または奇数次元の行列を処理できる必要はありません。 リファレンス実装 Xcoder氏のpythonコードの例を次に示します。 from itertools import permutations from math import factorial def hafnian(matrix): my_sum = 0 n = len(matrix) // 2 for sigma in permutations(range(n*2)): prod = 1 for j in range(n): prod *= matrix[sigma[2*j]][sigma[2*j+1]] my_sum += prod return my_sum …

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