【Rubyプログラミング狂室】
さっそく何か書いてみる・(疑似)ハナモゲラ和歌
(2002.03.08)

概要

 も何もない。

 自然言語を学ぶ最良の方法はプログラム言語と同じで、使いながら慣 れかつ憶えていくことだが、プログラム言語を学ぶのも自然言語を学ぶ のと同じように、使ってみつつ肌触りを確かめ、感触を確かめつつ使い 方を憶えていくのが最も望ましい。

 のだが、なかなかいいネタがなくて困る。今や大概のことはできあい のツールやユーティリティで間に合っちゃうもんな。なければ自分で PerlやAwkで書けばいいんだし(笑)。

 Ruby/TkでGUIをいぢりながら学ぶ、ということを目論んだのだけれど、 それにはまずTcl/Tkも同時に勉強しなければならないこと、そしてそれ 以前に「ぢゃ、GUIつくって何するの?」と訊かれたら何も答えら れない、ということに気づいて、ちょっと考え込んだ。側だけあっ たってしょうがないわけで、やはりまずは「何を」がないと始まらない。

 そこで、そこでということはないのだけれど、Ruby/Tkは放っておい て、かつてAwkで書いた「(疑似)ハナモゲラ和歌生成プログラム」を Rubyで書いてみる。

解説

 Awkで書いたプログラムの単純 移植版である。先頭のRubyインタープリターのパスは、自分の環境に合 わせて適宜直してください。(ご覧のように、よんどころない事情で現 在シアトルもののOSを使っている)

 コメントとかメソッド名、変数名などにある見慣れない文字列は エスペラントという言語でっす。

コード

  1: #! c://loka/ruby/bin/ruby
  2: #
  3: # tanka.rb -- refarajxo de programo origine skribita per gawk
  4: #
  5: 
  6: require 'jcode'
  7: $KCODE = "sjis"
  8: 
  9: cand   = "あいうえおかきくけこさしすせそたちつてとなにぬねの"
 10: cand <<= "はひふへほまみむんもやゆよらりるれろわをん"
 11: cand <<= "がぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽゐゑ"
 12: 
 13: # 次の一文字を選び出す
 14: def sekva(s)
 15:   nth = rand(s.jlength) * 2
 16:   s[nth..nth+1]
 17: end
 18: 
 19: # 和歌をひとつ生成する
 20: def wakagen(cand)
 21:   waka = ""
 22:   for n in 0..30
 23:     waka << sekva(cand)
 24:     if(n == 4 || n == 11 || n == 16 || n == 23) then
 25:       waka <<= " "
 26:     end
 27:   end
 28:   waka
 29: end
 30: 
 31: # とりあえず5個生成
 32: for n in 0..4
 33:   waka = wakagen(cand)
 34:   print waka, "\n"
 35: end

サンプル

らわどらじ むねしぜやづで ぷのつやぶ くむきはあけじ べじしるゐかれ
たんへもん ずさゑそびゑぺ まかぬなご ゐぞふとかるべ ぢにきゆあする
ぶぷよじこ あどてかしくぢ れこあみつ んぶごるくたん きぬこまぬぐつ
ぽげそかほ よわやぎすにこ ばせぴふん ろわまとゆんづ すちねげたざよ
ぶばえざる こじれぽしかと うろるぱか ゐあむゐにげぜ べかにぜきると

補足

 お勉強の最初の一歩なもので、もとのAwkプログラムをそのまま書き 移している。

(2002.03.08)

Rubyプログラミング狂室へ
参考図書へ
コンピューター言語研究所へ
トップページへ
(C) ©Copyright Noboru HIWAMATA (nulpleno). All rights reserved.