Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/12: Рейтинг темы: голосов - 12, средняя оценка - 4.83
Эсмиральда
4 / 4 / 0
Регистрация: 17.10.2014
Сообщений: 63
1

Вывести все возможные ходы шахматного коня из данной позиции, для трехмерной шахматной доски 8*8*8

22.12.2014, 14:58. Просмотров 2336. Ответов 17
Метки нет (Все метки)

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub asd()
Dim x As Integer, y As Integer, xx As Integer, yy As Integer, s As String
Do
  x = InputBox("x")
Loop While x < 1 Or x > 8
Do
  y = InputBox("y")
Loop While y < 1 Or y > 8
For xx = IIf(x - 2 < 1, 1, x - 2) To IIf(x + 2 > 8, 8, x + 2)
  For yy = IIf(y - 2 < 1, 1, y - 2) To IIf(y + 2 > 8, 8, y + 2)
    If Abs((xx - x) * (yy - y)) = 2 Then s = s & xx & " " & yy & vbCrLf
  Next yy
Next xx
MsgBox s
End Sub
Это для одномерной доски, а как для трехмерной?
1
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2014, 14:58
Ответы с готовыми решениями:

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

Найти кол-во ходов коня с определенной позиции шахматной доски
прога должна находить кол-во ходов, что может сделать шахматная фигура конь, определённой позиции...

Вычислить все возможные ходы коня
в шахматах задать начальные координаты клетки(х,у) и вычислить все возможные ходы коня из этой...

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

Определить все возможные ходы ферзя, с поворотом доски на 180 градусов
Здравствуйте! Задача состоит в следующем: дано поле 8*8, нужно определить все возможные ходы ферзя,...

17
Surrogate
Ушел с CyberForum совсем!
871 / 180 / 25
Регистрация: 04.05.2011
Сообщений: 1,020
Записей в блоге: 110
22.12.2014, 15:41 2
хех, нужна помощь доброго волшебника Sasha_Smirnov
0
Апострофф
Заблокирован
22.12.2014, 15:43 3
А как ходит трехмерный шахматный конь? Нарисуйте, пжлста
0
kalbasiatka
22.12.2014, 15:47
  #4

Не по теме:

пространственно-временной конь

0
Surrogate
22.12.2014, 15:48
  #5

Не по теме:

в сферическом вакууме ?

0
Sasha_Smirnov
5494 / 1322 / 144
Регистрация: 08.02.2009
Сообщений: 4,042
Записей в блоге: 29
22.12.2014, 16:09 6
Sasha_Smirnov сейчас на работе! Но ночь длинна…

