質問編集履歴

6

訂正

2017/12/22 09:46

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,18 +1,8 @@
1
- ちょっと難しくてお手上げなレポートがありまして。
2
-
3
-
4
-
5
1
  # 問題(Rubyを使いたいです)
6
2
 
7
3
 
8
4
 
9
- **下図のように、両端に1を置き、左上と右上との数を足すという規則で数を配置していきます。コマンドラインオプションで何段目かを指定すると、その段にあらわれる数をすべて出力するプログラムを作成してください。たとえば、4段目を指定した場合には「1 3 3 1」を出力します。**
5
+ **両端に1を置き、左上と右上との数を足すという規則で数を配置していきます。コマンドラインオプションで何段目かを指定すると、その段にあらわれる数をすべて出力するプログラムを作成してください。**
10
-
11
-
12
-
13
-
14
-
15
-
16
6
 
17
7
 
18
8
 
@@ -33,6 +23,8 @@
33
23
 
34
24
 
35
25
  # 二項係数やフィボナッチ。。。この辺がヒントなきがしてきました...。(難しい
26
+
27
+
36
28
 
37
29
  ```
38
30
 

5

訂正

2017/12/22 09:46

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- ![イメージ説明](34cd2335c7b69abca5d9a0d5e0c22e3c.png)
13
+
14
14
 
15
15
 
16
16
 

4

aaa

2017/12/22 09:43

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
  # 二項係数やフィボナッチ。。。この辺がヒントなきがしてきました...。(難しい
36
36
 
37
-
37
+ ```
38
38
 
39
39
  def getFibonacciNumber(n)
40
40
 
@@ -71,3 +71,5 @@
71
71
  end
72
72
 
73
73
  end
74
+
75
+ ```

3

難しい。。。

2017/12/22 09:18

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -32,52 +32,42 @@
32
32
 
33
33
 
34
34
 
35
- # 二項係数
35
+ # 二項係数やフィボナッチ。。。この辺がヒントなきがしてきました...。(難しい
36
36
 
37
37
 
38
38
 
39
- ```
39
+ def getFibonacciNumber(n)
40
40
 
41
- def combi(n,k)
41
+ if n < 0
42
42
 
43
- k=n-k if 2*k > n
43
+ return -1
44
44
 
45
- return 1 if k == 0
45
+ elsif n == 0 || n == 1
46
46
 
47
+ return 1
48
+
49
+ else
50
+
47
- ((n-k+1)..n).reduce(&:*)/((1..k).reduce(&:*))
51
+ return getFibonacciNumber(n-1) + getFibonacciNumber(n-2)
52
+
53
+ end
48
54
 
49
55
  end
50
56
 
51
57
 
52
58
 
53
- ```
54
59
 
55
60
 
61
+ Benchmark.bm 10 do |r|
56
62
 
57
- ```
63
+ r.report "No Memorization" do
58
64
 
65
+ 0.upto(50) do |i|
59
66
 
67
+ printf("\n%4d:%d", i, getFibonacciNumber(i))
60
68
 
61
- # 二項係数 ver. 1
69
+ end
62
70
 
63
- # 再帰をつかってシンプルに計算するバージョン
64
-
65
- def binom_v1 n,k
66
-
67
- if k==0 then
68
-
69
- return 1
70
-
71
- elsif n==k then
72
-
73
- return 1
74
-
75
- else
76
-
77
- return binom_v1(n-1,k-1)+binom_v1(n-1,k)
78
-
79
- end
71
+ end
80
72
 
81
73
  end
82
-
83
- ```

2

二項係数

2017/12/22 09:17

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -32,42 +32,52 @@
32
32
 
33
33
 
34
34
 
35
- ```
36
-
37
- class Pyramid
38
-
39
- def initialize(n)
40
-
41
- @ary = []
35
+ # 二項係数
42
-
43
- 1.upto(n) do |i|
44
-
45
- @ary << ' ' * (n - i) + '*' * (2 * i - 1)
46
-
47
- end
48
-
49
- end
50
36
 
51
37
 
52
38
 
53
- def disp
39
+ ```
54
40
 
55
- @ary.each do |a|
41
+ def combi(n,k)
56
42
 
57
- puts a
43
+ k=n-k if 2*k > n
58
44
 
59
- end
45
+ return 1 if k == 0
60
46
 
61
- end
47
+ ((n-k+1)..n).reduce(&:*)/((1..k).reduce(&:*))
62
48
 
63
49
  end
64
50
 
65
51
 
66
52
 
67
- n = ARGV[0] || 4
53
+ ```
68
54
 
69
- pyr = Pyramid.new(n.to_i)
70
55
 
71
- pyr.disp
72
56
 
73
57
  ```
58
+
59
+
60
+
61
+ # 二項係数 ver. 1
62
+
63
+ # 再帰をつかってシンプルに計算するバージョン
64
+
65
+ def binom_v1 n,k
66
+
67
+ if k==0 then
68
+
69
+ return 1
70
+
71
+ elsif n==k then
72
+
73
+ return 1
74
+
75
+ else
76
+
77
+ return binom_v1(n-1,k-1)+binom_v1(n-1,k)
78
+
79
+ end
80
+
81
+ end
82
+
83
+ ```

1

問題

2017/12/22 08:59

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -16,7 +16,11 @@
16
16
 
17
17
 
18
18
 
19
+ ご教授いただけると幸いです。
20
+
21
+
22
+
19
- # 自分なりの努力
23
+ # 自分なりの努力,,,(参考になりません)
20
24
 
21
25
 
22
26
 
@@ -25,8 +29,6 @@
25
29
  ちょっと難しくて質問をさせてください。
26
30
 
27
31
  下記のコードは自分が調べただけなので、参考になりません。
28
-
29
-
30
32
 
31
33
 
32
34