読者です 読者をやめる 読者になる 読者になる

Onoty3D

Unityに関するメモとか

俳句プログラミング

プロ生ちゃんのところで、俳句プログラミング プチコンテスト 2015 が開催されています。

「プロ生ちゃん #俳句プログラミング プチコンテスト 2015」開催! | プログラミング生放送

とりあえずC#で縦書きを自分なりに書いてみようと思ったのですが、思い直して、少し斜め上をいくものを作ってみました。

using System;
using System.Collections.Generic;

namespace HaikuProgram
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            while (true)
            {
                Console.Write("始めの五音?:");
                var first5 = Console.ReadLine();

                Console.Write("次の七音?:");
                var middle7 = Console.ReadLine();

                Console.Write("最後の五音?:");
                var last5 = Console.ReadLine();

                //最大長さを取得
                var maxLength = Math.Max(Math.Max(first5.Length, middle7.Length), last5.Length);

                //空白を補填して長さをそろえる
                first5 = first5.PadRight(maxLength, ' ');
                middle7 = middle7.PadRight(maxLength, ' ');
                last5 = last5.PadRight(maxLength, ' ');

                //出力用の文字列生成・格納
                var outputs = new List<string>(maxLength);
                for (int i = 0; i < maxLength; i++)
                {
                    outputs.Add(string.Join("", new string(' ', i), last5[i], ' ', middle7[i], ' ', first5[i]));
                }

                //ひっくり返して出力
                outputs.Reverse();
                Console.WriteLine();
                outputs.ForEach(x => Console.WriteLine(x));
                Console.WriteLine();
            }
        }
    }
}

出力結果はこんな感じです。
f:id:onoty3d:20150303112147p:plain