情報科学概論(再履修)
Rクラス 小テスト 2004.11.26

Back

以下の設問の解答は所定の解答用紙に記入 して添付書類として提出して下さい.その際に,ファイル名 を必ず自分にあったものに変更することと学生番号と氏名を記入すること を忘れないようにして下さい.


図1に示すような経路を考える.さいころを3回振って出た目の合計を30倍した 距離(単位はm)だけ経路に沿って進むものとする.そのときに,出発点から現在 値までの直線距離を求めるスクリプトを case 文を用いて作成せよ.設定や条件は以下の通りとす る

図1 進む経路


解答例

include Math

dice1 = rand(6) + 1
dice2 = rand(6) + 1
dice3 = rand(6) + 1

d = (dice1 + dice2 + dice3) * 30

case d
when 3..150
  r = d.to_f
when 150..310
  r = sqrt(150*150.0 + (d - 150)**2)
when 310..390
  r = sqrt((150 - (d - 310))**2 + 160*160.0)
when 390..450
  r = sqrt(70*70.0 + ((d - 390) + 160)**2)
else
  r = sqrt(((d-450)+70)**2 + 220*220.0)
end

printf "サイコロの目:%d, %d, %d\n", dice1, dice2, dice3
printf "目の合計:    %d\n", dice1 + dice2 + dice3
printf "進んだ距離:  %d m\n", d
printf "直線距離:    %1.2f m\n", r


Back