|
|
|
| Здравствуйте. У меня имеется квадратная матрица (двумерный массив с одинаковым количеством строк и стобцов) размера n, необходимо узнать, есть ли в главных либо побочных ВСЕХ диалогалях массив вида array( 1, 1, 1 ), как это можно реализовать? | |
|
|
|
|
|
|
|
для: pavluxa09
(23.06.2012 в 22:19)
| | когда я делал игру морской бой, я использовал массивы (матрицы)
но когда перевел движок игры на БД, то отказался от матрицы в пользу одномерного массива | |
|
|
|
|
|
|
|
для: Valick
(23.06.2012 в 23:16)
| | Даже если взять одномерный массив, как реализовать то что я написал? Это задача ещё тяжелее | |
|
|
|
|
|
|
|
для: pavluxa09
(23.06.2012 в 22:19)
| | У вас же там уже точки есть? Просто берите координату, скажем 4, 5, организуйте два цикла: один вычитает одновременно их X и Y по 1, а другой увеличивает, причем до тех пор, пока не упретесь в границу поля или на противоположный символ. Вы работаете на PHP вам можно удобно динамически формировать массив с элементами, как его размерность превышает заданное значение можно фиксировать выигрышь. | |
|
|
|
|
|
|
|
для: cheops
(24.06.2012 в 07:20)
| | Не совсем понял идею, можно подробнее? | |
|
|
|
|
|
|
|
для: pavluxa09
(24.06.2012 в 10:50)
| | Нарисуйте квадрат и отметьте точку, где-то по середине, чтобы построить диагональ с верхнего левого угла в нижний правый, вам нужно от координат текущей точки X и Y отнимать единицу, а потом прибавлять единицу, так вы сможете проверить точки по одной диагонали. Для работы с точками по другой диагонали нужно будет вычитать по X и прибавлять по Y, а потом прибавлять по X и вычитать по Y. Лучше наверное это делать в цикле while, только нужно внимательно составлять граничные условия. | |
|
|
|
|
|
|
|
для: cheops
(25.06.2012 в 07:36)
| | работать с одномерным массивом гораздо проще
допустим поле 3х3 (крестики нолики) размерность по горизонтали 3, отсчет от нуля
первая координата 0 по диагонали это будет 0+(3+1)=4 далее 4+(3+1)=8
тоже самое в обратную стоорону 8-(3+1)=4 и 4-(3+1)=0
другая диагональ 4-(3-1)=2 и 4+(3-1)=6
вертикаль принцип тот же, только плюсуем и минусуем чистую размерность поля (3)
горизонталь 4-1=3 и 4+1=5
единственное запамятовал как определять границу (например то что 3.4.5 это одна строка, а 6.7.8 это уже другая строка), сейчас буду вспоминать, по моему там делим на размерность и смотрим по остатку
и самое главное двумерный массив легко ложится в базу и легко обрабатывается средствами MySQL
а не очень главное это то что передается из браузера одна координата и вывод в браузер тоже проще | |
|
|
|