マトリックスに関連するいくつかの課題を書きましたが、すべての場合に共通するのは、マトリックスを表現するときに、例とテストケースの両方で、次のような形式を使用することです。
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
これは、多くの言語では面倒な形式である可能性があります。
チャレンジ:
入力としてtopで指定された形式の行列を取得できるプログラム/関数を作成し(この投稿から直接コピー/貼り付け)、以下に示す他の3つの従来の形式すべてで同じ行列を出力します。
入力形式:
さまざまな数のスペースで区切られた数字、および行を表す改行(テストケースを参照)。
- 数字間のスペースの数は、一貫しているとは限りません。ただし、各列の最後の桁が揃っていると想定することもできます(それが役立つ場合)。
- 整数と浮動小数点の両方があり、それらは正、負、またはゼロです。マトリックスには、整数と浮動小数点数が同時に含まれません。
- 負の浮動小数点数のマイナスと小数点を含めて、10文字より長い数字はないと想定できます。
- 各行と各列に同じ数のエントリがあると仮定できます。
- 空の入力マトリックスはありませんが、単一の数値、または行または列が1つだけのマトリックスを使用できます。
- これらの場合、テストケースに示されている出力形式から選択できます。
プログラム/関数は、この投稿から直接コピーされ、インタープリターに貼り付けられた場合(STDINまたは関数の引数または同等のものとして)入力を処理する必要があります。マトリックスの前後に、好きなもの(括弧、引用符、括弧)を置くことができますが、マトリックスを変更できない文字列(改行を含む)と見なす必要があります。
明確にするために:関数/プログラムが呼び出さf
れ、マトリックスが次のとおりであると仮定します。
1 -2
3 5
6 7
次に、このような関数引数として行列を与えることができます(そして他の無限に多くのオプション):
f(1 -2
3 5
6 7)
f([1 -2
3 5
6 7])
f("""1 -2
3 5
6 7""")
あなたの言語が入力としてコピー/貼り付けられたマトリックスを取ることができない場合は、別の言語を選択する必要があると思います。
出力形式:
次の3つの形式でマトリックスを出力する必要があります(順序は関係ありません)。
[[16, 2, 3, 13], [5, 11, 10, 8], [9, 7, 6, 12], [4, 14, 15, 1]]
{{16, 2, 3, 13}, {5, 11, 10, 8}, {9, 7, 6, 12}, {4, 14, 15, 1}}
[16, 2, 3, 13; 5, 11, 10, 8; 9, 7, 6, 12; 4, 14, 15, 1]
- 必要に応じて3つの出力を分離できます(例:改行)
- 入力と同じ精度を使用して数値を出力する必要があります(たとえば、小数点以下の桁数を切り捨てたり、整数を浮動小数点数として出力したりしないでください)。
- スペースは必須です
-
負の数には使用しないでください_
。
テストケース:
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
----
[[16, 2, 3, 13], [5, 11, 10, 8], [9, 7, 6, 12], [4, 14, 15, 1]]
{{16, 2, 3, 13}, {5, 11, 10, 8}, {9, 7, 6, 12}, {4, 14, 15, 1}}
[16, 2, 3, 13; 5, 11, 10, 8; 9, 7, 6, 12; 4, 14, 15, 1]
0.14778 0.27114 0.24415
0.45997 0.12287 0.67470
0.28945 0.37928 0.51887
----
[[0.14778, 0.27114, 0.24415], [0.45997, 0.12287, 0.6747], [0.28945, 0.37928, 0.51887]]
{{0.14778, 0.27114, 0.24415}, {0.45997, 0.12287, 0.6747}, {0.28945, 0.37928, 0.51887}}
[0.14778, 0.27114, 0.24415; 0.45997, 0.12287, 0.6747; 0.28945, 0.37928, 0.51887]
-0.0398301 0.2403455 -0.2253368 0.3565870 0.0605803 0.0830780
-0.3254422 -0.1185191 -0.2989537 0.1647319 0.3621135 0.2018815
-0.0022281 -0.3362287 -0.3568447 0.4419063 0.3801872 -0.2847033
---
[[-0.0398301, 0.2403455, -0.2253368, 0.3565870, 0.0605803, 0.0830780], [-0.3254422, -0.1185191, -0.2989537, 0.1647319, 0.3621135, 0.2018815], [-0.0022281, -0.3362287, -0.3568447, 0.4419063, 0.3801872, -0.2847033],]
{{-0.0398301, 0.2403455, -0.2253368, 0.3565870, 0.0605803, 0.0830780}, {-0.3254422, -0.1185191, -0.2989537, 0.1647319, 0.3621135, 0.2018815}, {-0.0022281, -0.3362287, -0.3568447, 0.4419063, 0.3801872, -0.2847033},}
[-0.0398301, 0.2403455, -0.2253368, 0.3565870, 0.0605803, 0.0830780; -0.3254422, -0.1185191, -0.2989537, 0.1647319, 0.3621135, 0.2018815; -0.0022281, -0.3362287, -0.3568447, 0.4419063, 0.3801872, -0.2847033]
0 4 1 0
0 0 -6 0
0 1 4 -3
2 0 0 8
0 0 0 0
----
[[0, 4, 1, 0], [0, 0, -6, 0], [0, 1, 4, -3], [2, 0, 0, 8], [0, 0, 0, 0]]
{{0, 4, 1, 0}, {0, 0, -6, 0}, {0, 1, 4, -3}, {2, 0, 0, 8}, {0, 0, 0, 0}}
[0, 4, 1, 0; 0, 0, -6, 0; 0, 1, 4, -3; 2, 0, 0, 8; 0, 0, 0, 0]
1
----
[1] (or [[1]])
{1} (or {{1}})
[1] (or 1)
1 2
----
[1, 2] (or [[1, 2]])
{1, 2} (or {{1, 2}})
[1, 2]
4
5
----
[[4], [5]]
{{4}, {5}}
[4; 5]
私は完全に承知しているこのが、この挑戦に、面倒なI / O形式は、全体のポイントです。課題は、一部の言語で出力をフォーマットすることであり、他の言語では入力を読むことが最も難しい部分です。
入力を読むのが難しい場合、落胆しないでください。これらの投稿は最も興味深いものかもしれません。ショートは必ずしも印象的と同じではありません。そしていつものように、説明が奨励されています!