// PascalABC.NET 3.3, сборка 1583 от 25.11.2017 // Внимание! Если программа не работает, обновите версию!
begin var s:=ReadlnString; var c:=s.ToWords.Where(t->t.Length>1).SelectMany(w->w.Pairwise) .Select(t->t[0]+t[1]).GroupBy(t->t).Select(t->(t.Key,t.Count)) .OrderByDescending(t->t[1]).ThenByDescending(t->t[0]).First[0]; Writeln('Чаще других встречается цепочка "',c,'"') end.
Пример TWAS BRILLIG AND THE SLITHY TOVES DID GYRE AND GIMBLE IN THE WABE ALL MIMSY WERE THE BOROGOVES AND THE MOME RATHS OUTGRABE Чаще других встречается цепочка "TH"
Замечание: ограничение на длину строки увеличено до 2 млн. символов.
// PascalABC.NET 3.3, сборка 1634 от 14.02.2018 // Внимание! Если программа не работает, обновите версию!
begin var a:=ArrRandom(ReadInteger('n='),-11,11); a.Println; // 1 begin var s:=a.Where(t->t<0); if s.Count=0 then Writeln('1. Нет отрицательных элементов') else Writeln('1. Первый отрицательный элемент номер ', a.IndexOf(s.First)+1) end; // 2 begin var s:=a.Select((v,i)->(v,i)).Where(t->(t[0]>0) and t[0].IsEven); if s.Count=0 then Writeln('2. Нет четных положительных элементов') else begin var r:=s.Last; Writeln('2. Последний четный положительный элемент номер ',r[1]+1, ', значение ',r[0]) end end; // 3 begin var s:=a.Select((v,i)->(v,i)).Where(t->t[0] mod 5=0); if s.Count<2 then Writeln('3. Нет двух элементов, кратных 5') else Writeln('3. Номер второго элемента, кратного 5, равен ', (s.Skip(1).Take(1)).First[1]+1) end; // 4 begin var s:=a.Select((v,i)->(v,i)).Where(t->t[0]=0); if s.Count<3 then Writeln('4. Нет трех нулевых элементов') else begin s:=s.Skip(1).Take(2); Writeln('4. Количество положительных элементов между ', 'вторым и третьим нулевыми элементами равно ', a[s.First[1]+1:s.Last[1]].Where(t->t>0).Count) end end; // 5 begin var s:=a.IndexesOf(t->t>0).Take(4).Select(t->t+1); if s.Count<4 then Writeln('5. Нет четырех положительных элементов') else begin Write('5. Номера первых четырех положительных элементов: '); s.Println end end; // 6 begin var s:=a.IndexesOf(t->t<0); if s.Count=0 then Writeln('6. Нет отрицательных элементов') else Writeln('6. Номера первого и последнего отрицательных элементов: ', s.First+1,' ',s.Last+1) end; // 7 begin var s:=a.IndexesOf(t->t>0); if s.Count=0 then Writeln('7. Нет положительных элементов') else begin var i1:=s.First; s:=a.IndexesOf(t->t<0); if s.Count=0 then Writeln('7. Нет отрицательных элементов') else begin var i2:=s.Last; Writeln('7. Количество четных элементов между первым ', 'положительным и последним отрицательными элементами: ', a?[i1+1:i2].Where(t->t.IsEven).Count) end end end end.
// Внимание! Если программа не работает, обновите версию!
begin
var s:=ReadlnString;
var c:=s.ToWords.Where(t->t.Length>1).SelectMany(w->w.Pairwise)
.Select(t->t[0]+t[1]).GroupBy(t->t).Select(t->(t.Key,t.Count))
.OrderByDescending(t->t[1]).ThenByDescending(t->t[0]).First[0];
Writeln('Чаще других встречается цепочка "',c,'"')
end.
Пример
TWAS BRILLIG AND THE SLITHY TOVES DID GYRE AND GIMBLE IN THE WABE ALL MIMSY WERE THE BOROGOVES AND THE MOME RATHS OUTGRABE
Чаще других встречается цепочка "TH"
Замечание: ограничение на длину строки увеличено до 2 млн. символов.
// Внимание! Если программа не работает, обновите версию!
begin
var a:=ArrRandom(ReadInteger('n='),-11,11); a.Println;
// 1
begin
var s:=a.Where(t->t<0);
if s.Count=0 then
Writeln('1. Нет отрицательных элементов')
else
Writeln('1. Первый отрицательный элемент номер ',
a.IndexOf(s.First)+1)
end;
// 2
begin
var s:=a.Select((v,i)->(v,i)).Where(t->(t[0]>0) and t[0].IsEven);
if s.Count=0 then
Writeln('2. Нет четных положительных элементов')
else begin
var r:=s.Last;
Writeln('2. Последний четный положительный элемент номер ',r[1]+1,
', значение ',r[0])
end
end;
// 3
begin
var s:=a.Select((v,i)->(v,i)).Where(t->t[0] mod 5=0);
if s.Count<2 then
Writeln('3. Нет двух элементов, кратных 5')
else
Writeln('3. Номер второго элемента, кратного 5, равен ',
(s.Skip(1).Take(1)).First[1]+1)
end;
// 4
begin
var s:=a.Select((v,i)->(v,i)).Where(t->t[0]=0);
if s.Count<3 then
Writeln('4. Нет трех нулевых элементов')
else begin
s:=s.Skip(1).Take(2);
Writeln('4. Количество положительных элементов между ',
'вторым и третьим нулевыми элементами равно ',
a[s.First[1]+1:s.Last[1]].Where(t->t>0).Count)
end
end;
// 5
begin
var s:=a.IndexesOf(t->t>0).Take(4).Select(t->t+1);
if s.Count<4 then
Writeln('5. Нет четырех положительных элементов')
else begin
Write('5. Номера первых четырех положительных элементов: ');
s.Println
end
end;
// 6
begin
var s:=a.IndexesOf(t->t<0);
if s.Count=0 then
Writeln('6. Нет отрицательных элементов')
else
Writeln('6. Номера первого и последнего отрицательных элементов: ',
s.First+1,' ',s.Last+1)
end;
// 7
begin
var s:=a.IndexesOf(t->t>0);
if s.Count=0 then
Writeln('7. Нет положительных элементов')
else begin
var i1:=s.First;
s:=a.IndexesOf(t->t<0);
if s.Count=0 then
Writeln('7. Нет отрицательных элементов')
else begin
var i2:=s.Last;
Writeln('7. Количество четных элементов между первым ',
'положительным и последним отрицательными элементами: ',
a?[i1+1:i2].Where(t->t.IsEven).Count)
end
end
end
end.