Судя по записям задач поиска контуров, brainfuck кодирования многим интересна алгоритмика, как одна из сторон программирования. Предлагаю вам реализовать "мозги" следующей игры. И если, авторов решения будет несколько, можно устроить "соревнование". Я накидал код реализации игры с выдачей результатов на консоль. Исходники на https://github.com/maratsr/MatrixGame Для реализации своего алгоритма необходимо создать реализацию интерфейса IGameStrategy и реализовать в нем: 1) метод getTurn(). Где собственно и происходит поиск оптимального хода 2) метод toString(). Просто вывод информации о вашем методе. Достаточно: 1) добавить код в getTurn() класса MyGameStrategy, где прописать алгоритм. Весь упор именно на алгоритмику, а не собственно знание Java. 2) добавить его одним из игроков в метод static main класса Game для игры. Всего то пару десятков строк реализации... Для облегчения написания собственного алгоритма я привел примеры реализаций (как заготовки): NonZeroFirstValueGameStrategy - Поиск первого доступного элемента MaxValueGameStrategy - Поиск максимального значения в строке или колонке RandomValueGameStrategy - Случайный ход Для тестирования вашего алгоритма можете посоревноваться с ними. Можете также изменить кол-во игроков, размер начальной матрицы и т.п. Game - основной класс, реализующий игру: - Генерирует поле игры. - Создает игроков с их стратегиями. - В процессе игры передает ход стратегиям и ограничивает время принятия решения (в случае его превышения, прерывает стратегию). - Выводит в консоль ход игры и ее результат. Вариантов реализации прочих стратегий вагон: Перебор на первые 2,3,4... хода с выбором лучшего ("ветви и границы"). Можете по ходу нахождения хода присваивать его аргументу функции move, процесс перебора программа прервет и в качестве решения возьмет ход, найденный до этого момента. Подсчет сумм элементов колонок или строк матрицы + поиск с учетом этого... Можно добавить элементы случайности... и т.п. и т.д. P.S. Буду также благодарен, если кто подскажет более правильный способ (чем Executor + Future) для ограничения времени работы любого метода (который не знает что его время выполнения лимитировано).">