teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

6

訂正

2017/12/22 09:46

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,12 +1,7 @@
1
- ちょっと難しくてお手上げなレポートがありまして。
2
-
3
1
  # 問題(Rubyを使いたいです)
4
2
 
5
- **下図のように、両端に1を置き、左上と右上との数を足すという規則で数を配置していきます。コマンドラインオプションで何段目かを指定すると、その段にあらわれる数をすべて出力するプログラムを作成してください。たとえば、4段目を指定した場合には「1 3 3 1」を出力します。**
3
+ **両端に1を置き、左上と右上との数を足すという規則で数を配置していきます。コマンドラインオプションで何段目かを指定すると、その段にあらわれる数をすべて出力するプログラムを作成してください。**
6
4
 
7
-
8
-
9
-
10
5
  ご教授いただけると幸いです。
11
6
 
12
7
  # 自分なりの努力,,,(参考になりません)
@@ -16,6 +11,7 @@
16
11
  下記のコードは自分が調べただけなので、参考になりません。
17
12
 
18
13
  # 二項係数やフィボナッチ。。。この辺がヒントなきがしてきました...。(難しい
14
+
19
15
  ```
20
16
  def getFibonacciNumber(n)
21
17
  if n < 0

5

訂正

2017/12/22 09:46

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -4,9 +4,9 @@
4
4
 
5
5
  **下図のように、両端に1を置き、左上と右上との数を足すという規則で数を配置していきます。コマンドラインオプションで何段目かを指定すると、その段にあらわれる数をすべて出力するプログラムを作成してください。たとえば、4段目を指定した場合には「1 3 3 1」を出力します。**
6
6
 
7
- ![イメージ説明](34cd2335c7b69abca5d9a0d5e0c22e3c.png)
8
7
 
9
8
 
9
+
10
10
  ご教授いただけると幸いです。
11
11
 
12
12
  # 自分なりの努力,,,(参考になりません)

4

aaa

2017/12/22 09:43

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -16,7 +16,7 @@
16
16
  下記のコードは自分が調べただけなので、参考になりません。
17
17
 
18
18
  # 二項係数やフィボナッチ。。。この辺がヒントなきがしてきました...。(難しい
19
-
19
+ ```
20
20
  def getFibonacciNumber(n)
21
21
  if n < 0
22
22
  return -1
@@ -34,4 +34,5 @@
34
34
  printf("\n%4d:%d", i, getFibonacciNumber(i))
35
35
  end
36
36
  end
37
- end
37
+ end
38
+ ```

3

難しい。。。

2017/12/22 09:18

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -15,28 +15,23 @@
15
15
  ちょっと難しくて質問をさせてください。
16
16
  下記のコードは自分が調べただけなので、参考になりません。
17
17
 
18
- # 二項係数
18
+ # 二項係数やフィボナッチ。。。この辺がヒントなきがしてきました...。(難しい
19
19
 
20
- ```
21
- def combi(n,k)
20
+ def getFibonacciNumber(n)
22
- k=n-k if 2*k > n
21
+ if n < 0
22
+ return -1
23
- return 1 if k == 0
23
+ elsif n == 0 || n == 1
24
+ return 1
25
+ else
24
- ((n-k+1)..n).reduce(&:*)/((1..k).reduce(&:*))
26
+ return getFibonacciNumber(n-1) + getFibonacciNumber(n-2)
27
+ end
25
28
  end
26
29
 
27
- ```
28
30
 
29
- ```
30
-
31
- # 二項係数 ver. 1
32
- # 再帰をつかってシンプルに計算するバージョン
33
- def binom_v1 n,k
31
+ Benchmark.bm 10 do |r|
34
- if k==0 then
35
- return 1
36
- elsif n==k then
37
- return 1
38
- else
39
- return binom_v1(n-1,k-1)+binom_v1(n-1,k)
32
+ r.report "No Memorization" do
33
+ 0.upto(50) do |i|
34
+ printf("\n%4d:%d", i, getFibonacciNumber(i))
40
- end
35
+ end
41
- end
36
+ end
42
- ```
37
+ end

2

二項係数

2017/12/22 09:17

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -15,23 +15,28 @@
15
15
  ちょっと難しくて質問をさせてください。
16
16
  下記のコードは自分が調べただけなので、参考になりません。
17
17
 
18
+ # 二項係数
19
+
18
20
  ```
19
- class Pyramid
20
- def initialize(n)
21
+ def combi(n,k)
21
- @ary = []
22
+ k=n-k if 2*k > n
22
- 1.upto(n) do |i|
23
+ return 1 if k == 0
23
- @ary << ' ' * (n - i) + '*' * (2 * i - 1)
24
+ ((n-k+1)..n).reduce(&:*)/((1..k).reduce(&:*))
24
- end
25
+ end
25
- end
26
26
 
27
+ ```
28
+
29
+ ```
30
+
31
+ # 二項係数 ver. 1
32
+ # 再帰をつかってシンプルに計算するバージョン
27
- def disp
33
+ def binom_v1 n,k
28
- @ary.each do |a|
34
+ if k==0 then
29
- puts a
35
+ return 1
36
+ elsif n==k then
37
+ return 1
38
+ else
39
+ return binom_v1(n-1,k-1)+binom_v1(n-1,k)
30
- end
40
+ end
31
- end
32
41
  end
33
-
34
- n = ARGV[0] || 4
35
- pyr = Pyramid.new(n.to_i)
36
- pyr.disp
37
42
  ```

1

問題

2017/12/22 08:59

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -7,13 +7,14 @@
7
7
  ![イメージ説明](34cd2335c7b69abca5d9a0d5e0c22e3c.png)
8
8
 
9
9
 
10
- # 自分なりの努力
10
+ ご教授いただけると幸いです。
11
11
 
12
+ # 自分なりの努力,,,(参考になりません)
13
+
12
14
  色々ピラミッドを作るプログラムから解決の糸口はないか等も探しているのですが、
13
15
  ちょっと難しくて質問をさせてください。
14
16
  下記のコードは自分が調べただけなので、参考になりません。
15
17
 
16
-
17
18
  ```
18
19
  class Pyramid
19
20
  def initialize(n)