ようこそ。睡眠不足なプログラマのチラ裏です。

「微妙・五言絶句」をC#に移植してみた件

元ネタ
「微妙・五言絶句」を作成した件 - どんなジレンマ
「微妙・五言絶句」をF#に移植してしまった件 - GrayRecord


微妙なところが微妙に面白かったので、微妙な感じでやってみた。

using System;
using System.Text;
using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
    class Program
    {
        static Random random = new Random();
        static void Main(string[] args)
        {
            System.Console.Title = "微妙・五言絶句";
            string t = Console.ReadLine();
            Func<string, string> k = x => GetKanji(x);
            Func<string, string> r = x => GetRandom(x);
            Console.WriteLine("{0} {1} {2} {3}", r(k(t)), r(k(t)), r(k(t)), r(k(t)));
            Console.WriteLine("{0} {1} {2} {3}", r(k(t)), r(k(t)), r(k(t)), r(k(t)));
            Console.WriteLine("{0} {1} {2} {3}", r(k(t)), r(k(t)), r(k(t)), r(k(t)));
            Console.WriteLine("{0} {1} {2} {3}", r(k(t)), r(k(t)), r(k(t)), r(k(t)));
            Console.WriteLine("{0} {1} {2} {3}", r(k(t)), r(k(t)), r(k(t)), r(k(t)));
            Console.Read();
        }

        static string GetKanji(string s)
        {
            if (s == null) return string.Empty;
            var re = new Regex("[一-龠]");
            var sb = new StringBuilder();
            foreach (Match m in re.Matches(s)) sb.Append(m.Value);
            return sb.ToString();
        }

        static string GetRandom(string s)
        {
            if (s == null | s.Equals(string.Empty)) return string.Empty;
            Func<int, int> ran = x => random.Next(0, x - 1);
            char[] c = s.ToCharArray();
            return c[ran(s.Length)].ToString();
        }
    }
}