Двумерные массивы


#1

Задали очередное задание. Помогите советом

вот реализация этого задания. вдруг кому то пригодиться

var desk = Array(repeating: Array(repeating: 0, count: 8), count: 8)

let (x,y) = (0,3)

for (index1,element1) in desk.enumerated()
{
for (index2,element2) in element1.enumerated()
{
if (index1 == x)
{
desk[index1][index2] = 1
} else if (index2 == y)
{
desk[index1][index2] = 1
} else if (abs(index1-x) == abs(index2-y))
{
desk[index1][index2] = 1
}
}
}

for (index1,element1) in desk.enumerated()
{
var str = “”
for (index2,element2) in element1.enumerated()
{
str.append(" " + String(desk[index1][index2]))
}
print("|(str) |")
}


#2

А какие у вас есть мысли по этому поводу?


#3

только как составить двумерный массив


#4

Смторите, ответ на Ваш вопрос я знаю, но хочется чтоб вы до него дошли сами, это полезней!Давайте будем тут поэтапно рассуждать!Пишите шаги которые вы хотите делать и пример реализации, а я буду помогать!


#5

спасибо))это будет еще лучше))


#6

тогда жду от вас ваши мысли и попытку реализации! начнем с самого начала!


#7

нужно сначало определить место, где стоит ферзь


#8

предположим что доска у нас уже есть! и по условию место где стоит ферзь пользователь вводит!давайте лучше поймем как ходит ферзь, но с переводом это на массив и с swift


#9

я играю в шахматы и знаю как он ходит по доске))


#10

Это отлично, но вот у тебя есть массив

 [[false, false, false, false, false, false, false, false], 
  [false, false, false, false, false, false, false, false], 
  [false, false, false, false, false, false, false, false], 
  [false, false, false, false, false, false, false, false],
  [false, false, false, false, false, false, false, false],
  [false, false, false, false, false, false, false, false],
  [false, false, false, false, false, false, false, false],
  [false, false, false, false, false, false, false, false]]

и Вы мне объясните как собираетесь описать ход ферзя согласно вот этого массива?


#11

ходить будет вот так
[[false, false, false, false, true, false, false, false],
[false, false, false, false, true, false, false, false],
[false, false, false, false, true, false, false, false],
[true, false, false, false, true, false, false, false],
[false, true, false, false, true, false, false, true],
[false, false, true, false, true, false, true, false],
[false, false, false, true, true, true, false, false],
[true, true, true, true, TRUE, true, true, true]]


#12

Вставляйте код правилно, чтоб читабельно было! правильно! а теперь как это перевести на индексы элементов массива?


#13

никак не могу сообразить как это записать в коде


#14

Первое, что пришло в голову:

 // коорд. ферзя
 let queen = (3, 3)

// доска 4х4, просто для примера
let table = [
    [(1, 1), (1, 2), (1, 3), (1, 4)],
    [(2, 1), (2, 2), (2, 3), (2, 4)],
    [(3, 1), (3, 2), (3, 3), (3, 4)],
    [(4, 1), (4, 2), (4, 3), (4, 4)]
]

for row in table {
    for cell in row {
        if cell.0 == queen.0 || cell.1 == queen.1 || abs(queen.0 - cell.0) == abs(queen.1 - cell.1) {
            print(cell)
        }
    }
}

Только не знаю, как без 4-го условия исключить ячейку, в которой находится сам ферзь. Мое решение явно не самое лучшее, потому с удовольствием посмотрю варианты от более опытных людей.


#15

Давайте посепенно, сначала исключаем горизонтальную линию и вертикальную


#16

а если горизонтальную линию задать вот так?
var elementsHorizontally = placeOnTheBoard.last