第30回オフラインリアルタイムどう書くの解答
第30回 オフラインリアルタイムどう書くの問題を家で解きました。
問題のURL( http://nabetani.sakura.ne.jp/hena/ord30taxi/ )
45分ほど
経路の終点でちょうど値段が上がるケースは問題上ありえなかったので、ひとまずは無視しました。
都市のデータの持ち方はもっと良い方法を考えたほうが良かった気がする。
def process(path)
(0...(path.length-1)).map { |index|
{
'AB' => [ 1090, 0, ],
'AC' => [ 180, 0, ],
'AD' => [ 0, 540, ],
'BC' => [ 960, 0, ],
'BG' => [ 1270, 0, ],
'CD' => [ 0, 400, ],
'CF' => [ 200, 0, ],
'DE' => [ 0, 720, ],
'DF' => [ 0, 510, ],
'EG' => [ 0, 1050, ],
'FG' => [ 0, 230, ],
}[path[index, 2].chars.sort.join]
}.inject( {
'A' => [ 400, 995, ],
'B' => [ 400, 995, ],
'C' => [ 400, 995, ],
'D' => [ 350, 845, ],
'E' => [ 350, 845, ],
'F' => [ 350, 845, ],
'G' => [ 350, 845, ],
}[path[0]] ) { |result, distance|
distance.zip( [ 60, 50, ] ).each { |edge_distance, price|
result[1] = result[1] - edge_distance
while result[1] < 0
result = result.zip( [price, 200] ).map { |left, right| left + right }
end
}
result
}[0].to_s
end
def test(input, answer)
result = process(input)
if result != answer then
puts 'test error: input = %s, result = %s, but answer = %s'%[ input, result, answer ]
end
end
test( "ADFC", "510" )
# テストケース略
Author And Source
この問題について(第30回オフラインリアルタイムどう書くの解答), 我々は、より多くの情報をここで見つけました https://qiita.com/e0232/items/90e26f4db2b94256bf6c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .