Вопрос для людей знающих как работать с терминалом Линукса В каталоге /var/log/installer найдите файлы, принадлежащие root группе, и выпишите подробную информацию для каждого, используя ls -l
Требуется написать как бы это выглядело в терминале и желательно с комментариями к командам (ну что они делают).
GraphABC;
var
x, y: integer;
s: array of string;
b: GraphABC.Point;
begin
s := System.IO.File.ReadAllLines('in.txt');
foreach a: string in s do
begin
X := integer.Parse(a.Replace('(', '').Replace(')', '').Replace(' ', '').Split(';')[0]);
Y := integer.Parse(a.Replace('(', '').Replace(')', '').Replace(' ', '').Split(';')[1]);
if not (b.IsEmpty) then
GraphABC.LineTo(X, Y)
else
begin
GraphABC.MoveTo(X, Y);
b := new Point(x, y);
end;
DrawCircle(x, y, 10);
end;
LineTo(b.X, b.Y);
end.
Код, конечно, вырвиглазный, зато работает и прочитать его относительно легко:)
Содержимое файла in.txt (для теста)
(50; 50)
(90; 50)
(90; 90)
(50; 90)
begin
var a:=ReadLines('m17.txt').JoinIntoString.ToIntegers;
a.Println;
var b:=a.Select((x,i)->Rec(x,i)).Where(x->x.Item1<0)
.Select(x->x.Item2).ToArray;
if b.Count<>2 then
Writeln('Количество отрицательных элементов не равно двум')
else begin
a:=SeqFill(b[0],0).Concat(a.Skip(b[0]).Take(b[1]-b[0]+1))
.Concat(SeqFill(a.Length-b[1]-1,0)).ToArray;
a.Println
end
end.
Тестовое решение:
23 14 7 15 0 13 -6 41 18 13 8 42 27 -11 3 19 10
0 0 0 0 0 0 -6 41 18 13 8 42 27 -11 0 0 0
Файл с исходными данными имеет имя m17.txt. Тестовый файл находится во вложении. Разбивка на строки сделана по 5 значений, но может быть совершенно произвольной. Также нет привязки именно к 17 числам, главное - чтобы отрицательных чисел было ровно два, иначе будет выдано сообщение о их неверном количестве.