Алгоритм тральщика - PullRequest
0 голосов
/ 13 августа 2011

Я собираюсь создать свой собственный тральщик на Java. И, анализируя настоящий минный тральщик windows 7, я столкнулся с такой ситуацией.

1 or 0 ?

Непокрытый квадрат (отмечен стрелкой) может иметь значение 1 или не иметь никакого числа (пустой квадрат). Но в Windows 7 тральщика этот квадрат имеет 1.

гипотеза: И, анализируя, я узнал, что все мины всегда окружены числами.

Если я пойду с моей гипотезой, то больше не пойду, непокрытый квадрат должен быть 1.

И разработка логики для тральщика будет проще, если я буду следовать этой гипотезе. так как,

шаг 1: случайным образом назначьте квадраты с минами (укажите для конкретного элемента (i, j) в массиве 2D значение -1).

шаг 2: Пронумеруйте каждый квадрат, равный количеству мин вокруг него. (В этом случае гипотеза сбылась).

И мои вопросы,

  1. Что плохого, если непокрытый квадрат является пустым квадратом?
  2. Является ли эта гипотеза правилом для тральщика?
  3. Должен ли я следовать гипотезе, чтобы сделать мое кодирование проще реализовать?
  4. * Если бы я предложил нового тральщика с правилом против гипотеза, мой новый тральщик окажется в нестабильности? Это так, как?

* -> Я не намеренно нарушаю правила, я пытаюсь удалить лишние подсказки / ключи для пользователя.

Ответы [ 3 ]

10 голосов
/ 13 августа 2011

Конечно, заостренный квадрат имеет число - он смежен (ровно с одним) минным квадратом, поэтому он получает 1. Пустые квадраты просто сокращены до нуля.

6 голосов
/ 13 августа 2011

Квадрат не может быть пронумерован, цифры показывают, сколько мин касается этого квадрата. Ненумерованные квадраты равны «0», что означает, что мины не соприкасаются.

Так что да, шахта всегда должна быть окружена пронумерованными квадратами.

0 голосов
/ 27 июля 2017

Причиной, по которой вы не видите число, является алгоритм заполнения тральщика.
Он показывает все поля, которые имеют значение 0 (0 отображается пустым).И он раскрывает все смежные поля с теми, которые были обнаружены ранее, которые имеют ненулевое значение.
Поле в углу не имеет смежного поля с нулевым значением и, следовательно, не может быть открыто автоматически.

Он содержит 1.

Если бы у вас было поле 10x11 с последней пустой строкой, это поле было бы показано со значением 1.

Причина, почемуверсия Windows показывает, что, возможно, вы уже пометили все существующие мины флагами, и Windows Minesweeper обнаружит все оставшиеся поля.

...