Помощь - Поиск - Пользователи - Календарь
Полная версия: Шахматная Задача
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Человек
Задача:
Двумерный массив 8x8 представляет собой шахматную дос-
ку: 0 - пустое поле, положительные числа - белые фигуры (1 -
король, 2 - королева, 3 - тура, 4 - офицер, 5 - конь, 6 - пеш-
ка), отрицательные числа - черные фигуры (-1 - король и т.д.).Требуется ответить на вопрос, является ли позиция
возможной с точки зрения расположения пешек. (Не может быть
пешек на 1-й и 8-й горизонталях, и, например, у белых не может
быть одновременно пешек на a2, a3 и b2.)
Помогите пожалуйста. sad.gif
Digitalator
1. не королева, а Ферзь
2. не тура, а Ладья
3. не Офицер, а Слон
4. Правила игры в шахматы знаешь?
5. Если на вопрос 4 ответ положительный, то не вижу проблем
6. Если нв вопрос 4 ответ отрицательный, то вы выбрали не тот форум
7. Конкретные вопросы по алгоритму имеются?
Altair
Пешки на поле.
Предлагаю следующие правила, которые только что придумал (возможно я где-то что-то не учел)
  • Для каждой пешки:номер строки в которой стоит >=2 и <=7
  • Всего пешек на доске <=8
  • На каждом ряду может стоять не более 4 пешек (больше не может физически переместиться на 1 ряд), а
    4 теоретически возможно - при троекратном "сдваивании".
    или до 6 на крайних рядах.
  • Если существует ряд с кол-вом пешек >1 (допустим N), то существует ровно N рядов,
    отстоящих от данного , где пешек нет.
    (например в первом их две, а в третьем 0).
Кажется это все возможные правила, для существования комбинации белых пешек на поле.
Исходя их них можно построить алгоритм проверки по заданным условиям.

P.S.
Смотря что понимать под словами "возможная комбинация", ведь подъигрывать в шахматах
никто не собирается, и некоторые ситуации (4 пешки в ряд например) явно абсурдны,
но с формальной точки зрения верны, и машина на вопрос верна ли конфигурация, должна будет
ответить положительно.
APAL
Вообще-то в один ряд можно запихнуть до 6-ти (включительно) пешек...
в крайний ряд...
Altair
нельзя!!!
Они туда физически не влезут - потому что пешка может перемещать только поеданием другой фигуры, то есть ЧЕРЕЗ ряд.
volvo
Oleg_Z, можно... в крайний ряд как раз 6 пешек можно поставить...
APAL
Цитата(Oleg_Z @ 28.02.05 21:45)
нельзя!!!
Они туда физически не влезут - потому что пешка может перемещать только поеданием другой фигуры, то есть ЧЕРЕЗ ряд.

Все правильно!
Но 6 пешек в ряд - можно.
Altair
да, я перепутал с шашками smile.gif
Digitalator
Не уверен, но помойму можно сделать так:

найти все треугольники (условно их так назовоем) основание которых строится на 1-й (или 8-й) горизонтали, а высота равна основанию. Если для каждого из этих треугольников к-во пешек(цвет зависит от горизонтали, на которой строимм) в нем не больше длины основания (измеряется в клетках) то расположение возможно.

+++ вражеских фигур 20 штук, а чтоб 6 пешек с краю выстроить нужно сожрать 1+2+3+4+5=15штук smile.gif а если на доске вражин 6 или более, то такая растановка невозможна. Т.е. помимо логически правильной растановки, нужно проверять еще соответсвие к-ва необходимых поеданий.
Человек
что вы понимаете под словосочетанием"крайний ряд"?
И условия, которые написал OLEG Z, все или нет? А как же быть с условием, что пешки не могут стоять на полях a2, a3 и b2 одновременно?
Altair
Цитата
крайний ряд

ряд A и H
Цитата
А как же быть с условием, что пешки не могут стоять на полях a2, a3 и b2 одновременно?

читай мое 4 правило...

p.s. вроде это все...
Человек
А мне кажется что во всех рядах может стоять 6 пешек, возьмем например ряд с: пешка на позици с2 стоит изначально, пешка с d2рубит соперника и встает на с3, пешка с позиции е4 рубит две вражеские фигуры и встает на с4, пешка f2 рубит 3 фигуры и встает на с5, пешка с g2 рубит 4 враж. фигуры и встает на с6б а пешка с h2 рубит 5 фигур и встает на с7 и вот мы имеем что 6 пешек стоят в одном ряду. И про четвертый пункт OLEG Z если пешка с d2 рубит и переходит на с3 а пешка с е2 рубит и переходит на d3 а пешка c f2 рубит и встает на е3, то помоему этот пункт не правильный. Как мне кажется пешки не могут стоять на а2а3b2одновременно, h2h3g2одновременно, a7b7a6одновременно, h7g7h6одновременно и плюс два первых пункта OLEG Z.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.