Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/34: Рейтинг темы: голосов - 34, средняя оценка - 4.71
1 / 1 / 0
Регистрация: 08.04.2015
Сообщений: 34

Поиск хода слона на шахматной доске

18.12.2015, 17:48. Показов 6841. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми: первое число — номер вертикали (при счете слева направо), второе — номер горизонтали (при счете снизу вверх). Даны натуральные числа k, l, m, n, каждое из которых не превосходит восьми. Требуется:
Выяснить, можно ли с поля (k, l) одним ходом Слона попасть на поле (m, n). Если нет, то выяснить, как это можно сделать за два хода (указать поле, на которое приводит первый ход).

Как за один ход понятно
А вот за 2 хода..через цикл forовский..но не доходит конкретно как
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.12.2015, 17:48
Ответы с готовыми решениями:

Местоположение слона на шахматной доске
Задача: даны координаты n фигур на шахматной доске и координаты слона. Определить, сможет ли слон за один ход перейти на данное свободное...

Просчет ходов Слона по шахматной доске
Здравствуйте. Помогите, пожалуйста, с решением задачи на просчет ходов слона по шахматной доске. Функционал: Вводим: текущее...

Найти кратчайший путь передвижения слона по шахматной доске
Вопрос такой, нужна прога, которая буит находить кратчайший путь передвижения слона, по шахматной доске, соединяющая два заданных поля...

1
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
19.12.2015, 12:39
Лучший ответ Сообщение было отмечено sidorinakatya как решение

Решение

Зачем цикл? Приходе слона обязательно меняются обе координаты,
причем на одну и ту же величину по модулю. Поэтому, если обе
координаты изменились на равные величины - значит ход слона возможен.

C#
1
bool yesNo = Math.Abs(m-k) == Math.Abs(n-l);
Добавлено через 10 минут
Если нельзя, нужно получить все возможные координаты после хода, и выбрать те,
для которых условие выше будет верным, это и будут поля, на которые приведет первый ход.

Добавлено через 4 минуты
Завтра мб с компа допишу.

Добавлено через 12 часов 52 минуты
Вот, вроде накатал, потестируй.

Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            
            Point kl = new Point(4, 4);// проверяем типа можно
            Point mn = new Point(1, 7);// (с нуля нумерация как у массивов)
 
            bool yesNo = Math.Abs(mn.x - kl.x) == Math.Abs(mn.y - kl.y);
 
            Console.WriteLine("{0} на {1} = {2}", kl, mn, yesNo);
 
 
            mn = new Point(0, 6); //проверяем типа за 2 хода - должны получить список точек после первого хода, с которых можно достичь цели
 
            yesNo = Math.Abs(mn.x - kl.x) == Math.Abs(mn.y - kl.y);
 
            if (yesNo) Console.WriteLine("{0} на {1} = {2}", kl, mn, yesNo);
            
            else {
 
                Console.WriteLine("{0} на {1} = {2}", kl, mn, yesNo);
 
                List<Point> firstMovePoints = new List<Point>();//добавим точки с который можно скакануть 
 
                int x = kl.x;
                int y = kl.y;
                //вверх вправо
                while (x < 7 && y < 7) { x++; y++; if (Math.Abs(mn.x - x) == Math.Abs(mn.y - y)) firstMovePoints.Add(new Point(x, y));}
                //Console.WriteLine("{0} - {1}", x, y);
                
                x = kl.x;
                y = kl.y;
                //вверх влево
                while (x > 0 && y < 7) { x--; y++; if (Math.Abs(mn.x - x) == Math.Abs(mn.y - y)) firstMovePoints.Add(new Point(x, y)); }
                //Console.WriteLine("{0} - {1}", x, y);
                
                x = kl.x;
                y = kl.y;
                //вниз вправо
                while (x < 7 && y > 0) { x++; y--; if (Math.Abs(mn.x - x) == Math.Abs(mn.y - y)) firstMovePoints.Add(new Point(x, y)); }
               // Console.WriteLine("{0} - {1}", x, y);
 
                x = kl.x;
                y = kl.y;
                //вниз влево
                while (x > 0 && y > 0) { x--; y--; if (Math.Abs(mn.x - x) == Math.Abs(mn.y - y)) firstMovePoints.Add(new Point(x, y)); }
               // Console.WriteLine("{0} - {1}", x, y);
 
 
                Console.WriteLine("Точки для первого хода: {0}", string.Join(" ", firstMovePoints));
 
            }
            
           
            Console.ReadKey();
        } 
    
    
    }
 
    
    
    class Point {
        public int x;
        public int y;
    
        public Point(int _x, int _y){
        x = _x;
        y = _y;
        }
        public override string ToString()
        {
            return string.Format("[{0}:{1}]",x,y);
        }
    }
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.12.2015, 12:39
Помогаю со студенческими работами здесь

Поиск последовательности перемещений коня на шахматной доске из одной клетки в другую
Реализовать алгоритм решения задачи о поиске последовательности перемещений коня на шахматной доске размера m × n (например, 4 ×...

Поиск последовательности перемещений коня на шахматной доске из заданной начальной клетки в конечную
Реализовать алгоритм решения задачи о поиске последовательности перемещений коня на шахматной доске из заданной начальной клетки в...

Проверка координат для хода слона
Задается расположение фигурки слона. Так же задаем точку для проверки. Как проверить может ли слон с текущего положения совершить...

Поиск кратчайшего пути из точки А до точки В на шахматной доске шагом коня
Всем привет. Я новичек в программировании. Большую сложность вызвала задача в которой необходимо найти кратчайший путь из точки А до...

Разметка шахматной доски и занесение хода в memo
ПРивет, это снова я со своими шахматами. Вопрос такой, хочу сделать так что бы ход записывался в поле мемо, а оттуда в фаил. Запись в фаил...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru