無限あたし彼女
参考資料:「あたし状態遷移図」、あるいは「あたし約5.2MB」 - とある理系男子の書斎には、どうしても小説が少ない。っていうか無い。 - ファック文芸部,あたしオートマトン - とある理系男子の書斎には、どうしても小説が少ない。っていうか無い。 - ファック文芸部
require 'open-uri' URI_TEMPLATE='http://nkst.jp/vote/novel.php?auther=20080001&page=%d' $KCODE='s' def get_page(n) page=nil open(URI_TEMPLATE % n){|f|page=f.read} return page end def parse(page) return page.split('<br />')[1..-2].map{|l|l.strip}.reject{|l|l.empty?} end class Connection def initialize @members={} @total_fanout=0 end def add(word) if @members[word] @members[word]+=1 else @members[word]=1 end @total_fanout+=1 end def final? return @total_fanout==0 end def next raise 'its final state' if final? n=1+rand(@total_fanout) @members.each{|word,count| n-=count return word if n<=0 } raise 'dont reach here' end end def make_dict(dict,page_content) return if page_content.length==0 (0...page_content.length-1).each{|i| (dict[page_content[i]]||=Connection.new).add page_content[i+1] } dict[page_content[-1]]||=Connection.new return dict end def make_dict_from_page_range(dict,range) range.each{|i| make_dict(dict,parse(get_page(i))) } return dict end def generate(writer,dict,start_word=nil,max_length=-1) return 0 if dict.empty? || max_length == 0 start_word||=dict.keys[rand dict.length] cur=dict[start_word] writer.puts [start_word,''] len=1 while (max_length < 0 || len < max_length) && !cur.final? next_word=cur.next cur=dict[next_word] writer.puts [next_word,''] len+=1 end return len end
irb(main):130:0> d=make_dict_from_page_range({},1..200) irb(main):136:0> out=open('tmp/atashi.txt','w') => #<File:tmp/atashi.txt> irb(main):138:0> 100.times{ generate(out,d,nil,100); out.puts ['','===============','']} => 100 irb(main):139:0> out.close
泣くアタシの
肩を
さする
『アキ
ごめんね
本とに
アタシも
嬉しく
感じた
なんでか
わかんないけど
・・・・・・?
返事
早いし!!
===============
なんで?』
『ん?』
『ん?
嫌なら
いいよ』
嫌なわけないじゃん
マヂ
考えただけでも
顔が熱くなる
みたいな
『中華でいい?』
『だから
何でもいいって』
てか
なんで?
意味わかんない
意味わかんない
意味わかんない
アタシが
マジ恋
なぁんて
ある訳ないじゃん
みたいな
昨日
あんだけ
凹んでも
やっぱり
トモが
『部屋着に
なりなよ
俺も着替えるし』
『うん』
『ダメ
だった
みたいな
男友達や
セフレの
連絡は
まだ
いても
アタシを
見てくれていないね
アタシの
準備バッチリ
いつものアタシ
顔はカヨでも
アタシは
背中を
向けて
寝たフリを
していた
一緒にいたいのも
勿論
あるけど
ほとんど
アタシじゃん?
アタシと連絡
したくないわけ?
アタシは
淋しいっつ〜の
てか
困る
みたいな
浮気した事ない
言う奴
アタシ
何したって
無駄かも
しれないじゃん
一緒に
買い物
出来ないじゃん
カップルって
みんなに
見られたかったじゃん
アタシ
すかさず
丸も注文
したんだけど』
アタシ
アキだよ
背中の傷も
カヨのじゃないよ
風呂場で
顔を
出すようになった
前と同じ
料理を教わる
おかんは
覚えといても
損はないから
って
言ってくれた
あの言葉
お陰様で
辛いし
淋しいし
悲しいけど
なんとなく
みたいな』
本当は無限恋空がやりたい。