Форум
.NET
Тема
Как правильно задавать вопросы
B
I
abc
U
X
3
X
3
H1
H2
H3
H4
H5
H6
Asm
C/C++
C#
Erlang
Haskell
IDL
Java
Lisp
MSIL
Nemerle
ObjC
OCaml
Pascal
Perl
PHP
Prolog
Python
Ruby
Rust
SQL
VB
Здравствуйте, arkhivania, Вы писали: A>Здравствуйте, vorona, Вы писали: V>>На собеседовании попросили написать Linq запрос, выбирающий самую длинную непрерывную последовательность. V>>У меня получилось так: V>>[c#] V>>using System; V>>using System.Linq; V>>static class Program V>>{ V>> static void Main(string[] args) V>> { V>> Object[] s = { "w", "a", "a", "b", "b", "b", "f", "a", "w", "w", "a", "b" }; V>> var result = s.Select((k, i) => new { k, i }).GroupBy(p => p.k, p => p.i).SelectMany(g => g.Select((i, j) => new { k = g.Key, c = i - j })) V>> .GroupBy(p => new { p.k, p.c }, p => p.k, (k, e) => new { k = k.k, c = e.Count() }).Aggregate((p1, p2) => p1.c > p2.c ? p1 : p2); V>> Console.WriteLine(String.Format("{0} встречается - {1} раз", result.k, result.c)); V>> } V>>} V>>[/c#] V>>Может кто знает способ попроще. A>Я вот такой придумал, не думаю, что он сильно правильнее: A>[c#] A>var symbols = new[] { "w", "a", "a", "b", "b", "b", "f", "a", "w", "w", "a", "b", "b", "b" }; A> var max_count_item = new int[symbols.Length] A> .Select((w, index) => symbols.Skip(index)). A> Select(w => new A> { A> Item = w.FirstOrDefault(), A> ItemsAfterCount = w.TakeWhile(w2 => w2 == w.FirstOrDefault()).Count() A> }).OrderByDescending(w => w.ItemsAfterCount). A> Select(w => A> new { Count = w.ItemsAfterCount, Item = w.Item }).First(); A> Console.WriteLine(String.Format("{0} встречается - {1} раз", max_count_item.Item, max_count_item.Count)); A>[/c#] A>Вам бы посоветовал на собедесованиях не использовать переменные в один символ :beer:
Теги:
Введите теги разделенные пробелами. Обрамляйте в кавычки словосочетания с пробелами внутри, например:
"Visual Studio" .NET
Имя, пароль:
Загрузить
Нравится наш сайт?
Помогите его развитию!
Отключить смайлики
Получать ответы по e-mail
Проверить правописание
Параметры проверки …