ランダムな平仮名俳句を生成するプログラム作ってみましたよっ!

By | Date : 2015/05/20 ( Last Update : 2016/04/30 ) | 288 views

Myoga-SB-SDF-A2

Hello~! ミョウガです!

今回は約1か月ぶりの俳句プログラミングですっ! F#でランダムな俳句を生成するプログラムを作ってみましたっ!

 

1. F#でランダムな平仮名を生成し、俳句を作成するプログラム

※GitHubではこちらです →  https://gist.github.com/Myoga1012/21bb04c4731674956c3f

 

F#で乱数を生成する時は、.NET FrameworkのRandomクラスを利用します。このクラスのデフォルトコンストラクターを呼び出すと、現在の時間を初期値として初期化されますよっ!

 

9行目では、その乱数オブジェクトを使って、ランダムな平仮名を生成する関数定義です。nに整数を受け取って、要素数nのchar型のシーケンスを生成します。

F#(というより、.NET系言語)の文字列はUnicodeという文字コードで表現されていて、平仮名(ゔ、ゕ、ゖを除く)は 0x3041(ぁ)~0x3093(ん) の範囲内にあります。(→ 参考:Unicode一覧 3000-3FFF | Wikipedia

RandomクラスのNextメソッドはオーバーロードされていて、Next( 0x3041, 0x3094 )と、引数2つを指定することで、範囲内のランダムな整数を求めることができます。ただ、第2引数(下線部)の値は戻り値の範囲に含まれないから気を付けてねっ!

 

12行目では、その関数を使って、5・7・5の句のシーケンスを生成し、1句ずつイテレーターで画面に出力します。各句はchar型のシーケンス(Seq<T>もとい、IEnumerable<T>)なので、string.Joinメソッドで要素を連結します。

 

このプログラムを実行すると、以下のようになりますよっ!

haikurnd

上の画像でできた俳句はこちら・・・

ごなんでぼ はりふねきはぞ ぶやづへに

 

まるで、某朝の番組のキャンペーンの応募IDみたいですっ!

 

paiza.IOで作ったプログラムのブログパーツをここに埋め込みました。実際に試してみてねっ!

 

2. ちょっと手を加えると・・・

先ほどのコードにある5・7・5の句のシーケンスに「phrase( 7 )」を2つ追加すると・・・

 

短歌にもなりますよっ!

tankarnd

phrase関数自体は、謎解きゲーム用の文字列生成にも活用できそうです。

 

3. おわりに

今回初めて、paiza.IOのブログパーツ機能を利用してみました。閲覧者がプログラムを実際に実行できるから、プログラムの内容をより深めることができそうですっ!

あ、そうだ! ニアが書いた暗号化俳句のプログラムもpaiza.IOのブログパーツを使えば、色々な俳句を暗号化して楽しむことができるかも。

俳句プログラミングだけでなく、カレンダープログラミングの記事にも入れてみようかな。

 

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

 

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

About : ミョウガ(Myoga)

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

コメントを残す

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

*