Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2016, 18:46   #1
thekasper
 
Регистрация: 10.02.2013
Сообщений: 6
По умолчанию Игра четный-нечетный

Два игрока, "нечетный" и "четный" по очереди ставят единицы и нули в незанятые позиции поля N на N. Каждый из игроков может ставить либо 1 либо 0 в произвольную свободную позицию, тем самым занимая ее. Игра продолжается до заполнения всех позиций. После этого суммируются числа вдоль каждой строки, каждого столбца и главных диагоналей. Число ODD нечетных сумм сравнивается с числом EVEN четных сумм. Если ODD>EVEN, выигрывает "нечетный", если EVEN>ODD выигрывает "четный, если ODD=EVEN, результат считается ничейным.

Как реализовать выигрышную стратегию для компьютера?
thekasper вне форума Ответить с цитированием
Старый 13.04.2016, 19:53   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Как реализовать выигрышную стратегию для компьютера?
А она есть (известна)? или её ещё надо придумать?
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 13.04.2016, 20:29   #3
thekasper
 
Регистрация: 10.02.2013
Сообщений: 6
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
А она есть (известна)? или её ещё надо придумать?
Нет, ее нет.
thekasper вне форума Ответить с цитированием
Старый 13.04.2016, 21:07   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Нет, ее нет.
Ну так придумайте, а мы уж так и быть поможем её реализовать.
Цитата:
Как реализовать выигрышную стратегию для компьютера?
Начало положено Возможный ход решения задачи.
3*n1 + 2*n2 + 3*n3 + ... >?< 3*(n-n1)+2*(n*n-2*n-n2)+3*(n-n3) + ...

3*(2*n1-n) + 2*(2*n2 -n*n) + 3*(2*n3-n) + ... >?< 0

что это за числа объяснять не буду, да и не уверен что этот путь приведет к успеху(определению выигрышной стратегии).
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 13.04.2016, 22:08   #5
thekasper
 
Регистрация: 10.02.2013
Сообщений: 6
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
Ну так придумайте, а мы уж так и быть поможем её реализовать.
А если сделать проверку массива горизонтально и вертикально (компьютер всегда играет за нечетную сторону)? Только как проверять куда лучше ставить.

Сделал проверку только по горизонтали:

Код:
public static int n = 3;
        public static int[,] a = new int[n,n];

        static void Main(string[] args)
        {
            for (int i = 0; i < n; i++)
                for (int j = 0; j < n; j++)
                    a[i, j] = 2;

            for (int t = 0; t < n*n-n; t++)
            {
                Console.WriteLine("Сделайте ход:");
                int x = Int32.Parse(Console.ReadLine());
                int y = Int32.Parse(Console.ReadLine());
                int c = Int32.Parse(Console.ReadLine());

                a[x, y] = c;

                Check();

                for (int i = 0; i < n; i++)
                {
                    for (int j = 0; j < n; j++)
                    {
                        Console.Write(a[i, j] + " ");
                    }
                    Console.WriteLine();
                }
            }
        }

        static void Check()
        {
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    if (a[i, j] == 2)
                    {
                        Move(i, j);
                        return;
                    }
                }
                
            }

        }

        static void Move(int x, int y)
        {
            int s = 0;
            for (int i = 0; i < n; i++)
            {
                s += a[i, y];
            }
            if (s % 2 == 0)
                a[x, y] = 1;
            else
                a[x, y] = 0;
        }
    }

Последний раз редактировалось thekasper; 13.04.2016 в 22:11.
thekasper вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
четный не четный массив shelest Помощь студентам 4 05.11.2009 09:44
мин-ый четный эл-т массива Arcueid1691 Общие вопросы C/C++ 4 10.09.2009 23:15
Первый нечетный элемент каждой строки удвоить (предполагается, что в каждой строке есть нечетный элемент Галина002 Помощь студентам 1 18.03.2009 06:30
Игра "четный" "нечетный" bigcat Помощь студентам 1 01.03.2008 00:24