第30回オフラインリアルタイムどう書くの問題をRubyで解く
問題はこちら。
http://nabetani.sakura.ne.jp/hena/ord30taxi/
DIST={AB:1090,AC:180,AD:540,BC:960,BG:1270,CD:400,CF:200,DE:720,DF:510,EG:1050,FG:230}
FEE={AB:60,AC:60,AD:50,BC:60,BG:60,CD:50,CF:60,DE:50,DF:50,EG:50,FG:50}
def solve(q)
cur_pos, *pos = q.chars
sum, dist = cur_pos < 'D' ? [400,995] : [350,845]
pos.each{|p|
key = [cur_pos, p].sort.join.to_sym
d = DIST[key]
if d <= dist
dist -= d
else
d -= dist
while true
dist = 200
sum += FEE[key]
if d < dist
dist -= d
break
else
d -= dist
end
end
end
cur_pos = p
}
sum
end
DATA.readlines.each do |line|
no,q,a = line.strip.split(/\s+/)
ans = solve(q)
print no + "\t" + ans.to_s
puts ans == a.to_i ? ' o' : ' x'
end
__END__
0 ADFC 510
1 CFDA 500
2 AB 460
3 BA 460
4 CD 400
5 DC 350
6 BG 520
7 GB 530
8 FDA 450
9 ADF 450
10 FDACB 750
11 BCADF 710
12 EDACB 800
13 BCADE 810
14 EGFCADE 920
15 EDACFGE 910
16 ABCDA 960
17 ADCBA 1000
18 BADCFGB 1180
19 BGFCDAB 1180
20 CDFC 460
21 CFDC 450
22 ABGEDA 1420
23 ADEGBA 1470
24 CFGB 640
25 BGFC 630
26 ABGEDFC 1480
27 CFDEGBA 1520
28 CDFGEDABG 1770
29 GBADEGFDC 1680
Author And Source
この問題について(第30回オフラインリアルタイムどう書くの問題をRubyで解く), 我々は、より多くの情報をここで見つけました https://qiita.com/nidouchi/items/ece2202958a61426cbfb著者帰属:元の著者の情報は、元の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 .