Я полагаю, что VC также поддерживает
#pragma message ("note to self")
, Но поскольку система растет и растет, и Вы получаете ночную сборку, 30 разработчиков продолжают работать одновременно, требуются дни для чтения всех примечаний в сам, даже в той сумме, которая сам будет, действительно только отмечают чтение и наконец попытку повредиться под напряжением, не бывшим способным поддерживать на высоком уровне и иметь для отставки...
No действительно, объем предупреждений быстро собирается вырасти, если Вы позволяете им, и Вы не будете в состоянии определить действительно важные (неинициализированные переменные, этот указатель, используемый в конструкторе...).
Вот почему я пытаюсь рассматривать предупреждения как ошибки: большую часть времени компилятор является правильным предупреждением меня, и если он не, я документирую его в коде и предварительно ожидаю
#pragma warning ( push )
#pragma warning ( 4191 : disable )
// violent code, properly documented
#pragma warning ( pop )
, я просто читаю , они имеют warning ( N : suppress )
прагма, также.
В этой ситуации можно представить живые узлы с некоторым типом разреженной матрицы. Например, если мы сохраняем список пар (LivingNode, Coordinate)
вместо массива узлов
, каждый из которых либо жив, либо мертв, мы просто меняем Координаты
вместо увеличения размера массива. Таким образом, пространство, необходимое для этого, пропорционально количеству живых узлов
.
Это решение не работает для состояний, в которых количество живых узлов постоянно увеличивается, но оно очень хорошо работает для планеров.
РЕДАКТИРОВАТЬ: Так что это было не в моей голове. Оказывается, В Википедии есть статья , в которой показано гораздо более продуманное решение. Ну что ж! :) Наслаждайтесь.
Википедия объясняет это . Основная идея заключается в том, что «Игра жизни» Конвея демонстрирует локальность, поскольку информация распространяется с медленной скоростью по сравнению с размером паттерна, а максимальная плотность заполненных ячеек составляет около 1/2 ячеек в любом регионе. (Больше убьет клетки из-за перенаселенности.)
Поскольку есть место, вы можете разделить поле на разные секции и смоделировать каждую секцию независимо. Если вы правильно выберете местность, вы часто будете видеть одни и те же закономерности. Вы можете смоделировать их развитие и сохранить результаты в поисковой таблице, чтобы не нужно было моделировать другие экземпляры одного и того же шаблона более одного раза. Объединение смежных паттернов в более крупные «мета паттерны» позволяет вам предварительно вычислить и их, и так далее.