Diary/2011-12-13
旅程
出張の申請をするときに旅程を書かなければいけないのだけど
地味に面倒....
というわけで駅前探検倶楽部のテキストデータから旅程出せるような
スクリプトを書いてみた.
format.rb(312)
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山手線) → 新宿 → (京王線) → 調布
とか出力される.