情報科学概論
Aクラス 宿題 2005.12.19

Back


宿題においても, 解答用紙 を使用する.この書式で解答を提出すること.

設問

図に示すような経路に沿ってサイコロの出た目の数に従って進むとする.サイコ ロの目の長さだけ,すなわち,1が出たら1m進むとする.そのとき,経路に沿っ て進んだ距離とスタート地点からの直線距離を以下のように表示するスクリプト を作成せよ.ゴールにはサイコロの目がちょうどでなくても上がれるものとし, ゴールしたときの距離はゴール地点のものとする.

サイコロの目: 2,進んだ距離:  2 m,直線距離:  2.00 m
サイコロの目: 1,進んだ距離:  3 m,直線距離:  3.00 m
サイコロの目: 5,進んだ距離:  8 m,直線距離:  5.66 m
サイコロの目: 3,進んだ距離: 11 m,直線距離:  5.00 m
サイコロの目: 1,進んだ距離: 12 m,直線距離:  4.47 m
サイコロの目: 6,進んだ距離: 18 m,直線距離:  5.66 m
サイコロの目: 1,進んだ距離: 19 m,直線距離:  8.06 m
サイコロの目: 6,進んだ距離: 25 m,直線距離:  9.00 m
サイコロの目: 3,ゴール!


解答例


d1 = 0
d2 = 0

while d1
  dice = rand(6) + 1
  d1 += dice
  
  case d1
  when 1..4
    d2 = d1
  when 4..8
    d2 = sqrt(4 * 4 + (d1 - 4) * (d1 - 4))
  when 8..10
    d2 = sqrt((4 + (d1 - 8)) * (4 + (d1 - 8)) + 4 * 4)
  when 10..18
    d2 = sqrt(6 * 6 + (14 - d1) * (14 - d1))
  when 18..20
    d2 = sqrt((6 + (d1 - 18)) * (6 + (d1 - 18)) + 4 * 4)
  when 20..24
    d2 = sqrt(8 * 8 + (24 - d1) * (24 - d1))
  when 25
    d2 = 9
  else
    break
  end

  printf "サイコロの目:%2d,進んだ距離:%3d m,直線距離:%6.2f m\n", dice, d1, d2
end

printf "サイコロの目:%2d,ゴール!\n", dice


情報科学概論
Bクラス 宿題 2005.12.19

Back


宿題においても, 解答用紙 を使用する.この書式で解答を提出すること.

設問

図に示すような経路に沿ってサイコロの出た目の数に従って進むとする.サイコ ロの目の長さだけ,すなわち,1が出たら1m進むとする.そのとき,経路に沿っ て進んだ距離とスタート地点からの直線距離を以下のように表示するスクリプト を作成せよ.ゴールにはサイコロの目がちょうどでなくても上がれるものとし, ゴールしたときの距離はゴール地点のものとする.

サイコロの目: 2,進んだ距離:  2 m,直線距離:  2.00 m
サイコロの目: 4,進んだ距離:  6 m,直線距離:  4.47 m
サイコロの目: 6,進んだ距離: 12 m,直線距離:  4.00 m
サイコロの目: 6,進んだ距離: 18 m,直線距離:  7.21 m
サイコロの目: 3,進んだ距離: 21 m,直線距離:  6.08 m
サイコロの目: 4,進んだ距離: 25 m,直線距離:  9.00 m
サイコロの目: 1,ゴール!


解答例

include Math

d1 = 0
d2 = 0

while d1
  dice = rand(6) + 1
  d1 += dice
  
  case d1
  when 1,2
    d2 = d1
  when 2..6
    d2 = sqrt(2 * 2 + (d1 - 2) * (d1 - 2))
  when 6..8
    d2 = sqrt((2 + (d1 - 6)) * (2 + (d1 - 6)) + 4 * 4)
  when 8..16
    d2 = sqrt(4 * 4 + (12 - d1) * (12 - d1))
  when 16..18
    d2 = sqrt((4 + (d1 - 16)) * (4 + (d1 - 16)) + 4 * 4)
  when 18..22
    d2 = sqrt(6 * 6 + (22 - d1) * (22 - d1))
  when 22..25
    d2 = 6 + (d1 - 22)
  else
    break
  end

  printf "サイコロの目:%2d,進んだ距離:%3d m,直線距離:%6.2f m\n", dice, d1, d2
end

printf "サイコロの目:%2d,ゴール!\n", dice


Back