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

行列は、行と列を持つ長方形に配置された数値のリストです。プログラミングでは、2Dアレイとも呼ばれます。マトリックスの操作に関する課題の場合は、このタグを使用してください。

16
ローマ軍の盾
サンドボックスの投稿(削除済み) 古いローマ軍隊は世界中で非常に有名です。これらの陣形では、ローマ軍団は幾何学形状(通常は長方形)にグループ化され、側面を保護し、シールドを使用してその側面を保護します。内部の位置にいる軍団はシールドを頭の上に置いて上部を覆い、側面の軍団は2つ以上のシールドを運んだ。彼は3つの盾を持っていました、誰かが5つの盾を持っていたフォーメーションに一人でいた場合はい、私は人間が5つの盾を運ぶことは不可能ですが、どういうわけか彼らはそれをしました)。このフォーメーションを使用して、すべてのローマ軍団は自分自身を保護し、当時最も困難な敵でした。 歴史は、ローマの将軍が、最高のフォーメーションの形状は正方形(行と列の同数の軍団員)であると述べていたと伝えています。問題は、次の目的で軍隊を分割する必要があるフォーメーション(およびサイズ)の数を把握することでした。 軍団をフォーメーションから外さないでください(ただし、彼は単一の軍団フォーメーションを認めました) 必要なシールドの量を減らす 一般的に、彼はいくつかの数学と計算を行った後、この2つの条件を達成する最良の方法は、可能な限り最大の正方形から始め、軍団がなくなるまで繰り返すことだと考えました。 例: 彼の軍隊に35人の軍団がいる場合、フォーメーションは 5x5の軍団の広場(これが可能な最大の広場です)。 残りの軍団(10) 3x3の正方形 残りの軍団(1) 1x1の正方形。 最後に次のようになります。 5x5 * * * * * 3x3 * * * * * * * * 1x1 * * * * * * * * * * * * * * * * * * * * …
26 code-golf  matrix 

3
ゴルフ無料ランチ
為替レート表を指定して、最大の利益をもたらす一連の交換を見つけます。 例として、通貨考えるriary(ホーム通貨)、Bの AHT、Cの EDI、およびDのいずれかから別の速度は(任意のトランザクションレートが課された後)に(行、列)エントリによって与えられるenarを以下の為替レート表: TO A B C D A 0.9999 1.719828 4.509549 0.709929 F B 0.579942 0.9999 2.619738 0.409959 R O C 0.219978 0.379962 0.9999 0.149985 M D 1.39986 2.429757 6.409359 0.9999 明らかにAをAに交換することは、このデスクが何もしないことで喜んで請求するので、素晴らしいアイデアではありません。 それほど明らかではありませんが、このテーブルでは、Aを他の通貨と交換してから再び交換することは損失メーカーです。 via B: 1.719828 × 0.579942 = 0.997400489976 via C: 4.509549 × 0.219978 = 0.992001569922 via …

12
放火犯の子守Findを探す
放火犯が町を歩き回って、非常に特定のパターンに従って犠牲者を選ぶことを想像してください(あるいは、庭の周りを飛んで、非常に特定のパターンに従って花粉を取るために花を選ぶ蜂を想像してください)。町がN×N行列であるとします。ここで、Nは2以上の整数です。放火犯は左上隅から開始し、家の前にM個のスポットを順番に設定します(Mは現在いる家の数です)。各火災の後に移動する方向を順番に変更します。東⟶南⟶西⟶北⟶東⟶南...など。子守唄放火犯のMは、町を出るようにするMの値です(つまり、憎むべきことを止める前に最後に訪れる家)。これは例で理解しやすい方法です。たとえば、次のマトリックスをご覧ください。 3 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1 左上隅から開始するので、M = 3(X放火犯の現在位置と前位置をマークします): X 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 …

30
直交ステップ
2Dマトリックス内をナビゲートすることは一般的な問題です。私たちは何度も見てきましたが、また見ます。それでは、将来の私たちを助け、2Dマトリックスで可能な8つのステップすべてを生成する最短のソリューションを開発しましょう。 チャレンジ コードは、次の8ペアの-1,0,1を任意の順序で出力する必要があります。 (0,1) (0,-1) (1,0) (-1,0) (1,1) (1,-1) (-1,1) (-1,-1) ルール 入力はありません。 出力順序は関係ありません 出力は柔軟です。数字のペアは区別できる必要があります これはcode-golfなので、バイト単位の最短回答が勝ちます

