Есть ответ 👍

@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

117
233
Посмотреть ответы 2

Ответы на вопрос:

rokivich
4,5(69 оценок)

//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.

1аук7
4,5(27 оценок)

ответ: пропущенно int

Объяснение:

int

Реши свою проблему, спроси otvet5GPT

  • Быстро
    Мгновенный ответ на твой вопрос
  • Точно
    Бот обладает знаниями во всех сферах
  • Бесплатно
    Задай вопрос и получи ответ бесплатно

Популярно: Информатика

Caktus Image

Есть вопросы?

  • Как otvet5GPT работает?

    otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса.
  • Сколько это стоит?

    Проект находиться на стадии тестирования и все услуги бесплатны.
  • Могу ли я использовать otvet5GPT в школе?

    Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое!
  • В чем отличия от ChatGPT?

    otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.

Подпишись на наш телеграмм канал

GTP TOP NEWS