@page { margin: 2cm } p { margin-bottom: 0.25cm; direction: ltr; color: #000000; line-height: 115%; orphans: 2; widows: 2 } p.western { font-family: "times new roman", serif; font-size: 12pt; so-language: ru-ru } p.cjk { font-family: "times new roman", serif; font-size: 12pt } p.ctl { font-family: "times new roman", serif; font-size: 12pt; so-language: ar-sa } на шахматной доске (8х8) расположены конь и пешка. требуется написать программу, вычисляющую, за какое минимальное число ходов конь сможет «взять» пешку. координаты коня и пешки в шахматном формате, то есть строкой из двух символов. первый символ обозначает столбец (слева направо: a,b,c,d,e,f,g,h), а второй символ строку (снизу вверх: 1,2,3,4,5,6,7,8). конь перемещается по доске на две клетки по одной координате и на одну клетку по другой. формат входных данных первая строка входного файла содержит координаты коня. вторая - координаты пешки. формат выходных данных в выходной файл необходимо вывести значение минимального количества ходов коня. пример входных и выходных данных kon.in kon.out a1 b2 4 d4 a1 2
Ответы на вопрос:
//pascalabc.net версия 3.4.0.1677 от 17.06.18
//если программа не запускается, то обновите версию
const
input_file = 'kon.in';
output_file = 'kon.out';
type
tcell = class
public
x, y: integer;
constructor create(coords: string);
begin
coords : = coords.();
y : = strtoint(coords[2]);
x : = ord(coords[1]) - ord('a') + 1;
end;
constructor create(i, j: integer);
begin
y : = j;
x : = i;
end;
function isdeskcell(): boolean;
begin
result : = (x > 0) and (y > 0) and (x < = 8) and (y < = 8);
end;
class function operator+(a, b: tcell): tcell;
begin
result : = new tcell(a.x + b.x, a.y + b.y);
end;
class function operator=(a, b: tcell): boolean;
begin
result : = (a.x = b.x) and (a.y = b.y);
end;
function tostring: string; override;
begin
result : = format('({0}, {1})', x, y);
end;
end;
procedure printanswer(path: list< tcell> );
begin
var f : = openwrite(output_file);
writeln(f, path.count() - 1);
println(path.count() - 1);
println(path);
f.close();
end;
begin
var knight_steps : = arr(
new tcell(1, 2),
new tcell(2, 1),
new tcell(2, -1),
new tcell(1, -2),
new tcell(-1, -2),
new tcell(-2, -1),
new tcell(-2, 1),
new tcell(-1, 2)
);
// var f : = openwrite(input_file);
// writeln(f, 'a1');
// writeln(f, 'b2');
// f.close();
// exit;
var f : = openread(input_file);
var pawn_place: tcell : = new tcell(f.;
var knight_place: tcell : = new tcell(f.;
f.close();
var paths : = new list< list< tcell> > ();
var occupied_cells : = new list< tcell> ();
paths.add(seq(knight_place).tolist);
occupied_cells.add(knight_place);
repeat
var new_paths : = new list< list< tcell> > ();
foreach var path in paths do
begin
foreach var step in knight_steps do
begin
var p : = new list< tcell> (path);
var t : = p.last + step;
if t.isdeskcell() and not occupied_cells.contains(t) then begin
p.add(t);
new_paths.add(p);
occupied_cells.add(t);
end;
if t = pawn_place then begin
printanswer(p);
exit;
end;
end;
end;
paths : = new_paths;
until (false)
end.
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
PVA848519.08.2022 22:29
-
Telman0716.01.2020 19:14
-
biolev24.09.2021 13:14
-
Vetaflyy02.07.2022 16:38
-
keramix16.10.2020 15:25
-
anntokarieva15.03.2023 07:50
-
BTSBTSBTS11.02.2022 03:52
-
Maria12345678910110.06.2020 14:42
-
Raadzhab30.01.2020 09:07
-
ilaida104.05.2021 04:41
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.