設問
これまでに2度行った経路と距離の問題を,今回は while ループを使っ たものに変更する.以下の経路をサイコロを振って進むとき,出た目の数だけ進 む(単位m)とすると,ゴールに到達するまでの各回のサイコロの目,スタート地点からの 経路上の累積距離,スタート地点から現在値までの直線距離を表示するスクリプトを 作成せよ.なお,ゴールに到達した時点でサイコロの目がまだ余っていても無視 するものとする.すなわち,例えばゴールまで3mのところにいるときには,3以上の目 はすべて上がりとする.
図1 経路図
include Math d = 0 while d < 58 dice = rand(6) + 1 d += dice case d when 0..2 r = d when 2..4 r = sqrt(2*2 + (d-2)*(d-2)) when 4..8 r = sqrt(2*2 + (6-d)*(6-d)) when 8..12 r = sqrt(2*2 + (10-d)*(10-d)) when 12..18 r = sqrt(2*2 + (14-d)*(14-d)) when 18..24 r = sqrt(4*4 + (20-d)*(20-d)) when 24..32 r = sqrt(4*4 + (28-d)*(28-d)) when 32..40 r = sqrt(4*4 + (36-d)*(36-d)) when 40..50 r = sqrt(4*4 + (44-d)*(44-d)) when 50..58 r = sqrt(6*6 + (54-d)*(54-d)) else d = 58 r = sqrt(6*6 + 4*4) end printf "サイコロの目: %2d\n", dice printf "進んだ距離: %2d\n", d printf "直線距離:%7.2f\n\n", r end |
Back |