Создание конкретного шаблона с двумерным массивом в Scala - PullRequest
0 голосов
/ 22 ноября 2018

Так что моя проблема в том, что я хотел бы изменить значения двумерного массива 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 10 0 0
0 0 1 1 1 1 1 0 0
0 1 1 1 1 1 1 1 0
1 1 1 1 1 1 1 1 1
0 1 1 1 1 1 1 10
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

Oh, а размер всегда нечетныйцелое число, очевидно, чтобы можно было создать эту наклонную квадратную «форму».Пожалуйста, помогите !!

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018
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)
   }
 } 
0 голосов
/ 22 ноября 2018

Должно быть так:

  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)
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...