|
|
|||||
Цитата:
Если, конечно, строковые ключи в Array использовать - то память жрать не будет, но и смысла как-бы нет использовать Array в этом случае вместо Object Последний раз редактировалось expl; 07.11.2011 в 00:31. |
|
|||||
Еще вопрос возник. В процессе заполнения матрицы и последующей работы с ней необходимо проверять значения в заданной ячейке и в соседних ячейках (по вертикали и горизонтали). Если матрица уже создана и заполнена то проблем нет, а если только создается - то вылетает ошибка, описанная выше, так как ячейки выше и левее еще не существуют. Не хотелось бы делать две функции проверки - отдельно для новой матрицы и отдельно для существующей. Как можно выйти из положения, кроме заполнения всех ячеек матрицы на этапе инициализации нулями?
|
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Если размерность "матрицы" известна заранее, то создавать массивы с размерностью, тогда ячейки "будут", со значением undefined (если не ошибаюсь). То есть их можно будет проверять, не проверяя существование их самих.
__________________
Reality.getBounds(this); |
|
|||||
Да, это помогло решить проблему, спасибо. Но возникла следующая проблема =) В принципе ничего сложного - массив заполняется случайными числами от 1 до 6. Надо сделать проверку, чтоб не было трех и более одинаковых чисел подряд по вертикали и горизонтали. Сложность в том, что проверять приходится ячейки с индексами [n+2] и [n-2] - на краях матрицы вываливается ошибка о несуществующем элементе, как и выше. Может быть есть готовый алгоритм для таких проверок? А то не хотелось бы расписывать условия для каждого возможного варианта - левый край, правый край, и тп когда индекс оказывается за границей массива.
|
|
|||||
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Матч 3? =)
Это придётся массивчики помучать таки и голову включить) На такое нет алгоритмов (хотя в сети всё может найтись). "Назад" проверять смысла нет, сзади всё уже проверено и не может быть неправильно. От [n] до [n + 2] только. Если MxN массив, то цикл проверки на 3 по горизонтали делается до M-2 (по вертикали N) и цикл проверки по вертикали аналогично. Можно слить в один цикл, просто сделать условие типа "если при проверке текущих координат будет вылезание, то проверку не проводить, считать, что она прошла успешно". А вообще нет ничего сложного и в "расписывании вариантов". Вариант на самом деле всегда один, просто делать проверку на вылезание надо всегда и если за массивом, то не пытаться достать значение) Есть ещё фокус, когда делаешь массив "с бордюрчиками", т.е. большего размера, чем надо, чтоб проверки только на бордюрчики могли залезть) Но ни разу их после школы не использовал.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
Насчет матч3 угадали, да и во всем остальном все верно - так и поступил. Идею с "бордюрчиками" отмел сразу как бредовую и не оптимальную =)
Готовые алгоритмы в сети нашлись, но половина из них как-раз с бордюрчиками =) Вообще неплохая подборка исходников нашлась по этой ссылке http://igdc.ru/igdc_top.php?allkonkurs (4 строчка Bejeweled) |
Часовой пояс GMT +4, время: 14:55. |
|
« Предыдущая тема | Следующая тема » |
Теги |
array , object , Vector , двумерный массив , матрицы |
|
|