第 5 回 何度も呼び出そう レポート課題 氏名:水口天地 学籍番号:c1101862 語学クラス:英語2 コース(系):地域共創 1.筆記問題 A. mizuguchi tenchi これを ASCII コード表見ながら直していく。横にある数字と縦にある数字と 文字を組み合わせて 0x xx のように表現する。xx のところに組み合わせたも のが入る。 m =0x 6d i =0x 69 z =0x 7a u =0x 75 g =0x 67 u =0x 75 c =0x 63 h =0x 68 i =0x 69 t =0x 74 e =0x 65 n =0x 6e c =0x 63 h =0x 68 i =0x 69 0x 6d = 6*16^1+13*16^0 = 109 0x 69 = 6*16^1+9*16^0 = 105 0x 7a = 7*16^1+10*16^0 = 122 0x 75 = 7*16^1+5*16^0 = 117 0x 67 = 6*16^1+7*16^0 = 103 0x 75 = 7*16^1+5*16^0 = 117 0x 63 = 6*16^1+3*16^0 = 99 0x 68 = 6*16^1+8*16^0 = 104 0x 69 = 6*16^1+9*16^0 = 105 0x 74 = 7*16^1+4*16^0 = 116 0x 65 = 6*16^1+5*16^0 = 101 0x 6e = 6*16^1+14*16^0 = 110 0x 63 = 6*16^1+3*16^0 = 99 0x 68 = 6*16^1+8*16^0 = 104 0x 69 = 6*16^1+9*16^0 = 105 上記の数を全て足すと、 109 + 105 + 122 + 117 + 103 + 117 + 99 + 104 + 105 + 116 + 101 + 110 + 99 + 104 + 105 = 1616 となる。 これを16で割ると、 16)1616 ----- 16) 101 0 ----- 16) 6 5 ----- 0 6 下から読んで 650 となる。よって、16進数で表すと、 0x 650 となる。 0d1616 = 0x650 16進数 と 10進数で計算した結果同じになったので、計算は合っていることが 確認できた。 B.毎朝の歯を磨く行動をプログラム風にしてみた。 def hamigaki(hamigakiko ,ugai ,kaowoarau) 歯ブラシに hamigakiko をつける 歯を磨いたら ugai をする kao = kaowoarau end hamigaki(10g ,40秒 ,30秒) # 歯を磨くので呼び出す print("いってきます\n") 2.プログラム問題 Aを実行した a)考えた設定 10個の物から5個選んだときの組合せを求めるプログラムである。 b)作成したプログラム #!/usr/koeki/bin/ruby def combi (x) if x == 1 1 else x * combi(x-1) end end all = 10 choice = 5 result = all - choice printf("%d 個の物から %d 個取る組合せは...?\n", all, choice) sleep 1 printf("%d 通りです。\n", combi(all)/(combi(choice)*combi(result))) c)実行結果 pan{c110186}% ./def_combination.rb [~/ruby] 10 個の物から 5 個取る組合せは...? 252 通りです。 d)考察 a個の物からb個取る組合せは、 a!/b!(a-b)! の公式である。 これに今回の変数を代入して、 10!/5!(10-5)! = 10*9*8*7*6*5*4*3*2*1 / (5*4*3*2*1*5*4*3*2*1) となる。 これを kterm で計算すると、 pan{c110186}% bc -l [~/ruby] 10*9*8*7*6*5*4*3*2*1 / (5*4*3*2*1*5*4*3*2*1) 252.00000000000000000000 となったので正しいと言える。 3.感想 歩くおもちゃがあると思う。歩くという行動は右足を前に出し、次に左足を前に 出しまた右足を前に出すの繰り返しなので機械的に、繰り返していると思う。 16進数を計算するのに時間がかかった。今回のプログラムもなんとか一人で時間 を掛けながら作ることが出来たので良かった。これからも頑張りたい。