И вообще, побочные аспекты темы лучше обсудить здесь: http://www.cyberforum.ru/psychology/ (социнжиниринг), здесь: http://www.cyberforum.ru/algorithms/ (логику) или даже вот тут: http://www.cyberforum.ru/informatics/ (дидактическую валидность).
0
taras atavin
4200 / 1777 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
23.12.2014, 10:44 7
Цитата Сообщение от Эсмиральда Посмотреть сообщение
Это для одномерной доски, а как для трехмерной?
Начнём с того, что по одной оси эта глюкнутая лошадь вообще не ходит. Только по двум.
0
Fulcrum_013
Заблокирован
25.12.2014, 07:25 8
Цитата Сообщение от taras atavin Посмотреть сообщение
Начнём с того, что по одной оси эта глюкнутая лошадь вообще не ходит. Только по двум.
По одной, но локальной. Кстати прыжки через фигуры мотивированы тем что в каждый пункт назначения существует два варианта перемещения,для 2D случая.
0
taras atavin
4200 / 1777 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
25.12.2014, 08:51 9
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
По одной, но локальной. Кстати прыжки через фигуры мотивированы тем что в каждый пункт назначения существует два варианта перемещения,для 2D случая.
Чётра с два. Конь просто может ходить через фигуру и всё. Вне зависимости от того, перекрыты ли фигурами оба пути, или один. Походу остальные - карлики, а офицеры ко всему прочему на карликовых слонах, поэтому конь через всех перешагивает. И именно по двум осям за раз. По одной он не может.
0
Fulcrum_013
Заблокирован
25.12.2014, 09:55 10
Цитата Сообщение от taras atavin Посмотреть сообщение
Конь просто может ходить через фигуру и всё. Вне зависимости от того, перекрыты ли фигурами оба пути, или один.
Он может просто ходить через фигуру потому что при бетта-тестировании запарились следить за соблюдением условий хода и внесли соответствующие изменения в правила для релиза.
Цитата Сообщение от taras atavin Посмотреть сообщение
пути, или один. Походу остальные - карлики, а офицеры ко всему прочему на карликовых слонах, поэтому конь через всех перешагивает.
Слоны в бетта-версии ходили строго на две клетки по диагонали и тоже прыгали через фигуры.
Цитата Сообщение от taras atavin Посмотреть сообщение
И именно по двум осям за раз.
На шахматной доске вообще четыре оси - вертикали, горизонтали, черные диагонали и белые диагонали.
0
taras atavin
4200 / 1777 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
25.12.2014, 10:55 11
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Он может просто ходить через фигуру потому что при бетта-тестировании запарились следить за соблюдением условий хода и внесли соответствующие изменения в правила для релиза.
Ну то то остались правила:
1. 50 ходов без хода пешкой есть ничья.
2. Рокироваться через битое поле нельзя.
3. Рокироваться под шахом нельзя.
4. Под матом нельзя ходить вообще, в том числе ставить встречный шах/мат.
5. Под шахом можно только или уходить из-под шаха, или закрываться от шаха, но так, чтоб не открыть другой шах своему королю. Нельзя даже ставить встречный шах/мат, если при этом не закрываешься от шаха.
6. Король не может ходить под шах.
7. Ни одна фигура не может ходить так, чтоб открыть шах/мат своему королю.
8. Не ходившая пешка может походить на два поля, но при этом может быть срублена пешкой противника, бьющей то поле, через которое она прошла бы, если бы эти два поля прошла за два хода.
И того целых 8 правил, соблюдение каждого из которых отследить сложней.
Мало этого, на Руси были в ходу шахматы, где фигуры не рубились, а брались в плен, после чего взявшая могла ходить, как взятая. А ещё есть версии с комбинированными фигурами, например, канцлером, ходящим и как ферзь, и как конь. Версии с логически не плоской, например, логически цилиндрической доской, при этом физически доска плоская. То есть на обычной плоской доске ход любой фигуры, которая может ходить в бок, может за левым краем доски продолжаться из-за правого и за правым из-за левого. Версия с кротом, который вообще не стоит на доске, а подразумевается под доской и пишется на бумажке. При этом крот может выйти на поверхность только рубя фигуру, но может и пропустить свой выход, рубится только, когда стоит на поверхности, а прячется под доску ходом на одну клетку в любую сторону и если на поле с кротом встал король противника, то это означает мат.

Добавлено через 2 минуты
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
На шахматной доске вообще четыре оси - вертикали, горизонтали, черные диагонали и белые диагонали.
Вот только конь ходит на одну клетку по горизонтали или вертикали и ещё на одну по диагонали, либо на две клетки вдоль одной стороны доски и на одну вдоль другой, при этом ход по диагонали не может быть на встречу ходу вдоль стороны доски. Как ни крути, ход по двум осям за раз, даже если диагонали считать за оси.

Добавлено через 2 минуты
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Слоны в бетта-версии ходили строго на две клетки по диагонали и тоже прыгали через фигуры.
Слоны в бетта-версии ходили в одном из пяти направлений:
1. Вперёд.
2. Вперёд-влево.
3. Вперёд-вправо.
4. Назад-влево.
5. Назад-вправо.

Добавлено через 2 минуты
Девятое правило забыл:
9. Нельзя рокироваться ходившими фигурами.
0
chumich
1487 / 849 / 280
Регистрация: 20.12.2014
Сообщений: 2,164
27.12.2014, 00:11 12
Лучший ответ Сообщение было отмечено Аксима как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub asd()
Dim x, y, z, xx, yy, zz As Integer, s As String
Do
  x = InputBox("x")
Loop While x < 1 Or x > 8
Do
  y = InputBox("y")
Loop While y < 1 Or y > 8
Do
  z = InputBox("z")
Loop While z < 1 Or z > 8
For xx = IIf(x - 2 < 1, 1, x - 2) To IIf(x + 2 > 8, 8, x + 2)
  For yy = IIf(y - 2 < 1, 1, y - 2) To IIf(y + 2 > 8, 8, y + 2)
    For zz = IIf(z - 2 < 1, 1, z - 2) To IIf(z + 2 > 8, 8, z + 2)
    If Abs((xx - x) * (yy - y)) = 2 Or Abs((xx - x) * (zz - z)) = 2 Or Abs((zz - z) * (yy - y)) = 2 Then s = s & xx & " " & yy & " " & zz & vbCrLf
     Next zz
  Next yy
