В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История
daniktsarev
daniktsarev
13.01.2020 14:11 •  Информатика

Представьте ip адрес из четырех десятичных чисел в 32 битовый вид 10101111 11101110 10111101 11011110​

Показать ответ
Ответ:
Елена09111
Елена09111
29.01.2023 15:06

//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.Trim().ToLower();

           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.ReadlnString());

   var knight_place: TCell := new TCell(f.ReadlnString());

   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.

0,0(0 оценок)
Ответ:
Maxxxx123
Maxxxx123
06.06.2021 21:23

Чтобы упростить программу, будем выводить команды типа "сделай ЕДИНИЦА", где ЕДИНИЦА и ДЕВЯТЬ - процедуры.

Описание процедуры:

процедура <имя процедуры>

нач        

<тело процедуры>

кон


процедура ЕДИНИЦА

нач

поворот шаг шаг шаг шаг

поворот поворот

прыжок прыжок прыжок прыжок

поворот

кон


процедура ДЕВЯТЬ

нач

шаг поворот шаг шаг шаг

шаг поворот шаг поворот шаг

шаг поворот шаг поворот поворот поворот

прыжок прыжок поворот

кон


тело программы: программа Число 1919

    нач

         сделай ЕДИНИЦА

         прыжок

         сделай ДЕВЯТЬ

         прыжок

         сделай ЕДИНИЦА

         прыжок

         сделай ДЕВЯТЬ

   кон



Подробнее - на -

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота