Курсы по программированию

Формула программиста
основатель — Волосатов Евгений Витольдович
1-2-3 мая - Создай online игру!

Комбинаторика / Комбинаторика. 4 x 4. Ладья x Ферзь

  • На этом уроке мы рассмотрим две шахматные задачи,
    про расстановку ладьей и ферзей на доске, чтобы они не рубили друг друга.
    Задачи решаются первым способом - перебор вариантов без использования рекурсии.

    Задание:
    Решить задачу «Четыре Ладьи».
    Решить задачу «Четыре Ферзя».
  • Дата отправки отчёта: 17 февраля 2016 г.
  • Задание выполнено: за 1 час. 00 мин.
  • Чему научился: -
  • Что было сложным: Хотелось для ферзей написать программу с понятной логикой работы. На это потратил большую часть времени.
    Получилось или нет - узнаю, когда сравню решение с видеоуроком и другими решениями...
  • Комментарии: Такие задачи решать интересно!!!
  • Оценка видео-уроку:
Отчёт от 7980 за Комбинаторика / Комбинаторика. 4 x 4. Ладья x Ферзь


Отчёт от 7980 за Комбинаторика / Комбинаторика. 4 x 4. Ладья x Ферзь




Оцени работу

 
Сохранить страницу:

24. Олюшка
Олюшка
ответить
→  Сергей Лузум  # Комбинаторика / Комбинаторика. 4 x 4. Ладья x Ферзь / 2016-02-20 12:27

Сергей, Благодарю на подробный ответ, даже отчет, уверена что не одной мне он станет полезен! СПАСИБО! Молодец! :)


7980. Сергей Лузум
Сергей Лузум
ответить
→  Олюшка  # Комбинаторика / Комбинаторика. 4 x 4. Ладья x Ферзь / 2016-02-20 11:14

Спасибо!
Видеоурок я посмотрел  позже, уже после отправки отчёта: оказалось, что там разбирается решение в общем случае, с которым у меня возникли трудности при самостоятельном решении. Так что, в поле "Чему научился" надо было бы вписать это решение: идея с диагоналями в таком виде в голову не пришла. Я хотел на каждом шаге делать проверку для фигуры: стоит она под боем или нет. Для этого предусмотрена процедура, проверяющая совпадение вертикали, горизонтали или диагонали. Последняя проверяется в общем случае по правилу |ф1.x - ф2.x| == |ф1.y - ф2.y|. Но моё решение для N стало слишком запутанным. А программа для доски 4x4 вот такая:
//www.VideoSharp.info/Консоль/Комбинаторика/Четыре ферзя
using System;
class VideoSharp
{
        static void Main(string[] args)
        {
            ferz a = new ferz(0, 0),
                b = new ferz(0, 1),
                c = new ferz(0, 2),
                d = new ferz(0, 3);
            int result = 0;
           
            for (int i = 0; i < 4; ++i)
            for (int j = 0; j < 4; ++j)
            for (int k = 0; k < 4; ++k)
            for (int l = 0; l < 4; ++l)
            {
                a.x = i; b.x = j; c.x = k; d.x = l;
                if (!check(a,b) &&
                    !check(a,c) &&
                    !check(a,d) &&
                    !check(b,c) &&
                    !check(b,d) &&
                    !check(c,d))
                result++;
            }
            Console.WriteLine(result);
        }

        private static bool check(ferz a, ferz b)
        {
            if (a.x == b.x ||
                a.y == b.y ||
                b.y - a.y == Math.Abs(b.x - a.x))
            return true;
            return false;
        }
}
    class ferz
    {
        public int x, y;
        public ferz(int i, int j)
        {
            x = i;
            y = j;
        }
    }


24. Олюшка
Олюшка
ответить
→  Сергей Лузум  # Комбинаторика / Комбинаторика. 4 x 4. Ладья x Ферзь / 2016-02-18 11:14

Сергей, рада что тебе нравится и интересно, хотя ты так и не написала насколько твое решение лучше остальных и что в других решениях было полезно! :)
Молодец, рада что сам уже делаешь! :)



Начинаем практику по языку C#




Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.
Научился: Наглядно рисовать в уме возможные алгоритмы для составления комбинаторных функций
Трудности: Разобраться в алгоритме переходов между клетками доски
Понял для себя, что из чисел Фибоначи и прочего уже давно вырос, а вот с задачами подобного плана нужно еще попрактиковаться
Научился: поиску комбинаций расстановки фигур на доске так, чтобы они не били друг-друга
интересные уроки, пригодится в процессе доработки шахматной эпопеи =)