ねぇねぇ、#俳句プログラミング しようよっ!(F#で俳句を出力してみました)

By | Date : 2015/02/26 ( Last Update : 2016/04/30 ) | 39 views

Myoga-SB-SDF-A2

Hello~! ミョウガです!

今朝、Twitterのタイムラインを眺めていたら、「プロ生ちゃん #俳句プログラミング プチコンテスト 2015」という記事を見つけました。

これは、参加待ったなしっ!(≧▽≦)/

今回はニアも強制参加です(Objection(異論)は認めませんよっ)。

 

1. 今回のイベントは部門が2つあるよ

今回のイベントでは、俳句を出力するプログラムをコーディングする「俳句を出力するプログラミング部門」とソースコードで俳句を表現する「ソースコードで俳句部門」の2つの部門があるみたい。

 

2. 早速、F#で作ってみましたっ!

とりあえず、「俳句を出力するプログラミング部門」として、俳句をコンソール画面に出力するシンプルなプログラムをF#で作ってみましたよっ!

※このプログラムは https://gist.github.com/Myoga1012/388576661e0912b0e5a6 で公開されています。

 

動作としては、main関数の引数argvに格納されているコマンドライン引数の値を表示します。

argvはstring型の配列なので、イテレーターでそれぞれの値を列挙して表示しています。

※3行目にある「|>」はパイプライン演算子と言って、複数の関数を連結して1つの繋がった処理にしたり、処理の流れを見やすくしたりすることができます。F#のカレンダープログラミングも参照してみてね。

 

実行する時は、コマンドライン引数に俳句を半角スペースで5・7・5に区切って入力します。

fs01

ちなみにこれは松尾芭蕉さんの俳句だよ。

 

 

実行結果は以下のようになります。

fs01r

まあ、コマンドライン引数を単に列挙しているだけなんだけどね。

 

3. 縦書きで出力してみよう

俳句といったら、やっぱ縦書きで出力してナンボですっ!ということで、縦書きでコンソール画面に出力するように改造してみましたっ!

※このプログラムは https://gist.github.com/Myoga1012/388576661e0912b0e5a6 で公開されています。

 

動作としては、文字数が最も多い行に合わせて、他の行はPadRightメソッドを使って全角スペースでパディングし、縦書きになるように文字を並び替えて出力してします。

 

14行目のArray.int関数は要素数と各要素の初期値を求める関数を指定して、配列を生成する関数だよ。

初期値を求める関数には、生成する配列のインデックス(ここではi)を引数にするラムダ式を指定します。

その中では、各行からi番目の文字をそれぞれ取り出したものを配列にしますが、縦書きでは右から始まるから、Array.rev関数で逆順に並び替えます。

 

これで縦書きで俳句を出力するプログラムの完成だよっ!

fs02r

えっ、コンソール画面は縦書きで使うもんじゃないって?

 

3. おわりに

今回は「俳句を出力するプログラミング部門」に応募しましたが、「ソースコードで俳句部門」にもチャレンジしてみようかな。

ではでは、See youですよっ♪

 

この記事をシェアする
Chronoir.netのRSSフィードを購読する

About : ミョウガ(Myoga)

Hello~! 「ミョウガ」です。よろしくお願いします!(≧▽≦)/ 主にC#/XAML/C++などをメインにプログラミングやアプリの開発をしています。好きな物はカフェラテとハーブティ、趣味は写真撮影と艦これです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*