图片
Недавно я играл в цифровую кросс-головоломку под названием «Логическая живопись». На первый взгляд он просто рисует сетку на основе рядов чисел, но на самом деле за ним скрывается эффективная система числовых ограничений. Будучи заядлым игроком в стратегию, я разобрал лежащую в ее основе логику и обнаружил, что, если я освою несколько числовых правил, скорость решения головоломок можно удвоить.
Давайте сначала поговорим об основной числовой структуре: числа в каждой строке и столбце представляют длину непрерывной черной сетки, а порядок - слева направо или сверху вниз. Предположим, что ширина сетки равна N, а числа в строке — [a1, a2, ..., ak], тогда общее количество ячеек, занимаемых этими числами, равно a1+a2+...+ak, и между числами требуется хотя бы 1 пробел (всего k-1), поэтому общая требуемая длина = sum + (k-1). Если это значение больше N, это означает, что текущая комбинация чисел не может быть установлена ​​и удаляется напрямую. Напротив, если сумма +(k-1) = N, то между числами может быть только 1 пробел, и все сетки вынуждены определяться, что и есть состояние «полного заполнения».
Первый шаг оптимальной стратегии: сканировать сначала те строки или столбцы, сумма которых + (k-1) = N, можно напрямую заполнить все соответствующие сетки и установить пустые интервалы. Это может быстро создать несколько идентифицированных ячеек и предоставить опорные точки для перекрестных рассуждений.
Второй шаг — использовать «метод перекрытия». Когда значение определенного числа велико, например, длина строки равна 10, а число равно [7], тогда возможные начальные позиции 7 последовательных сеток составляют от 1 до 4 (поскольку конец не может превышать 10). Среди этих 7 сеток позиции с 4 по 7 (то есть конец начальной позиции 1 и начало начальной позиции 4 перекрываются) будут окрашены несмотря ни на что - метод расчета таков: диапазон начальной позиции = [1, N - a + 1], интервал перекрытия = [max(1, начальный минимум + a - 1), min(N, начальный максимум + a - 1)]. Суть в том, чтобы нарисовать диапазон и найти пересечение. Рисование сетки такого типа, которую необходимо сначала раскрасить, эквивалентно запоминанию ключевых подсказок.
Третий шаг – числовое вычитание. После частичного определения строки или столбца количество оставшихся нерешенных ячеек можно обновить и пересчитать пространство комбинаций оставшихся чисел. Например, если в строке уже есть 1 зачерненная строка и ее число равно [2,1], то оставшееся пространство необходимо перераспределить и можно напрямую вывести оставшиеся зачерненные позиции.
После фактического тестирования, согласно этому процессу численного расчета, средняя скорость решения головоломки 20x20 может быть сокращена более чем на 40%, что особенно подходит для уровней с плотными «цифровыми стопками». Кстати, пиксельная графика, создаваемая скрытыми картинками в игре, очень изысканна. Я даже отрезала нарисованные картинки и использовала их в качестве аватарок, что было неожиданным бонусом 😂