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

回答編集履歴

6

修正

2017/05/29 23:30

投稿

退会済みユーザー
answer CHANGED
@@ -4,7 +4,7 @@
4
4
  m = 4
5
5
  n = 3
6
6
 
7
- array = ([(1..n).to_a] * m)
7
+ array = ([(1..n).to_a] * m) # array = [[1, 2, 3], [1, 2]]等もいける。
8
8
 
9
9
  tmp = array.shift
10
10
 

5

修正

2017/05/29 23:30

投稿

退会済みユーザー
answer CHANGED
@@ -21,4 +21,64 @@
21
21
  再帰ではないですが、考えてみました。
22
22
  恐らく「i * j * ... * m」この部分のすべての組み合わせを
23
23
  作れていると思います。
24
- (私は数学が得意ではないのでよく分かっていません。)
24
+ (私は数学が得意ではないのでよく分かっていません。)
25
+
26
+ repeated_combinationを使う方法と私の方法では結果が若干異なります。
27
+ ```Ruby
28
+ # encoding: utf-8
29
+
30
+ m = 2
31
+ n = 2
32
+
33
+ array = ([(1..n).to_a] * m)
34
+
35
+ tmp = array.shift
36
+
37
+ array.each do |element|
38
+ tmp = tmp.product(element)
39
+ end
40
+
41
+ tmp.map!(&:flatten)
42
+
43
+ tmp.each do |e|
44
+ puts "#{e} => #{e.reduce(:*)}"
45
+ end
46
+ ```
47
+ ```
48
+ [1, 1] => 1
49
+ [1, 2] => 2
50
+ [2, 1] => 2
51
+ [2, 2] => 4
52
+ ```
53
+ ```Ruby
54
+ # encoding: utf-8
55
+
56
+ n = 2
57
+ m = 2
58
+
59
+ (1..n).to_a.repeated_combination(m){|comb|
60
+ p comb
61
+ }
62
+
63
+ ```
64
+ ```
65
+ [1, 1]
66
+ [1, 2]
67
+ [2, 2]
68
+ ```
69
+ ```Ruby
70
+ # encoding: utf-8
71
+
72
+ (1..2).each do |i|
73
+ (1..2).each do |j|
74
+ p [i, j]
75
+ end
76
+ end
77
+
78
+ ```
79
+ ```
80
+ [1, 1]
81
+ [1, 2]
82
+ [2, 1]
83
+ [2, 2]
84
+ ```

4

修正

2017/05/29 16:53

投稿

退会済みユーザー
answer CHANGED
@@ -1,8 +1,8 @@
1
1
  ```Ruby
2
2
  # encoding: utf-8
3
3
 
4
+ m = 4
4
5
  n = 3
5
- m = 4
6
6
 
7
7
  array = ([(1..n).to_a] * m)
8
8
 
@@ -15,7 +15,7 @@
15
15
  tmp.map!(&:flatten)
16
16
 
17
17
  tmp.each do |e|
18
- puts "#{e.to_s} => #{e.reduce(:*)}"
18
+ puts "#{e} => #{e.reduce(:*)}"
19
19
  end
20
20
  ```
21
21
  再帰ではないですが、考えてみました。

3

修正

2017/05/29 14:42

投稿

退会済みユーザー
answer CHANGED
@@ -1,8 +1,11 @@
1
1
  ```Ruby
2
2
  # encoding: utf-8
3
3
 
4
- array = ([(1..5).to_a] * 3)
4
+ n = 3
5
+ m = 4
5
6
 
7
+ array = ([(1..n).to_a] * m)
8
+
6
9
  tmp = array.shift
7
10
 
8
11
  array.each do |element|
@@ -12,10 +15,10 @@
12
15
  tmp.map!(&:flatten)
13
16
 
14
17
  tmp.each do |e|
15
- puts e.reduce(:*) + 1
18
+ puts "#{e.to_s} => #{e.reduce(:*)}"
16
19
  end
17
-
18
20
  ```
19
21
  再帰ではないですが、考えてみました。
22
+ 恐らく「i * j * ... * m」この部分のすべての組み合わせを
20
- 恐らくすべてのパターンを作れていると思います。
23
+ 作れていると思います。
21
24
  (私は数学が得意ではないのでよく分かっていません。)

2

修正

2017/05/29 14:39

投稿

退会済みユーザー
answer CHANGED
@@ -1,7 +1,7 @@
1
1
  ```Ruby
2
2
  # encoding: utf-8
3
3
 
4
- array = ([(1..8).to_a] * 3)
4
+ array = ([(1..5).to_a] * 3)
5
5
 
6
6
  tmp = array.shift
7
7
 

1

修正

2017/05/29 14:18

投稿

退会済みユーザー
answer CHANGED
@@ -1,7 +1,7 @@
1
1
  ```Ruby
2
- #encoding: utf-8
2
+ # encoding: utf-8
3
3
 
4
- array = ([(1..5).to_a] * 3)
4
+ array = ([(1..8).to_a] * 3)
5
5
 
6
6
  tmp = array.shift
7
7
 
@@ -9,7 +9,7 @@
9
9
  tmp = tmp.product(element)
10
10
  end
11
11
 
12
- tmp.map! { |e| e.flatten }
12
+ tmp.map!(&:flatten)
13
13
 
14
14
  tmp.each do |e|
15
15
  puts e.reduce(:*) + 1