Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
DImONeLLa
1

Задача о ходе коня

19.06.2014, 19:52. Показов 3216. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, дорогие форумчане! Есть одна задача, она уже решена, но я не могу понять действие алгоритма. Он не похож ни на правило Варнсдорфа, ни на метод Вандермонда. Прошу помочь, господа!

Задача: может ли шахматная фигура, называемая конём, обойти все 64 клетки шахматной доски, побывав на каждой из них только один раз?

Delphi
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
var
  Form1: TForm1;
  a         : string;
  l,k,m,i   : integer;
  j         : char;
  MyButton: array[1..8,'a'..'h'] of TButton;
 
const
 z='d4;f5;d6;e8;c7;a8;b6;a4;b2;d1;f2;h1;g3;h5;g7;e6;f8;d7;b8;a6;b4;a2;c1;e2;g1;h3;f4;d3;c5;e4;c3;d5;e3;c4;e5;c6;d8;b7;a5;b3;a1;c2;e1;g2;h4;g6;h8;f7;h6;g4;h2;f1;d2;b1;a3;b5;a7;c8;e7;g8;f6;h7;g5;f3;';
 
 implementation
 
{$R *.dfm}
 
procedure TForm1.MyButtonClick(Sender: TObject);
begin
 ShowMessage('Начало маршрута '+(Sender as TButton).caption+' .');
 label1.Caption:='Для продолжения нажмите "Ходить"';
 a:=(Sender as TButton).caption;
  k:=1;
 (Sender as TButton).caption:=inttostr(k);
 button1.Visible:=true;
    for i := 8 downto 1 do
    for j := 'a' to 'h' do
       MyButton[i,j].Enabled:=false;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
 var
  f,b,c,d :integer;
begin
 ShowMessage('Нахождение маршрута шахматного коня, для проходящего через все поля доски по одному разу. Из поля '+a+' .');
 label1.Caption:='Нажмите "Открыть поле" для повторного использования программы';
 Button2.Enabled:=true;
  button1.Visible:=False;
 for f:=1 to 64 do
  if (a[1]+a[2])=(z[f*3-2]+z[f*3-1]) then
  begin
  l:=f+1;
  a:=(z[l*3-2]+z[l*3-1]);
  break;
  end;
 
 for b := l to 64 do
   for i := 8 downto 1 do
    for j := 'a' to 'h' do
      if MyButton[i,j].Caption=(z[b*3-2]+z[b*3-1]) then
       begin
        k:=k+1;
        MyButton[i,j].Caption:=inttostr(k);
       end;
 
  for b := 1 to l do
   for i := 8 downto 1 do
    for j := 'a' to 'h' do
      if MyButton[i,j].Caption=(z[b*3-2]+z[b*3-1]) then
      begin
      k:=k+1;
      MyButton[i,j].Caption:=inttostr(k);
      end;
 
end;
 
 
procedure TForm1.Button2Click(Sender: TObject);
 var
   b,c,d,e  : integer;
 
begin
label1.Caption:='Выберите исходную точку.';
Button2.Enabled:=false;
    for i := 8 downto 1 do
      begin
        if i=8 then e:=1 else e:=e+1;
         for j := 'a' to 'h' do
    begin
       if j='a' then b:=1 else b:=b+1;
       if j='a' then
            begin
              c:=20;
              d:=85;
            end;
          MyButton[i,j] := TButton.Create(self);
          with MyButton[i,j] do
            begin
              Parent     := self;
              Left       := b*50+c;
              Top        := e*50+d;
              Width      := 49;
              Height     := 49;
              OnClick    := MyButtonClick;
              Caption    := j+IntToStr(i);;
              Visible    := true;
              Font.Style := [fsBold];
              Font.Size  := 15;
        end;
    end;
 label1.Visible:=true;
end;
 
end;
 
end.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.06.2014, 19:52
Ответы с готовыми решениями:

Задача по ферзя и коня
Координаты двух полей шахматной доски заданные в виде двух пар чисел х1, у1 и х2, у2. На первом...

Задача о ходе коня
Написал программу на C#. Не работает либо долго считает. В итоге стоял полчаса и ничего не вывел....

Задача об ходе коня
Можно ли ходом коня попасть из левой нижней клетки шахматной доски в правую верхнюю клетку, посетив...

Задача о ходе коня. Опять
Доброе время суток. Мой пост уже второй по этой программе. В прошлый раз меня просили ее сделать...

4
Аналитик
80 / 80 / 63
Регистрация: 24.04.2014
Сообщений: 465
Записей в блоге: 15
19.06.2014, 22:25 2
DImONeLLa, а почему бы тебе не спросить там откуда код?
0
5781 / 4523 / 1431
Регистрация: 14.04.2014
Сообщений: 20,149
Записей в блоге: 20
19.06.2014, 23:32 3
отдам красивую визуализацию перебора ходов
за математическое доказательство гипотезы ))
0
Аналитик
80 / 80 / 63
Регистрация: 24.04.2014
Сообщений: 465
Записей в блоге: 15
19.06.2014, 23:44 4
за математическое доказательство гипотезы
что за гипотеза? найдутся ли такие кто сможет доказать? теорему ферма 400 лет доказывали а сегодня "свои доказательства" приводят все кому не лень.

Не по теме:

Кстати если вывел формулу ее доказывать надо?

0
5781 / 4523 / 1431
Регистрация: 14.04.2014
Сообщений: 20,149
Записей в блоге: 20
20.06.2014, 00:00 5
Цитата Сообщение от DImONeLLa Посмотреть сообщение
Задача: может ли шахматная фигура, называемая конём, обойти все 64 клетки шахматной доски, побывав на каждой из них только один раз?
Заметьте, задача рисовать что-либо, писать программу и т.д. не ставится.
Нужен ответ - да/нет и обоснование - почему.
0
20.06.2014, 00:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.06.2014, 00:00
Помогаю со студенческими работами здесь

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

Ошибка в реализации задачи о ходе коня
#include "stdafx.h" #include <iostream> using namespace std; int steps(int MAS, int N, int x,...

Методы решения задачи о ходе коня
Помогите написать программу на с#

Сортировка матрицы используя задачу о ходе коня
Можно ли отсортировать матрицу 8х8 по возрастанию, используя обход конем шахматной доски? Если...

Задача - Путешествие коня
Выдает необработанное исключение #include <iostream> using std::cout; using std::endl; ...

Задача про ход коня
Как известно, в шахматах горизонтальные строки обозначаются цифрами от 1 до 8, считая от...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru