Напишите кратчайший код, который вычисляет все возможные (допустимые) ходы текущего игрока из заданной строки FEN. Что такое строка FEN? (Википедия)
- Самый короткий код выигрывает, язык не имеет значения.
- Выходные ходы должны подчиняться шахматным правилам передвижения, кроме как en passant , рокировка и продвижение пешки.
- Игнорируйте проверку, мат и пат, король также не может быть захвачен.
Вы можете установить выходы по- разному , как вы хотите (например: A2-A4
, A2A4
, a2a4
, a2->a4
...)
Тестовые случаи:
# ВХОД 1: rnbqkbnr / pppppppp / 8/8/8/8 / PPPPPPPPP / RNBQKBNR w KQkq - 0 1
# ВЫХОД 1 A2-A4, A2-A3, B2-B4, B2-B3, C2-C4, C2-C3, D2-D4, D2-D3, E2-E4, E2-E3, F2-F4, F2-F3, G2-G4, G2-G3, H2-H4, H2-H3, B1-A3, B1-C3, G1-F3, G1-H3
# ВХОД 2 7k / 8/8/8/8/8 / PP6 / Q1q4K w - - 0 1
# ВЫХОД 2 A1-B1, A1-C1, A2-A3, A2-A4, B2-B3, B2-B4, H1-H2, H1-G1, H1-G2
Ответы:
C - 391 байт
Принимает ввод в качестве аргументов командной строки и выводит на стандартный вывод с квадратами от 0 до 63.
Хорошо, у меня было несколько минут, поэтому я попытался удалить все биты, связанные с обнаружением чека. Я думаю, что сейчас это не очень эффективно, хотя ...
478-байтовая версия для проверки
источник
also here is how test case input boards look like
). Учитывая положение на изображении, исходный результат теста был правильным в соответствии с правилами.Java 1455
источник
Python 553
649678Отступ с двумя пробелами - это символ табуляции, который сохраняет 5 байтов.
Мне приходит в голову, что вы, вероятно, можете заставить его оценивать разумные ходы приличного слоя и держать его менее 1024 байтов :) Я начал просматривать другие шахматные вопросы, но, похоже, нет вопроса о шахматном движке Codegolf ...
источник
B1C3
иH2H3
в первом примере, показанном в вопросе.H2H3
, я имелG1H3
в виду - другими словами, ваши белые рыцари только поворачивают налево.Python
638637 (482?) БайтовПримечание: после
def O(y):
новой строки и символа табуляции передif
Примечание: используя модуль zlib, можно получить действительный исходный код Python размером 482 байта, просто сжав реальный источник:
источник
JavaScript (E6) 481
492 550Редактировать Исправлена неприятная ошибка в движении рыцаря. Много работы, чтобы количество байтов оставалось прежним.
(Не считая начальных пробелов и переносов, сохраняемых для удобства чтения)
Меньше гольфа
Тест в консоли FireFox / FireBug
Выход
источник
JAVA
631599594Исправлена ошибка в 599-байтовой версии (спасибо Джеку за указание на это!) И сокращен код до 594 байт.
Компиляция:
javac F.java
Выполнить:
java F 6pk/6pp/8/8/8/p7/PP4pp/Q2p2pK w - - 0 1
Выход:
B2B3 B2B4 B2A3 A1B1 A1C1 A1D1 H1H2 H1G1 H1G2
источник
3Q4/p4r1k/P4pp1/4P3/5n2/3P4/4BbbP/RN3KN1 w - - 0 0
что я не вижу ходовF1F2
илиF1G2
король может захватить?