Diary/2011-12-13
旅程
出張の申請をするときに旅程を書かなければいけないのだけど
地味に面倒....
というわけで駅前探検倶楽部のテキストデータから旅程出せるような
スクリプトを書いてみた.
format.rb(239)
path = [] goal = "" data = $stdin.read data.split("\n").each{ |line| if /^●(.+)/ =~ line then path << $1 elsif /^○(.+)/ =~ line then path << $1 elsif /^↓(.+)/ =~ line then path << $1 elsif /^■(.+)/ =~ line then goal = $1 elsif /\d\d:\d\d/ =~ line then elsif / +([^\(].+)\(.+\)\[.+\]/ =~ line then path << $1 elsif /徒歩/ =~ line then path << "徒歩" elsif /バス/ =~ line then path << "バス" elsif / +(\D+)(\d+)便/ =~ line then path << $1 end } flag = false im = "" ret_path = path.reverse path.each{|elem| print im print "(" if flag print elem print ")" if flag im = " → " flag = !flag } print " → " print goal flag = true ret_path.each{|elem| print im print "(" if flag print elem print ")" if flag im = " → " flag = !flag } puts
たとえば,調布→湯河原で検索した結果
●調布 | 15:18発 | 京王線(準特急)[新宿行]17分 | △15:35着 ○新宿 | 15:42発 | JR山手線(内回り)[渋谷方面行]19分 | 16:01着 ○品川 | 16:10発 | ひかり479号(自由席)[岡山行]32分 | 16:42着 ○熱海 | 16:51発 | JR東海道本線(快速アクティー)[東京行]5分 | 16:56着 ■湯河原
を
ruby format.rb
のあと標準入力から入力すると,
調布 → (京王線) → 新宿 → (JR山手線) → 品川 → (ひかり479号) → 熱海 → (JR東海道本線) → 湯河原 → (JR東海道本線) → 熱海 → (ひかり479号) → 品川 → (JR山手線) → 新宿 → (京王線) → 調布
とか出力される.