29
回転合計
入力として正の整数を含む正方行列を取得し、行列の「回転和」を計算します。 回転合計: 元の行列と同じ行列を90、180、270度回転させた合計を取ります。 マトリックスが次のとおりであると仮定します。 2 5 8 3 12 8 6 6 10 回転した合計は次のようになります。 2 5 8 8 8 10 10 6 6 6 3 2 3 12 8 + 5 12 6 + 8 12 3 + 6 12 5 = 6 6 10 2 3 6 8 5 …

22
それは良い2048ボードですか?
これがここでの私の最初の質問ですので、コメントの提案は大歓迎です!ありがとう;) 前書き 以下のための1つの非常に一般的な戦略2048のゲームはありません下にスワイプ今までにありません。これにより、すべての大きな数字が上部に、下部の数字が下部に配置されます。したがって、この戦略を正しく適用すると、ボードは常に次のパターンに一致します。 チェックするパターン/あなたのタスク 提出は、完全なプログラムか、ボードが次のように記述できる場合に真実の値を返す関数のいずれかである必要があります。最初の数字以下など。適切な2048ボードは、一番上の数字が一番上にあるボードとして定義されます。これはcode-golfであるため、言語ごとの最短コード(バイト単位)が優先されます。 I / O 入力は、それぞれが4つの数字を含む4つの配列の配列、または16の数字の配列など、任意の適切な方法で取得できます。合計で、4x4ボードを表す合計16の数値に なります。出力は入力の真の値である必要があり、それ以外の場合は偽の値です。 例 真実: |-------------------| | 16 | | 64 | 8 | |-------------------| | 8 | | 32 | 8 | |-------------------| | 4 | | 32 | 2 | |-------------------| | 2 | | | | |-------------------| |-------------------| | 16 …

30
ほとんどの非ゼロ要素を持つ行のインデックス
これは単純なものです。整数の行列を入力として受け取り、ゼロ以外の要素が最も多い行のインデックスを出力します。ゼロ以外の要素が最も多い行は1つだけであると想定できます。 テストケース: これらは1インデックス付きです。0インデックスまたは1インデックスを選択できます。 1 0 row = 1 --- 0 -1 0 0 row = 1 --- 1 1 0 0 0 0 0 5 0 0 2 3 0 0 0 0 5 6 2 2 row = 4 --- 0 4 1 0 0 0 -6 0 0 …
26 code-golf  matrix 

30
チェッカーボードマトリックスを作成する
入力として正の整数nを取り、1と0で構成されるn行n列のチェッカーボード行列を出力します。 左上の数字は常に1でなければなりません。 テストケース: n = 1 1 n = 2 1 0 0 1 n = 3 1 0 1 0 1 0 1 0 1 n = 4 1 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1 入力および出力形式はオプションです。行列をリストのリストとして出力することができます。

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: …

9
できるだけ早くパーマネントを計算します
課題は、行列のパーマネントを計算するために可能な限り速いコードを書くことです。 永久n行列のn行列A=( ai,j)は以下のように定義されます ここでS_nのすべての順列の集合を表します[1, n]。 例として(wikiから): この質問では、行列はすべて正方形で、値-1と1その中のみを持ちます。 例 入力: [[ 1 -1 -1 1] [-1 -1 -1 1] [-1 1 -1 1] [ 1 -1 -1 1]] 永久: -4 入力: [[-1 -1 -1 -1] [-1 1 -1 -1] [ 1 -1 -1 -1] [ 1 -1 1 -1]] 永久: 0 …

11
これはパスカルの行列ですか?
でパスカルの三角形各番号はゼロとして空のスポットを治療する、直接上記2つの数の合計です。 三角形を回転させることで、Pascalの行列と呼ぶさまざまなサイズと回転の正方行列を切り取ることができます。これらの行列は常に上位を含む必要があることに注意してください。ここではいくつかの例を示します。111 1 1 1 1 1 2 3 4 1 3 6 10 1 4 10 20 6 3 1 3 2 1 1 1 1 1 5 15 35 70 1 4 10 20 35 1 3 6 10 15 1 2 3 4 5 1 1 1 …

