program RemoveNewLinesProgram;
function RemoveNewLines(const s: string): string;
var
i: Integer;
lastWasSpace: Boolean;
begin
RemoveNewLines := '';
lastWasSpace := False;
for i := 1 to Length(s) do
begin
case s[i] of
#10, #13:
begin
{ Treat newline as a space }
if not lastWasSpace then
begin
RemoveNewLines := RemoveNewLines + ' ';
lastWasSpace := True;
end;
end;
' ':
begin
{ Collapse multiple spaces }
if not lastWasSpace then
begin
RemoveNewLines := RemoveNewLines + ' ';
lastWasSpace := True;
end;
end;
else
RemoveNewLines := RemoveNewLines + s[i];
lastWasSpace := False;
end;
end;
{ Trim trailing space if any }
if (Length(RemoveNewLines) > 0) and (RemoveNewLines[Length(RemoveNewLines)] = ' ') then
Delete(RemoveNewLines, Length(RemoveNewLines), 1);
end;
var
s: string;
begin
s := 'pascal' + #10 + ' c c++ ' + #13 + ' java python' + #13 + 'go';
s := RemoveNewLines(s); // result without extra spaces
WriteLn(s);
end.
(*
run:
pascal c c++ java python go
*)