#c_sharp
Недавно наткунлся на интересные задачки на C#. Стало невероятно увлекательным занятием их разгадывать без использования сред программирования. Может кто знает ещё подобные задачки или их сборники? Задачи на поведение компиляции и исполнения Задачи на алгоритмы и структуры данных используя исключительные особенности языка Нестандартные пути решения стандартных задач используя исключительные особенности языка Различные однострочники Ленивые вычисления Написание интересностей присутсвующих в других языках Прочее ПРИМЕР#1: если станет интересно приведу ещё парочку int i = myString.To(); простейший extension method, а как здорово выглядит=) public static T To (this IConvertible obj) { return (T)Convert.ChangeType(obj, typeof(T)); } источник Stackoverflow ПРИМЕР#2: список в функциональном стиле: public class FuncList { public FuncList() { IsEmpty = true; } public FuncList(T head, FuncList tail) { IsEmpty = false; Head = head; Tail = tail; } public bool IsEmpty { get; private set; } public T Head { get; private set; } public FuncList Tail { get; private set; } } public static class FuncList { public static FuncList Empty () { return new FuncList (); } public static FuncList Cons (T head, FuncList tail) { return new FuncList (head, tail); } } рекурсивные создание, подсчёт суммы и произведения: var list = FuncList.Cons(1, FuncList.Cons(2, FuncList.Cons(3, FuncList.Cons(4, FuncList.Cons(5, FuncList.Empty ()))))); int SumList(FuncList numbers) { return numbers.IsEmpty ? 0 : numbers.Head + SumList(numbers.Tail); } int MultiplyList(FuncList numbers) { if (numbers.IsEmpty) return 1; else return numbers.Head * MultiplyList(numbers.Tail); } источник Tomas Petricek, Jon Skeet - Functional Programming for the Real World P.S. жду критики, отзывов, оценок
Ответы
Ответ 1
В этом блоге 22 задачки, правда уже не обновляется. Есть как простые так и посложнее. Еще один популярный сборник.Ответ 2
Примерно аналогичный расширяющий метод для строго типизированного доступа к сервисам: public static T GetService(this IServiceProvider provider) { return (T)provider.GetService(typeof(T)); }
Комментариев нет:
Отправить комментарий