#c# #arrays #multidimensional-array
#c# #массивы #многомерный массив
Вопрос:
допустим, массив с 12 строками и 10 столбцами
int[,] array = new int[12,10];
и я выбираю 0,0, он должен возвращать всех соседей 0,0
который будет
0,1
1,1
1,0
допустим, мне нужны соседи из 2,3, он должен вернуть массив соседей
1,2
1,3
1,4
2,2
2,4
3,1
3,2
3,3
Комментарии:
1. на самом деле этот сайт работает не так. вы действительно что-то пробовали?
2. кроме того, вы не приняли никаких ответов (нажав на галочку) ни на один из ваших ранее опубликованных вопросов
Ответ №1:
element [x, y]
neighbor1 = x 1, y;
neighbor2 = x - 1, y;
neighbor3 = x, y 1;
neighbor4 = x, y - 1;
neighbor5 = x 1, y 1;
neighbor6 = x 1, y - 1;
neighbor7 = x - 1, y 1;
neighbor8 = x - 1, y - 1;
Очевидно, вам нужно проверить, существуют ли координаты этих элементов, на всякий случай, если элемент находится на «границе» матрицы. Сложно? Я говорю «нет».
Ответ №2:
Сложный и неэффективный, но наглядный и быстрый:
int[,] array = new int[12,10];
int refx=0, refy=10;
var neighbours = from x in Enumerable.Range(0,array.GetLength(0)).Where(x => Math.Abs(x - refx)<=1)
from y in Enumerable.Range(0,array.GetLength(1)).Where(y => Math.Abs(y - refy)<=1)
select new {x,y};
neighbours.ToList().ForEach(Console.WriteLine);
альтернативно
neighbours = from x in Enumerable.Range(refx-1, 3)
from y in Enumerable.Range(refy-1, 3)
where x>=0 amp;amp; y>=0 amp;amp; x<array.GetLength(0) amp;amp; y<array.GetLength(1)
select new {x,y};
neighbours.ToList().ForEach(Console.WriteLine);
Комментарии:
1. ты потрясающий, мне понравилось, это так ново для меня, хотя как мне изучить эти сложные вещи?
2. @prx: В основном, прототип для изучения и заточки пилы