2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Код минимального размера (язык BASH) для шахмат
Сообщение19.08.2017, 00:54 
Необходимо написать код минимального размера (язык BASH), который перемещает фигуры на доске.

Начальное условие:

8|♜|♞|♝|♛|♚|♝|♞|♜
7|♟|♟|♟|♟|♟|♟|♟|♟
6| | | | | | | |
5| | | | | | | |
4| | | | | | | |
3| | | | | | | |
2|♙|♙|♙|♙|♙|♙|♙|♙
1|♖|♘|♗|♕|♔|♗|♘|♖
a b c d e f g h
Входные данные: построчная инфа о перемещениях на доске. Решением является вид доски после конечного перемещения фигур.

Пример:

STDIN:
a7 a5
b1 c5
end

STDOUT:
8|♜|♞|♝|♛|♚|♝|♞|♜
7| |♟|♟|♟|♟|♟|♟|♟
6| | | | | | | |
5|♟| |♘| | | | |
4| | | | | | | |
3| | | | | | | |
2|♙|♙|♙|♙|♙|♙|♙|♙
1|♖| |♗|♕|♔|♗|♘|♖
a b c d e f g h

Правильность ходов не нужна. То есть никаких рокировок и т.п. нет. Фигуры можно двигать как угодно в пределах доски. Считается что на вход подаются только корректные данные. Между STDIN и end может быть сколько угодно ходов. Фигуры в одну клетку совать нельзя. Перетирает последней. Не надо реализовывать правила шахмат.

Пока есть такое решение:

Используется синтаксис Bash
declare -A b;b[a8]=♜;b[b8]=♞;b[c8]=♝;b[d8]=♛;b[e8]=♚;b[f8]=♝;b[g8]=♞;b[h8]=♜;b[a7]=♟;b[b7]=♟;b[c7]=♟;b[d7]=♟;b[e7]=♟;b[f7]=♟;b[g7]=♟;b[h7]=♟;b[a1]=♖;b[b1]=♘;b[c1]=♗;b[d1]=♕;b[e1]=♔;b[f1]=♗;b[g1]=♘;b[h1]=♖;b[a2]=♙;b[b2]=♙;b[c2]=♙;b[d2]=♙;b[e2]=♙;b[f2]=♙;b[g2]=♙;b[h2]=♙;while true;do read l;[ "$l" == "end" ]&&break;b["${l:3:2}"]=${b["${l:0:2}"]};b["${l:0:2}"]=" ";done;echo "8|${b[a8]:- }|${b[b8]:- }|${b[c8]:- }|${b[d8]:- }|${b[e8]:- }|${b[f8]:- }|${b[g8]:- }|${b[h8]:- }";echo "7|${b[a7]:- }|${b[b7]:- }|${b[c7]:- }|${b[d7]:- }|${b[e7]:- }|${b[f7]:- }|${b[g7]:- }|${b[h7]:- }";echo "6|${b[a6]:- }|${b[b6]:- }|${b[c6]:- }|${b[d6]:- }|${b[e6]:- }|${b[f6]:- }|${b[g6]:- }|${b[h6]:- }";echo "5|${b[a5]:- }|${b[b5]:- }|${b[c5]:- }|${b[d5]:- }|${b[e5]:- }|${b[f5]:- }|${b[g5]:- }|${b[h5]:- }";echo "4|${b[a4]:- }|${b[b4]:- }|${b[c4]:- }|${b[d4]:- }|${b[e4]:- }|${b[f4]:- }|${b[g4]:- }|${b[h4]:- }";echo "3|${b[a3]:- }|${b[b3]:- }|${b[c3]:- }|${b[d3]:- }|${b[e3]:- }|${b[f3]:- }|${b[g3]:- }|${b[h3]:- }";echo "2|${b[a2]:- }|${b[b2]:- }|${b[c2]:- }|${b[d2]:- }|${b[e2]:- }|${b[f2]:- }|${b[g2]:- }|${b[h2]:- }";echo "1|${b[a1]:- }|${b[b1]:- }|${b[c1]:- }|${b[d1]:- }|${b[e1]:- }|${b[f1]:- }|${b[g1]:- }|${b[h1]:- }";echo "  a b c d e f g h"

 
 
 
 Posted automatically
Сообщение19.08.2017, 12:16 
 i  Тема перемещена из форума «Олимпиадные задачи (CS)» в форум «Карантин»
по следующим причинам:

- отсутствуют собственные содержательные попытки решения задач(и).

Исправьте все Ваши ошибки и сообщите об этом в теме Сообщение в карантине исправлено.
Настоятельно рекомендуется ознакомиться с темами Что такое карантин и что нужно делать, чтобы там оказаться и Правила научного форума.

 
 
 [ Сообщений: 2 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group