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

回答編集履歴

4

追記

2019/03/04 12:24

投稿

katoy
katoy

スコア22328

answer CHANGED
@@ -47,4 +47,27 @@
47
47
  print("{}: {:2d}:".format(x, a * 6 + b * 2 + c))
48
48
  ```
49
49
  ![イメージ説明](7760768dab27327af79de93d87bd2cc2.png)
50
- ![イメージ説明](d009471204c0d3922221f53e3b46b32a.png)
50
+ ![イメージ説明](d009471204c0d3922221f53e3b46b32a.png)
51
+
52
+ 追記
53
+ 組合せの場合を示します。
54
+ eee.py
55
+ ```python3
56
+ import itertools
57
+
58
+ nums = [1, 2, 3, 4]
59
+ # [1, 2, 3, 4] から3つを撰ぶ組合せ一覧で idx 番目の組合せを求める
60
+ for idx in range(4**3):
61
+ print("{:2d}: {}".format(
62
+ idx, [nums[idx // (4 * 4)], nums[(idx // 4) % 4], nums[idx % 4]]))
63
+
64
+ # [a, b, c] が [1, 2, 3, 4] から 3 つを撰ぶ組合せ一覧で何番目かを求める
65
+ for a in nums:
66
+ for b in nums:
67
+ for c in nums:
68
+ print("{}: {:2d}:".format(
69
+ [a, b, c], ((a - 1) * 4 + (b - 1) ) * 4 + (c - 1)))
70
+ ```
71
+ ![イメージ説明](2389eb7c5fa52e43f149297033dcb8ec.png)
72
+ ![イメージ説明](b03d66db4be535c4f384a0bab46fbf8c.png)
73
+ ![イメージ説明](7e3c6be8be5328dd93bd3ebdccb160e9.png)

3

追記

2019/03/04 12:24

投稿

katoy
katoy

スコア22328

answer CHANGED
@@ -17,4 +17,34 @@
17
17
  どんな処理をしたいのかを提示すると、一覧全体無しで処理する方法が回答として得られると思います。
18
18
 
19
19
  注:
20
- 半角 ** は うまく表示されない(強調表示に解釈されてしまう) ので、 全角**で書き直しました。
20
+ 半角 ** は うまく表示されない(強調表示に解釈されてしまう) ので、 全角**で書き直しました。
21
+
22
+ 追記
23
+ ```python3
24
+ import itertools
25
+
26
+ # [1, 2, 3, 4] から3つを撰ぶ順列一覧で idx 番目の順列を求める
27
+ for idx in range(24):
28
+ nums = [1, 2, 3, 4]
29
+
30
+ a = nums[idx // 6]
31
+ nums.remove(a)
32
+ b = nums[idx % 6 // 3]
33
+ nums.remove(b)
34
+ c = nums[idx % 2]
35
+
36
+ print("{:2d}: {}".format(idx, [a, b, c]))
37
+
38
+ # [a, b, c] が [1, 2, 3, 4] から 3 つを撰ぶ順列一覧で何番目かを求める
39
+ for x in itertools.permutations([1, 2, 3, 4], 3):
40
+ nums = [1, 2, 3, 4]
41
+
42
+ a = nums.index(x[0])
43
+ nums.remove(x[0])
44
+ b = nums.index(x[1])
45
+ nums.remove(x[1])
46
+ c = nums.index(x[2])
47
+ print("{}: {:2d}:".format(x, a * 6 + b * 2 + c))
48
+ ```
49
+ ![イメージ説明](7760768dab27327af79de93d87bd2cc2.png)
50
+ ![イメージ説明](d009471204c0d3922221f53e3b46b32a.png)

2

r

2019/03/03 01:03

投稿

katoy
katoy

スコア22328

answer CHANGED
File without changes

1

誤り訂正

2019/03/03 01:00

投稿

katoy
katoy

スコア22328

answer CHANGED
@@ -1,15 +1,20 @@
1
1
  本当に組合わせの一覧全部がほしいのでしょうか?
2
2
 
3
- 組合わせ一一覧に個数なら python で 520 * 6 とすれば 19770609664000000 が得られます。
4
3
 
4
+ 組合わせ一一覧に個数なら python で 520 ** 6 とすれば 19770609664000000 が得られます。
5
+
5
6
  これの 1 番目は [1,1,1,1,1,1], 最後は [520,520,520,520,520,520] です。
6
7
  i 番目は
7
-   [ (i / (520 ** 5)) % 520 + 1, (i / (520 ** 4)) % 520 + 1, (i / (520 ** 3)) % 520 + 1,
8
+   [ (i / (520 ** 5)) % 520 + 1, (i / (520 ** 4)) % 520 + 1, (i / (520 ** 3)) % 520 + 1,
8
-  (i / (520 ** 2)) % 520 + 1, (i / 520) % 520 + 1, i % 520 + 1]
9
+  (i / (520 ** 2)) % 520 + 1, (i / 520) % 520 + 1, i % 520 + 1]
9
10
  で得られます。
10
11
 
11
12
  [a,b,c,d,e,f] が何番目かは
12
- (a - 1) * 520**5 + (b - 1) * 520**4 + (c - 1) * 520**3 + (d - 1) * 520**2 + (e - 1) * 520 + f
13
+ (a - 1) * 520**5 + (b - 1) * 520**4 + (c - 1) * 520**3 + (d - 1) * 520**2 + (e - 1) * 520 + f
13
14
  で得られます。
14
15
 
16
+
15
- どんな処理をしたいのかを提示すると、一覧全体無しで処理する方法が回答として得られると思います。
17
+ どんな処理をしたいのかを提示すると、一覧全体無しで処理する方法が回答として得られると思います。
18
+
19
+ 注:
20
+ 半角 ** は うまく表示されない(強調表示に解釈されてしまう) ので、 全角**で書き直しました。