Next xx
MsgBox s
End Sub
0
Апострофф
Заблокирован
27.12.2014, 21:26 13
Цитата Сообщение от Sasha_Smirnov Посмотреть сообщение
Код чумовой!
Банальная экстраполяция - http://www.cyberforum.ru/post6890053.html
0
chumich
1487 / 849 / 280
Регистрация: 20.12.2014
Сообщений: 2,164
27.12.2014, 21:47 14
Цитата Сообщение от Апострофф Посмотреть сообщение
Банальная экстраполяция
Если вы про код из этой темы, то естественно , если честно, я даже не вникал как двумерный вариант работает - просто по приколу написал. Но Sasha_Smirnov, если я правильно понял, другой код имел ввиду - из темы про биороботов. И если вы о нем, то мне интересно, что там является экстраполяцией? Чисто для самообразования интересно
0
Апострофф
Заблокирован
27.12.2014, 22:01 15
Цитата Сообщение от chumich Посмотреть сообщение
==(тождественно равен) коду оттуда
А вот ответа на вопрос
Цитата Сообщение от Апострофф Посмотреть сообщение
как ходит трехмерный шахматный конь?
мы так и не дождёмся, похоже...
0
chumich
1487 / 849 / 280
Регистрация: 20.12.2014
Сообщений: 2,164
27.12.2014, 22:31 16
Цитата Сообщение от Апострофф Посмотреть сообщение
==(тождественно равен)
Ну уж не тождественен, а банально экстраполирован
Код отсюда:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub asd()
Dim x, y, z, xx, yy, zz As Integer, s As String
Do
  x = InputBox("x")
Loop While x < 1 Or x > 8
Do
  y = InputBox("y")
Loop While y < 1 Or y > 8
Do
  z = InputBox("z")
Loop While z < 1 Or z > 8
For xx = IIf(x - 2 < 1, 1, x - 2) To IIf(x + 2 > 8, 8, x + 2)
  For yy = IIf(y - 2 < 1, 1, y - 2) To IIf(y + 2 > 8, 8, y + 2)
    For zz = IIf(z - 2 < 1, 1, z - 2) To IIf(z + 2 > 8, 8, z + 2)
    If Abs((xx - x) * (yy - y)) = 2 Or Abs((xx - x) * (zz - z)) = 2 Or Abs((zz - z) * (yy - y)) = 2 Then s = s & xx & " " & yy & " " & zz & vbCrLf
     Next zz
  Next yy
Next xx
MsgBox s
End Sub
Код оттуда:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub asd()
Dim x As Integer, y As Integer, xx As Integer, yy As Integer, s As String
Do
  x = InputBox("x")
Loop While x < 1 Or x > 8
Do
  y = InputBox("y")
Loop While y < 1 Or y > 8
For xx = IIf(x - 2 < 1, 1, x - 2) To IIf(x + 2 > 8, 8, x + 2)
  For yy = IIf(y - 2 < 1, 1, y - 2) To IIf(y + 2 > 8, 8, y + 2)
    If Abs((xx - x) * (yy - y)) = 2 Then s = s & xx & " " & yy & vbCrLf
  Next yy
Next xx
MsgBox s
End Sub
Но Sasha_Smirnov назвал "чумовым" этот код:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub ДелайКакМы ()
Dim a1, a2, b, i
a1 = 1
a2 = 1
For i = 4 To 50 Step 2
b = a1
a1 = a2
a2 = a2 + b
Next i
MsgBox (a2)
End Sub
Мне кажется его сложно получить экстраполяцией из вышеприведенного

А трехмерный конь, наверно, ходит тоже буквой Г, только в трех измерениях.

Добавлено через 5 минут
Но насколько я понял, "чумовой" - это производное от "chumich", потому как ничего особенного в нем нет .
1
Апострофф
27.12.2014, 22:34
  #17

Не по теме:

Цитата Сообщение от chumich Посмотреть сообщение
назвал "чумовым" этот код
Извиняюсь:wall: Почему то движок в первый раз выкинул меня сюда?

0
chumich
1487 / 849 / 280
Регистрация: 20.12.2014
Сообщений: 2,164
27.12.2014, 22:49 18
Извиняюсь Почему то движок в первый раз выкинул меня сюда?
Ничего страшного. Просто мнение форумчанина с такими опытом и репутацией как у вас для меня как начинающего очень важно, поэтому и хотел выяснить.

Кстати, трехмерный конь возможно ходит трехмерной буквой Г. А вообще, интересно: можно ли поставить мат на трехмерной доске? И как она выглядит?
0
27.12.2014, 22:49
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2014, 22:49

Программа для вывода возможных ходов коня по клику на клетку шахматной доски
Что-то много в интернете про коня, но в основном по расчету максимально возможных ходов. А вот...

Путь шахматного коня из одного угла доски в другой за заданное кол-во шагов
Шахматная фигура &quot;конь&quot; перемещается на одну клетку по горизонтали и на две клетки по вертикали или...

Покрытие шахматной доски ходом коня
4. Покрытие шахматной доски ходом коня.


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.