104 lines
3.1 KiB
Plaintext
104 lines
3.1 KiB
Plaintext
[4]
|
||
// Абрамян М.Э. ТЕХНОЛОГИЯ LINQ НА ПРИМЕРАХ. М.: ДМК-Пресс, 2014.
|
||
// Глава 5. Примеры решения задач из группы LinqBegin
|
||
// 5.1. Поэлементные операции
|
||
// LinqBegin4: правильное решение - 1 вариант (с.126)
|
||
begin
|
||
Task('LinqBegin4');
|
||
var c := ReadChar;
|
||
var a := ReadSeqString;
|
||
try
|
||
var r := a.SingleOrDefault(e -> (e.Length <> 0) and (e[e.Length] = c));
|
||
write(r <> nil ? r : '');
|
||
except
|
||
write('Error');
|
||
end;
|
||
end.
|
||
[15]
|
||
// Абрамян М.Э. ТЕХНОЛОГИЯ LINQ НА ПРИМЕРАХ. М.: ДМК-Пресс, 2014.
|
||
// Глава 5. Примеры решения задач из группы LinqBegin
|
||
// 5.2. Операция агрегирования и генерирование последовательностей
|
||
// LinqBegin15: правильное решение - 2 вариант (с.134, внизу)
|
||
begin
|
||
Task('LinqBegin15');
|
||
var n := ReadInteger;
|
||
var f := Range(1, n)
|
||
.Aggregate(1.0, (a, e) -> a * e);
|
||
write(f);
|
||
end.
|
||
[31]
|
||
// Абрамян М.Э. ТЕХНОЛОГИЯ LINQ НА ПРИМЕРАХ. М.: ДМК-Пресс, 2014.
|
||
// Глава 5. Примеры решения задач из группы LinqBegin
|
||
// 5.3. Фильтрация, сортировка, теоретико-множественные операции
|
||
// LinqBegin31: правильное решение - 1 вариант (с.145)
|
||
begin
|
||
Task('LinqBegin31');
|
||
var k := ReadInteger;
|
||
var a := ReadSeqString;
|
||
var b := a.Take(k).Show('B');
|
||
var c := a.Reverse()
|
||
.TakeWhile(e ->not char.IsDigit(e[e.Length])).Show('C');
|
||
b.Intersect(c).Show('D')
|
||
.OrderBy(e -> e.Length).ThenBy(e -> e)
|
||
.WriteAll;
|
||
end.
|
||
[43]
|
||
// Абрамян М.Э. ТЕХНОЛОГИЯ LINQ НА ПРИМЕРАХ. М.: ДМК-Пресс, 2014.
|
||
// Глава 5. Примеры решения задач из группы LinqBegin
|
||
// 5.4. Проецирование
|
||
// LinqBegin43: правильное решение с отладочной печатью (с.151, внизу)
|
||
begin
|
||
Task('LinqBegin43');
|
||
var k := ReadInteger;
|
||
ReadSeqString
|
||
.SelectMany((e, n) ->
|
||
e.Where((c, i) -> i mod 2 = (n < k ? 0 : 1)).Show())
|
||
.Reverse
|
||
.WriteAll;
|
||
end.
|
||
[52]
|
||
// Абрамян М.Э. ТЕХНОЛОГИЯ LINQ НА ПРИМЕРАХ. М.: ДМК-Пресс, 2014.
|
||
// Глава 5. Примеры решения задач из группы LinqBegin
|
||
// 5.5. Объединение
|
||
// LinqBegin52: правильное решение - 1 вариант (с.159, середина)
|
||
begin
|
||
Task('LinqBegin52');
|
||
var a := ReadSeqString()
|
||
.Where(e -> char.IsDigit(e[e.Length])).Show('A');
|
||
var b := ReadSeqString()
|
||
.Where(e -> char.IsDigit(e[e.Length])).Show('B');
|
||
a.SelectMany(e1 -> b.Select(e2 -> e1 + '=' + e2))
|
||
.OrderBy(e -> e.Split('=')[0])
|
||
.ThenByDescending(e -> e.Split('=')[1])
|
||
.WriteAll;
|
||
end.
|
||
[54]
|
||
// Абрамян М.Э. ТЕХНОЛОГИЯ LINQ НА ПРИМЕРАХ. М.: ДМК-Пресс, 2014.
|
||
// Глава 5. Примеры решения задач из группы LinqBegin
|
||
// 5.5. Объединение
|
||
// LinqBegin54: правильное решение (с.170, середина)
|
||
begin
|
||
Task('LinqBegin54');
|
||
ReadSeqString().GroupJoin(ReadSeqString(),
|
||
e -> e[1], e -> e[1],
|
||
(e1, ee2) -> ee2.DefaultIfEmpty('')
|
||
.Select(e -> e1 + '.' + e))
|
||
.SelectMany(e -> e).OrderBy(e -> e).Show()
|
||
.WriteAll;
|
||
end.
|
||
[60]
|
||
// Абрамян М.Э. ТЕХНОЛОГИЯ LINQ НА ПРИМЕРАХ. М.: ДМК-Пресс, 2014.
|
||
// Глава 5. Примеры решения задач из группы LinqBegin
|
||
// 5.6. Группировка
|
||
// LinqBegin60: правильное решение - 1 вариант (с.175, внизу)
|
||
begin
|
||
Task('LinqBegin60');
|
||
ReadSeqString().GroupBy(e -> e[1])
|
||
.OrderByDescending(e -> e.Sum(s -> s.Length)).ThenBy(e -> e.Key)
|
||
.Select(e -> e.Sum(s -> s.Length) + '-' + e.Key)
|
||
.WriteAll;
|
||
end.
|
||
|
||
|
||
|