я помню, как я сидела на уроках языка, и учитель рассказывал, что такое словообразование.
на следующий день я, к своему огорчению, не сделала . а оно было: выучить правило, что же такое это самое словообразование.
когда меня вызвали к доске, я вспомнила начало: имя словообразование - это исходная часть а дальше забыла. но тогда был счастливый день, я и я вспомнила, и сказала:
"словообразование- это образование новых слов от похожих. например, работа - работник. и работник, это слово, которое образовалось с словообразования"
учительница поставила мне 5 (или какая у вас самая высокая и я довольная пошла домой.
из того дня я поняла одно: даже если я не знаю четко правило, можно пересказать его своими словами, и все получиться.
//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.
имя существительное.
я помню, как я сидела на уроках языка, и учитель рассказывал, что такое словообразование.
на следующий день я, к своему огорчению, не сделала . а оно было: выучить правило, что же такое это самое словообразование.
когда меня вызвали к доске, я вспомнила начало: имя словообразование - это исходная часть а дальше забыла. но тогда был счастливый день, я и я вспомнила, и сказала:
"словообразование- это образование новых слов от похожих. например, работа - работник. и работник, это слово, которое образовалось с словообразования"
учительница поставила мне 5 (или какая у вас самая высокая и я довольная пошла домой.
из того дня я поняла одно: даже если я не знаю четко правило, можно пересказать его своими словами, и все получиться.