TGViewer
C# (C Sharp) programming C# (C Sharp) programming @csharp_ci · 18.1K subscribers
Post #671 5.29K
🖥 Прямо-таки сеньорская версия FizzBuzz — функциональный код с массивом делегатов преобразований числа в Fizz & Buzz.

public class FizzBuzz
{
public static void Main(string[] args)
{
Console.WriteLine(FizzBuzzProgram(350));
}
public static string FizzBuzzProgram(int n) =>
String.Join("\r\n",
Enumerable.Range(1, n).Select(FizzBuzzPipeline));

static readonly Func<int, string?>[] handlers = [(n) => n % 3 == 0 ? "Три" : null, (n) => n % 5 == 0 ? "Пять" : null];

public static string FizzBuzzPipeline(int i) => Counter(i, String.Join("", handlers.Select(f => f(i))));

public static string FizzBuzzPipelinePar(int i)
{
var results = handlers.AsParallel().Select(handler => handler(i)).Where(r => r != null);
return results.Any() ? string.Concat(results) : i.ToString();
}
}


Этот массив расширяемый - пишите хоть 100 проверок, множество других решений на такое не способно.

Можно любое вычисление вычислять. А из-за независимости мы можем запускать их параллельно (если бы вычисление хендлера занимало большое время).

Красота!

Хотите попроще ценой потери части универсальности?
static string FizzBuzzPipelineWOHandlers(int n)
{
string result = $"{(n % 3 == 0 ? "Fizz" : "")}{(n % 5 == 0 ? "Buzz" : "")}{(n % 7 == 0 ? "Qux" : "")}";
return String.IsNullOrEmpty(result) ? n.ToString() : result;
}


Вдохновлено идеями Скотта Влашина, в частности, этим роликом

@csharp_ci
More from @csharp_ci
  1. Oct 16, 2026Post #1907
  2. Oct 15, 2026Что на самом деле происходит с вашим async-методом: компилятор C# переписывает его в конеч…
  3. Oct 14, 2026Helm-чарты прямо из C#, без запуска `helm` 🛠 HelmSharp позволяет рендерить шаблоны и упра…
  4. Oct 14, 2026Альфа-Банк ищет скиллового коллегу QA Fullstack на C# Предлагаем полную удалёнку или гибри…
  5. Oct 13, 2026🧱 Модульный монолит легко потерять одним удобным JOIN. Допустим, модуль заказов напрямую…
  6. Oct 11, 2026Задачка по C# 14: обновили проект на .NET 10, и код молча начал работать иначе Что выведет…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →