В этом задании вы должны нарисовать шахматную доску ниже и учесть ходы.
1. Рисование
Каждый белый квадрат имеет 5x9 пробелов.
Каждый черный квадрат имеет 5x9 колонов.
Доска окружена границей колонов.
Части 5 символов шириной и сидеть в нижнем ряду квадрата в центре.
Пешки 4 символа в ширину. Они немного смещены от центра вправо, с 3 пустыми квадратами слева и 2 пустыми квадратами справа. Они сидят на одну линию выше нижней части квадрата.
За пределами поля доски не должно быть пробелов, за исключением необязательного завершающего символа новой строки.
Доска и шахматные фигуры должны быть нарисованы точно так, как показано, за исключением того, что:
Вы можете заменить
:
черные квадраты и границу для другого символа, и вы можете заменить@
черные части другим символом (но не тем, который используется для черных квадратов).Вы можете перемещать пешки на один символ влево, если хотите.
,
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
: ::::::::: :::www::: _+_ ::::::::: ::::::::::
: |_|_| :: _,,::: (/) :::)@(::: )@( :::(/)::: _,, ::|_|_|:::
: |@| ::"- \~:: |@| :::|@|::: |@| :::|@|::: "- \~ :::|@|::::
: |@| :::|@|::: |@| :::|@|::: |@| :::|@|::: |@| :::|@|::::
: /@@@\ ::/@@@\:: /@@@\ ::/@@@\:: /@@@\ ::/@@@\:: /@@@\ ::/@@@\:::
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::()::: () ::::()::: () ::::()::: () ::::()::: () :
:::::)(::: )( ::::)(::: )( ::::)(::: )( ::::)(::: )( :
::::/@@\:: /@@\ :::/@@\:: /@@\ :::/@@\:: /@@\ :::/@@\:: /@@\ :
:::::::::: ::::::::: ::::::::: ::::::::: :
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
: ::::::::: ::::::::: ::::::::: ::::::::::
: () ::::()::: () ::::()::: () ::::()::: () ::::()::::
: )( ::::)(::: )( ::::)(::: )( ::::)(::: )( ::::)(::::
: /__\ :::/__\:: /__\ :::/__\:: /__\ :::/__\:: /__\ :::/__\:::
: ::::::::: ::::::::: ::::::::: ::::::::::
:::::::::: ::::::::: www :::_+_::: ::::::::: :
:::|_|_|:: _,, :::(/)::: ) ( :::) (::: (/) :::_,,::: |_|_| :
::::| |::: "- \~ :::| |::: | | :::| |::: | | ::"- \~:: | | :
::::| |::: | | :::| |::: | | :::| |::: | | :::| |::: | | :
:::/___\:: /___\ ::/___\:: /___\ ::/___\:: /___\ ::/___\:: /___\ :
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
2. Переезд
Столбцы помечены AH слева направо и от 1 до 8 снизу вверх. Пользователь должен иметь возможность ввести ход в следующей форме:
<start column><start row><space><destination column><destination row>
Например, B1 C3
означает переместить коня на поле перед пешкой слона (при условии, что игра только началась).
В качестве альтернативы можно использовать систему ICCF, в которой столбцы обозначены цифрами от 1 до 8, а не от A до H. Таким образом, упомянутый выше ход коня 21 33
.
Следующее изображение ( источник ) проясняет обе системы:
Ход должен быть выполнен и новая доска отображается. Любой получающийся в результате захват должен происходить, когда движущийся шахматист удаляет шахматного игрока на поле назначения с доски.
Нет необходимости проверять законный ход шахмат, поскольку это было решено в других задачах: самая маленькая шахматная программа и самый маленький шахматный арбитр. Если пользователь пытается переместиться из пустого квадрата, ваша программа или функция должны игнорировать это движение. Если пользователь пытается захватить дружественную фигуру, вы можете либо проигнорировать ход, либо позволить захватить неподвижную фигуру.
Нет необходимости поддерживать пассажа или рокировку.
Вы можете предположить, что входные данные будут правильно сформированы, то есть всегда в формате, описанном выше. Письма всегда будут в одном и том же случае, вы можете решить, что это за случай.
3. Скоринг и бонусы
Это код гольф. Самый короткий код выигрывает.
Бонус -10%, если ваша программа или функция позволяет продвижение. Пользователь вводит третий ввод, на этот раз одну из следующих букв: QBR N. Это должно быть разрешено, только если ход заканчивается пешкой в последнем ряду. Пешка обменивается на названную фигуру. QBRN.
Бонус -10%, если ваша программа или функция реализует специальный ход «отменить» для отмены ходов (вплоть до начала игры, если требуется). Очевидно, что любители могут делать нелегальные ходы, и они могут пожелать отменить их. Вы можете определить входные данные, которые пользователь должен дать для этого движения «отменить» (оно всегда должно быть одинаковым.) Поведение не определено, если пользователь пытается отменить после начала игры.
Сумма бонусов, т. Е. Если вы получаете оба бонуса, вы получаете -20%.
источник
Ответы:
Октава,
776688 байт688:
{'foo','bar'}{i}
вместо немного дольше['foo';'bar'](i,:)
Еще ни один из бонусов не реализован.
Использует систему ICCF.
В описании перемещения могут отсутствовать начальные пробелы, а поле источника и назначения должно быть разделено одним пробелом, поэтому
42 44
это правильно, хотя42 44
и42 44
нет.Несколько неглёвая версия:
источник
Рубин,
715+696693683 байтаЭто довольно грязное решение, но у меня нет терпения, чтобы привести его в порядок в данный момент.
Ни один из бонусов не сделан.
Использует систему ICCF.
источник
Python,
1136890753 байтаИзвиняюсь за частичный ответ, но я новичок и мне очень понравилось это испытание. Я знаю, что это, вероятно, очень многословно, но вот мой черновик:
источник
=
, и если у afor
или a естьif
только одна строка внутри, все они могут идти по одной и той же строке. Взгляните на Советы по игре в гольф на Python .