8
爆発する数字
サンドボックス(削除済み) 9の行列を次のように定義してみましょう: N= ⎡⎣⎢999999999⎤⎦⎥N=[999999999] N = \begin{bmatrix} 9&9&9\\9&9&9\\9&9&9 \end{bmatrix} 爆発する数を位置(x 、 y)(バツ、y)(x,y)数として定義します。これは、すべての隣接する隣人(それ自体を含む)の間で等しい整数に分解でき、各部分の絶対値は0より大きいです。 前マトリックスから、位置番号を爆発することができます(1 、1 )(1、1)(1,1)(0インデックス付き) N=⎡⎣⎢999999999⎤⎦⎥N=[999999999] N = \begin{bmatrix} 9&9&9\\9&\color{red}9&9\\9&9&9 \end{bmatrix} N=⎡⎣⎢9+19+19+19+10+19+19+19+19+1⎤⎦⎥N=[9+19+19+19+10+19+19+19+19+1] N = \begin{bmatrix} 9+\color{red}1&9+\color{red}1&9+\color{red}1\\9+\color{red}1&\color{blue}0+\color{red}1&9+\color{red}1\\9+\color{red}1&9+\color{red}1&9+\color{red}1 \end{bmatrix} N=⎡⎣⎢10101010110101010⎤⎦⎥N=[10101010110101010] N = \begin{bmatrix} 10&10&10\\10&\color{red}1&10\\10&10&10 \end{bmatrix} 場合によっては、結果を1より大きい有理数に分解します。これは、数値を爆発させるときに避ける必要があるものです。この場合、残りは展開された番号に割り当てられます。 それを実証するために、以前のマトリックスで作業を続けましょう。我々は位置の数を爆発する。この時間(0,0)(0,0)(0,0) N=⎡⎣⎢10101010110101010⎤⎦⎥N=[10101010110101010] N = \begin{bmatrix} \color{red}{10}&10&10\\10&1&10\\10&10&10 \end{bmatrix} ここには、3つのネイバーと番号自体があります。ここで式のようなものである10/410/410/4私たちに与える2をそれぞれのための2余りなど。 N= ⎡⎣⎢2 + 210 + 21010 + 21 …
25 code-golf  matrix 

12
輪郭を描く
標高の長方形のマトリックスを指定して、その輪郭を描きます。 仕事 の場合、2つの要素xとyは同じ輪郭レベルにありますfloor(x/10) == floor(y/10)。たとえば、52と58は同じ等高線レベルにありますが58、そうで64はありません。 輪郭を描く動作は次のように定義されます。すべての要素についてe、次のように選択した2文字の文字列に置き換えます。 最初の文字は" "、下の要素eが同じ輪郭レベルにあるeか、下の要素がないかe、"_"そうでない場合 2番目の文字は" "、右側の要素がe同じ輪郭レベルにあるeか、右側の要素がない場合、eまたは"|"そうでない場合 行内の要素が結合され、次に行が改行で結合されます。 例 入力が[[5,20],[3,6]]、次のように視覚化されているとしましょう 5 20 3 6 最初に見てください5。以来、3同じ等高線レベルであり5、最初の文字です" "。20はと等高線レベルにないため5、2番目の文字は"|"です。 今、私たちは見てください20。6はと等高線レベルにないため20、最初の文字は"_"です。の右側に要素がないため20、2番目の文字は" "です。 今、私たちは見てください3。下3に要素がないので、最初の文字は" "です。以来、6同じ等高線レベルにあり3、第二の文字があります" "。 今、私たちは見てください6。下6に要素がないので、最初の文字は" "です。の右側に要素がないため6、2番目の文字は" "です。 これらの2文字の文字列に基づいて、getを置き換える[[" |","_ "],[" "," "]]。これらを結合すると、次の出力が得られます |_ ルール 入力行列は常に長方形で、正の整数で構成されます。 末尾のスペースまたは改行は任意の量(0を含む)であり、一貫性がある必要はありません。 同じ結果が得られる限り、同じアルゴリズムに従う必要はありません。 プログラムまたは関数は、改行で区切られた文字列、文字列のリスト、または同等のものを出力する場合があります。 これはcode-golfであるため、バイト単位の最短コードが優先されます。 テストケース input output [[1,5,8,9],[3,11,13,8],[7,14,10,9],[4,8,7,6]] _ _ | | |_ _| [[0,10,20,30,40,50,60,70,80,90],[0,0,10,10,20,20,30,30,40,40],[0,0,0,10,10,10,20,20,20,30],[0,0,0,0,10,10,10,10,20,20],[0,0,0,0,0,10,10,10,10,10],[0,0,0,0,0,0,10,10,10,10],[0,0,0,0,0,0,0,10,10,10],[0,0,0,0,0,0,0,0,10,10],[0,0,0,0,0,0,0,0,0,10],[0,0,0,0,0,0,0,0,0,0]] …

4
インターレース回転
チャレンジ 文字の正方行列(1バイトの印刷可能なASCII文字)を指定すると、行列の各「リング」を反対方向に回転させます。 例を見てみましょう: 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P 次に、次のように、最も外側のリングが時計回りに90度回転します。 1 2 3 4 5 L G B 6 1 6 A M 2 B F => N 3 G K …
25 code-golf  matrix 

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

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