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

Формула программиста
основатель — Волосатов Евгений Витольдович

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

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

    Задание:
    Решить задачу «Четыре Ладьи».
    Решить задачу «Четыре Ферзя».
  • Дата отправки отчёта: 17 февраля
  • Задание выполнено: за 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

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


  • Отчёт оценивали:
    7157muxasio+1   8886Михаил Ермишин+1   2773Никита+1   459Сергей Сергеевич+1   4467Alcatraz+1   6925Артём+1   8946inward+1   5760Мариша +1   1Евгений Витольдович+1   9271Alexus0   7276Ильшат+1   8596Арсен+1   6195sergey+1   4004Елена+1   4992Николай+1   8275Tekashnik+1   791Валерий+1   4395Денис+1   1537Сергей+1   1101Аркадий+1   7645Александр Львович+1   24Оля+1  

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




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

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

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

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