Deutsch

Одним LINQом​

207  
Murr патриот05.04.24 13:45
Murr
NEW 05.04.24 13:45 

Одним LINQом.


У нас тут слегка все поменялось и туповатые рекрутеры начали требовать выполнение Кодинг Ассесмент вместе с подачей резюме. причем код хотят не зипом проекта, набивкой на их веб-страничке. ну да это их творчество - пусть дерзают.


Но задачку предложили довольно интересную.

Даны два набора данных.

1. Словарик слово-слово. Исходный формат - строки - слово-пробел-слово.

2. Строки переменной длинны в которых интересует последнее слово.

(не уточнял, а постановке не указано есть ли строки нулевой длины. пустые строки и что считается разделителем, считаем - нет, нет, пробел)

требуется вычленить последнее слово в каждой строке второго набора и подставить вместо него слово из словарика.


Сама задачка пишется минут за 15-20. и то половина времени уйдет на написание чтения файлов.


Что меня интересует.

Пусть 1. и 2. даны в виде массивов строк.

есть ли эффективное и красивое решение LINQом?

#1 
Срыв покровов патриот05.04.24 14:52
05.04.24 14:52 
в ответ Murr 05.04.24 13:45, Последний раз изменено 05.04.24 14:54 (Срыв покровов)

вопрос в том, надо ли так извращаться


Dictionary dict = new Dictionary() { { "foo", "bar" } };
string[] lines = { "gsgf sg sd f s s foo", "kjld sdfsd kksdf ff foo" };

lines = lines.Select(line =>
      string.Join(" ", line.Split(' ').Take(line.Split(' ').Length - 1))
      + " " + 
      dict[line.Split(' ').Last()]
  ).ToArray();
#2 
Murr патриот05.04.24 20:54
Murr
NEW 05.04.24 20:54 
в ответ Срыв покровов 05.04.24 14:52

надо ли так извращаться

------

А хрен его знает, тов. майор. Почему-то просят извращения... извращенцы какие-то...


Dictionary dict

-------

String[] dictionary


И парсить каждый раз совсем не хочется.

#3 
Murr патриот05.04.24 21:02
Murr
NEW 05.04.24 21:02 
в ответ Срыв покровов 05.04.24 14:52
line.Split(' ')

Три раза парсить строку? Я бы разок использовал LastIndexOf(' ');

#4 
Срыв покровов патриот05.04.24 23:49
NEW 05.04.24 23:49 
в ответ Murr 05.04.24 21:02

да, так наверное будет быстрее и короче.

#5