回答編集履歴
8
テキスト修正
answer
CHANGED
@@ -21,7 +21,7 @@
|
|
21
21
|
### 追記
|
22
22
|
|
23
23
|
1または0を要素とするリストを引数に取る、次のような関数`increment`を考えます。
|
24
|
-
- たとえば、`[0, 1, 0, 1]` というリスト `a` があったとして、この `a` を引数に与えられると、 `a` の要素の並びを2進数とみたてて、1を加えた結果のビットの並びを表す `[0, 1, 1, 0]` に変更し、変更後の `a` を返します。
|
24
|
+
- たとえば、`[0, 1, 0, 1]` というリスト `a` があったとして、この `a` を引数に与えられると、 `a` の要素の並びを2進数とみたてて、1を加えた結果のビットの並びを表す `[0, 1, 1, 0]` に変更し、変更後の `a` を返します。ただし、 `[1, 1, 1, 1]` が与えられたときは、リストの長さは変更されず、 `[0, 0, 0, 0]` にして返します。
|
25
25
|
|
26
26
|
このような `increment` は一例として再帰を使って以下のように書けます。(再帰を使わなくても書けるでしょう)
|
27
27
|
|
7
テキスト修正
answer
CHANGED
@@ -20,9 +20,11 @@
|
|
20
20
|
|
21
21
|
### 追記
|
22
22
|
|
23
|
-
リストを引数に取る、次のような関数`increment`を考えます。
|
23
|
+
1または0を要素とするリストを引数に取る、次のような関数`increment`を考えます。
|
24
|
-
たとえば、`[0, 1, 0, 1]` というリスト `a` があったとして、この `a` を引数に与えられると、 `a` の要素の並びを2進数とみたてて、1を加えた結果のビットの並びを表す `[0, 1, 1, 0]` に変更し、変更後の `a` を返します。
|
24
|
+
- たとえば、`[0, 1, 0, 1]` というリスト `a` があったとして、この `a` を引数に与えられると、 `a` の要素の並びを2進数とみたてて、1を加えた結果のビットの並びを表す `[0, 1, 1, 0]` に変更し、変更後の `a` を返します。
|
25
25
|
|
26
|
+
このような `increment` は一例として再帰を使って以下のように書けます。(再帰を使わなくても書けるでしょう)
|
27
|
+
|
26
28
|
```python3
|
27
29
|
def increment(lis, length=None):
|
28
30
|
if length is None:
|
6
テキスト修正
answer
CHANGED
@@ -20,7 +20,8 @@
|
|
20
20
|
|
21
21
|
### 追記
|
22
22
|
|
23
|
-
|
23
|
+
リストを引数に取る、次のような関数`increment`を考えます。
|
24
|
+
たとえば、`[0, 1, 0, 1]` というリスト `a` があったとして、この `a` を引数に与えられると、 `a` の要素の並びを2進数とみたてて、1を加えた結果のビットの並びを表す `[0, 1, 1, 0]` に変更し、変更後の `a` を返します。そのような `increment` は一例として再帰を使って以下のように書けます。
|
24
25
|
|
25
26
|
```python3
|
26
27
|
def increment(lis, length=None):
|
5
テキスト修正
answer
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
|
17
17
|
参考になれば幸いです。
|
18
18
|
|
19
|
-
__(※ビット演算を使ったコードは、shiracamusさんのご回答で既に提示されていましたので、
|
19
|
+
__(※ビット演算を使ったコードは、shiracamusさんのご回答で既に提示されていましたので、別の方法を下記に追記しました。)__
|
20
20
|
|
21
21
|
### 追記
|
22
22
|
|
4
テキスト修正
answer
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
|
17
17
|
参考になれば幸いです。
|
18
18
|
|
19
|
-
__(※
|
19
|
+
__(※ビット演算を使ったコードは、shiracamusさんのご回答で既に提示されていましたので、重複しない回答として、別の方法を下記に追記しました。)__
|
20
20
|
|
21
21
|
### 追記
|
22
22
|
|
3
テキスト修正
answer
CHANGED
@@ -16,10 +16,10 @@
|
|
16
16
|
|
17
17
|
参考になれば幸いです。
|
18
18
|
|
19
|
+
__(※上記のビット演算を使ったコードは、shiracamusさんのご回答で既に提示されていましたので、重複しない回答として、別の方法を下記に追記しました。)__
|
20
|
+
|
19
21
|
### 追記
|
20
22
|
|
21
|
-
別の方法を挙げます。
|
22
|
-
|
23
23
|
まず次のような関数`increment`を考えます。たとえば、`[0, 1, 0, 1]` というリスト `a` があったとして、この `a` を引数に与えられると、 `a` の要素の並びを2進数とみたてて、1を加えた結果のビットの並びを表す、 `[0, 1, 1, 0]` に変更し、変更後の `a` を返します。そのような `increment` は一例として、再帰を使って以下のように書けます。
|
24
24
|
|
25
25
|
```python3
|
2
テキスト修正
answer
CHANGED
@@ -20,7 +20,7 @@
|
|
20
20
|
|
21
21
|
別の方法を挙げます。
|
22
22
|
|
23
|
-
まず次のような関数`increment`を考えます。たとえば、`[0, 1, 0, 1]` というリスト `a` があったとして、この `a` を引数に与えられると、
|
23
|
+
まず次のような関数`increment`を考えます。たとえば、`[0, 1, 0, 1]` というリスト `a` があったとして、この `a` を引数に与えられると、 `a` の要素の並びを2進数とみたてて、1を加えた結果のビットの並びを表す、 `[0, 1, 1, 0]` に変更し、変更後の `a` を返します。そのような `increment` は一例として、再帰を使って以下のように書けます。
|
24
24
|
|
25
25
|
```python3
|
26
26
|
def increment(lis, length=None):
|
1
テキスト修正
answer
CHANGED
@@ -14,4 +14,35 @@
|
|
14
14
|
```
|
15
15
|
- **動作確認用 Replt.it:** [https://repl.it/@jun68ykt/Q232173](https://repl.it/@jun68ykt/Q232173)
|
16
16
|
|
17
|
-
参考になれば幸いです。
|
17
|
+
参考になれば幸いです。
|
18
|
+
|
19
|
+
### 追記
|
20
|
+
|
21
|
+
別の方法を挙げます。
|
22
|
+
|
23
|
+
まず次のような関数`increment`を考えます。たとえば、`[0, 1, 0, 1]` というリスト `a` があったとして、この `a` を引数に与えられると、この `a` を2進数の計算で1を加えた結果のビットの並びを表す、 `[0, 1, 1, 0]` に変更し、変更後の `a` を返します。そのような `increment` は一例として、再帰を使って以下のように書けます。
|
24
|
+
|
25
|
+
```python3
|
26
|
+
def increment(lis, length=None):
|
27
|
+
if length is None:
|
28
|
+
length = len(lis)
|
29
|
+
if length == 0:
|
30
|
+
return
|
31
|
+
|
32
|
+
if lis[length-1]:
|
33
|
+
lis[length-1] = 0
|
34
|
+
increment(lis, length-1)
|
35
|
+
else:
|
36
|
+
lis[length-1] = 1
|
37
|
+
|
38
|
+
return lis
|
39
|
+
|
40
|
+
```
|
41
|
+
|
42
|
+
上記の `increment`を使うと、ご質問の `arrays` は、以下で得られます。
|
43
|
+
```python3
|
44
|
+
M = 10
|
45
|
+
a = [1] * M
|
46
|
+
arrays = [increment(a).copy() for _ in range(2 ** M)]
|
47
|
+
```
|
48
|
+
- **動作確認用 Replt.it:** [https://repl.it/@jun68ykt/Q232173-2](https://repl.it/@jun68ykt/Q232173-2)
|