На вскидку, мне кажется что объединять в такие небольшие группы — потеря информации. Группой должно быть множество связанных ячеек. 2 ячейки являются связанными если их соединяет открытая ячейка. ну и так далее. Потом, внутри группы делаем бэктрекинг, выделяем множество подходящих решений (подходящих под информацию с открытых клеток). Ищем ячейки которые являются минами или не минами сразу во всех подходящих множествах ну и собственно закрашиваем их.
Такой метод может помочь, когда нельзя сделать точный выбор из небольших групп. Ну и по прогнозам, должно работать достаточно быстро, даже если в группу будет входить 100 ячеек, хотя казалось бы возможных вариантов — 2^100.
Ну и плюс, было бы круто сделать робота который бы не используя вероятности мог решать решаемые поля, и на основе этого робота перегенерировать поле до тех пор пока оно не станет гарантированно решаемым.
Я бы сложность конкретного экземпляра оценивал минимальной глубиной бэктрекинга (backtracking) необходимого для решения этого экземпляра. Ну и не опирался бы на то, что решение должно быть единственным. Зачем?
Я это к тому, что судоку может быть очень сложным с 30 открытыми ячейками а может быть и элементарным с тем-же количеством открытых ячеек.
У меня в голове крутится большой взгляд на политические темы, но если я буду об этом говорить, мои слова будут неразумными т.к. мне по сути нечего сказать т.к. я не понимаю достаточно глубоко те процессы.
Писать нужно тогда, когда есть о чем поведать, когда мысли структурированные и подкреплены чем-то более серьезным.
Насколько я знаю, герой поста учится в лицее, а в лицеях такие достижения чтут. Думаю ваш брат не видит полной картины. Собственно в лицеи обычно попадают мотивированные ученики, которые таки учат что-то помимо школьной программы, оттого там и столько разных чемпионов, призеров и прочих замечательных людей.
Говоря о том, что было до strict private, есть 2 нюанса, которые говорят о том, что все-таки не модуль является единицей инкапсуляции:
1. Приватный метод класса можно вызвать из другого модуля (например, посредством перегрузки (override) метода с другой областью видимости)
2. Синтаксически и семантически свойства и методы инкапсулируются в класс.
Вопрос знатокам, что есть единицей инкапсуляции в Delphi? Если бы не то свойство, что приватные свойства класса можно дергать не только из экземпляров этого класса, но и из любого места модуля, в котором он определен, то можно было бы предположить, что единцей инкапсуляции является класс, но похоже что все-таки модуль, что странно, поскольку свойства и методы инапсулируются именно в класс.
unit Unit2;
interface
type
TSomeClass = Class
private
x : integer;
end;
var
foo : TSomeClass;
implementation
initialization
foo := TSomeClass.Create;
foo.x := 10;
foo.free;
end.
Delphi 7 спокойно компилирует этот код, и считает что в нем нет ошибок.
Нет. Инкапсуляция — объединение внутренностей внутри класса (таким образом, чтобы доступ к этим функциям лежал только через этот класс, и увидеть их можно было только в этом классе). А сокрытие данных — модификаторы доступа к данным (private, protected, public) и прочие механизмы, которые ограничивают доступ (в том числе видимость) к данным.
Алгоритмы логики бота для игры «Сапёр»
Такой метод может помочь, когда нельзя сделать точный выбор из небольших групп. Ну и по прогнозам, должно работать достаточно быстро, даже если в группу будет входить 100 ячеек, хотя казалось бы возможных вариантов — 2^100.
Ну и плюс, было бы круто сделать робота который бы не используя вероятности мог решать решаемые поля, и на основе этого робота перегенерировать поле до тех пор пока оно не станет гарантированно решаемым.
Алгоритм генерации судоку
Я это к тому, что судоку может быть очень сложным с 30 открытыми ячейками а может быть и элементарным с тем-же количеством открытых ячеек.
Про кофе и про Web, или почему PHP — велосипед
Писать нужно тогда, когда есть о чем поведать, когда мысли структурированные и подкреплены чем-то более серьезным.
Про кофе и про Web, или почему PHP — велосипед
Макаревич:
И лишь только тот, Кому нечего сказать,
Громче всех кричит, Он громче всех кричит.
Три задачи для программистов, которым не нужна математика
Три задачи для программистов, которым не нужна математика
Да именно так. Другие науки не являются дочерними по отношению к ней, но без нее они не могу существовать.
Три задачи для программистов, которым не нужна математика
Я увидел тут понимание двоичной системы исчисления, дискретную математику. Думаете если бы вы этого всего не знали, то-же самое бы написали?
Простое и очевидное решение. Но не оптимальное.
Три задачи для программистов, которым не нужна математика
Три задачи для программистов, которым не нужна математика
Три задачи для программистов, которым не нужна математика
А давайте я вам расскажу про градиенты!
Отчет с финала Google Code-In, Калифорния
Мартовская Хабравстреча в Киеве
В C++ единицей инкапсуляции является класс
1. Приватный метод класса можно вызвать из другого модуля (например, посредством перегрузки (override) метода с другой областью видимости)
2. Синтаксически и семантически свойства и методы инкапсулируются в класс.
В C++ единицей инкапсуляции является класс
Delphi 7 спокойно компилирует этот код, и считает что в нем нет ошибок.
QMap vs. QHash: небольшой бенчмарк
Впрочем, 256 элементов — действительно несерьезно для бенчмарка контейнеров.
Десять вещей, которые я терпеть не могу в ООП
P. S. Про automated впервые слышу((
Десять вещей, которые я терпеть не могу в ООП
Десять вещей, которые я терпеть не могу в ООП
О высокой зарплате замолвите слово