所以我的问题是我想将二维int数组的值更改为1,以便数组看起来像这样
0 0 1 0 0
0 1 1 1 0
1 1 1 1 1
0 1 1 1 0
0 0 1 0 0
我的函数中有一个等于数组大小的参数“ size”。因此,无论阵列大小如何,我都想创建此模式
大小等于9的示例:
0 0 0 0 1 0 0 0 0
0 0 0 1 1 1 0 0 0
0 0 1 1 1 1 1 0 0
0 1 1 1 1 1 1 1 0 0
1 1 1 1 1 1 1 1 1
0 1 1 1 1 1 1 1 0 0
0 0 1 1 1 1 1 0 0
0 0 0 1 1 1 0 0 0
0 0 0 0 1 0 0 0 0
哦,大小显然是一个奇数整数,因此可以创建这种倾斜的正方形“形状”。请帮忙!
答案 0 :(得分:1)
应该是这样的:
def createDiamond(size: Int) = {
require(size % 2 != 0, "size must be odd")
def innerIterator(limit: Int) = {
(0 until size).map{ column =>
if(column > ((size / 2) + limit) || column < ((size / 2) - limit)) "0"
else "1"
}.mkString(" ") + "\n"
}
val str = (0 until size).map{ row => if(row <= size / 2) innerIterator(row) else innerIterator(size - row - 1)}.mkString("")
println(str)
}
答案 1 :(得分:0)
def createFilter(size: Int, value: Int) :Array[Array[Int]] = {
val middle = size / 2
if (size % 2 == 1) {
Array.fill(size, size)(value)
} else {
Array.tabulate(size + 1, size + 1)((x, y) =>
if (abs(middle - x) + abs(middle - y)
<= middle) value else 0)
}
}