我已经写了一些与矩阵有关的挑战,所有的共同点是在示例和测试用例中,我在表示矩阵时都使用了以下格式:
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
在许多语言中,这可能是繁琐的格式。
挑战:
编写一个程序/函数,该程序/函数可以采用顶部给出的形式的矩阵作为输入(直接从本文中复制/粘贴),并在下面显示的所有其他三种常规格式上输出相同的矩阵。
输入格式:
用不同数量的空格分隔的数字和代表行的换行符(请参见测试用例)。
- 数字之间的空格数不能保证是一致的。但是,您可以假设每列的最后一位数字对齐(如果有帮助的话)。
- 整数和浮点数都可以,它们可以是正数,负数或零。矩阵不会同时包含整数和浮点数。
- 您可以假设数字不超过10个字符,包括负浮点数的负号和小数点。
- 您可以假设每行和每列中的条目数相同。
- 不会有任何空的输入矩阵,但是可以有单个数字,或者只有一行或一列的矩阵。
- 在这些情况下,您可以在测试用例中显示的输出格式之间进行选择
如果程序/函数是直接从此帖子中复制并粘贴到解释器中的,则必须处理该输入(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""")
如果您的语言无法以任何方式将复制/粘贴的矩阵作为输入,那么恐怕您必须选择另一种语言。
输出格式:
您应该以以下三种格式输出矩阵(顺序无关紧要):
[[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
----
[[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格式才是重点。挑战将全部围绕以某些语言格式化输出,而阅读输入将是其他语言中最难的部分。
如果阅读困难,请不要气,,那些提交可能是最有趣的。空头不一定与印象深刻一样。与往常一样,鼓励您做出解释!