C#で「ソフトウェアエンジニアならば1時間以内に解けなければいけない5つの問題」の5問目


1時間以内に解けなければプログラマ失格となってしまう5つの問題が話題に - ソフトアンテナブログ
なんとも言えない無理矢理感…

Program.cs
using System;
using System.Linq;

namespace FiveProblemOfFive
{
    class Program
    {
        static void Main(string[] args)
        {
            Enumerable.Repeat(new[] { " ", "-", "+" }, 9).Aggregate(Enumerable.Repeat("", 1)
                , (a, ca) => from s in a from c in ca select s + c)
                .Select(p => string.Concat(p.Select((x, i) => "" + x + (i + 1))).Replace(" ", ""))
                .TakeWhile(x => !x.StartsWith("+"))
                .Select(x => x.Replace("-", "@-").Replace("+", "@+").Split('@').Where(y => y != ""))
                .Where(x => x.Select(int.Parse).Sum() == 100)
                .ToList().ForEach(x => Console.WriteLine(string.Concat(x) + "=100"));
        }
    }
}