Помощь новичкам


#2488
  1. Считать все строки с обоих файлов (второй - аппендом в коллекцию первого), сделать Select -> ToWords
  2. GroupBy по первому слову в каждой строке
  3. Выкинуть все группы, в которых по одному элементу (Where)
  4. Select оставшихся в одну строку
  5. Записать в файл.

Класс не нужен, однострочненько вышло (реально ж одна строка :rofl:). Писать лень, к .NET уже лет 5 не прикасался =3 Во. Модно, молодежно, и бессмысленно. Скучно было. :rofl:

begin
  ReadLines('f1.txt')
    .Concat(ReadLines('f2.txt'))
    .Select(str->str.ToWords)
    .GroupBy(words->words[0])
    .Where(group->group.Count() > 1)
    .Select(group->String.Join('  ', group.First().Concat(group.Skip(1).First.Skip(1))))
    .WriteLines('f3.txt');
end.

Объявляю конкурс на самый короткий способ запилить эту чухню =3


#2489

Мой вариант расширяемый, я так понимаю что строчки это не просто несколько случайных слов. Если их значения что то значат - лучше описать класс для хранения этой строчки (только вместо array of string - надо поля определённых типов, но это к ТС).

Ну, если уж делать монстра:

begin
  ReadLines('1.txt')
  .Cartesian(ReadLines('2.txt'), (l1,l2)->(l1.ToWords,l2.ToWords))
  .Where(t->t[0][0]=t[1][0])
  .Select(t-> (t[0]+t[1].Skip(1)).JoinToString )
  .WriteLines('3.txt');
end.

#2490

Да спору нет :slight_smile: Первый вариант лучше. Просто захотелось немного упороться :rofl:

Таки да, поздравляю с победой в конкурсе :rofl: