每周挑战204
#python #perl #theweeklychallenge

abioqian0,My solutions

任务1:单调阵列

任务

您有一个整数。

编写一个脚本以找出给定数组是否单调。打印1如果是否则0。

阵列是单调的,如果单调增加或减小。

我的解决方案

这是相对直接的,因此并不需要太多解释。如果最后一个值小于第一个值,则使用python中的n[::-1]或perl中的reverse函数反转数组。这意味着如果阵列单调,则阵列将始终增加。

然后,我比数组的长度少量迭代0到2。对于每次迭代,我检查该位置的值是否小于或等于下一个值。如果不是,我返回0

如果我们到达迭代的末尾,我们知道这些值是单调的,并返回1

例子

$ ./ch-1.py 1 2 2 3
1

$ ./ch-1.py 1 3 2
0

$ ./ch-1.py 6 5 5 4
1

任务2:重塑矩阵

任务

您有一个矩阵(m x n)和两个整数(r)和(c)。

编写一个脚本以用给定矩阵中的原始值重塑给定的矩阵(r x c)。如果您可以重塑打印0。

我的解决方案

有时挑战的一部分是弄清楚如何解析输入。在这种情况下,我有点作弊,只是在所有参数中都竭尽全力,然后从中提取整数。这是因为最终我们实际上并不关心输入矩阵。

一旦泥浆,我就删除了最后两个整数,并将它们存储为rc。 Perl有splice方法可以做到这一点。 python似乎没有等效的,所以我一次只是将它们弹出。

下一步是设置输入阵列的长度是rc的乘积。如果不是,我返回0并退出。

最后一步是打印新矩阵。这次Python确实具有支持1以外的步骤的范围运算符。对于perl,我使用了c风格进行循环。

例子

$ ./ch-2.py "[ 1 2 ] [ 3 4 ]" 1 4
[ 1 2 3 4 ]

$ ./ch-2.py "[ 1 2 3 ] [ 4 5 6 ]" 3 2
[ 1 2 ]
[ 3 4 ]
[ 5 6 ]

$ ./ch-2.py "[ 1 2 ]" 3 2
0