回答編集履歴

4

テキスト追加

2020/03/19 00:37

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -52,7 +52,7 @@
52
52
 
53
53
 
54
54
 
55
- コメント頂いた件とご質問への追記に書かれた趣旨で、上記の関数 `diagonally_ones` を使うサンプルを追記します。まず `a` に6×6のゼロ行列を得ておいて、`a`と `diagonally_ones` で得られる行列との論理和を`a`に再度代入するという処理を `for`ループで3回行っています。
55
+ コメント頂いた件とご質問のコードへの追加された趣旨で、上記の関数 `diagonally_ones` を使うサンプルを追記します。まず `a` に6×6のゼロ行列を得ておいて、`a`と `diagonally_ones` で得られる行列との論理和を`a`に再度代入するという処理を `for`ループで3回行っています。
56
56
 
57
57
 
58
58
 

3

テキスト追加

2020/03/19 00:36

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -52,7 +52,7 @@
52
52
 
53
53
 
54
54
 
55
- コメント頂いた件と、ご質問への追記に書かれた趣旨で、上記の関数 `diagonally_ones` を使うサンプルを追記します。まず `a` に6×6のゼロ行列を得ておいて、これに `diagonally_ones` で得られる行列との論理和を`a`に再度代入するという処理を `for`ループで3回行っています。
55
+ コメント頂いた件と、ご質問への追記に書かれた趣旨で、上記の関数 `diagonally_ones` を使うサンプルを追記します。まず `a` に6×6のゼロ行列を得ておいて、`a`と `diagonally_ones` で得られる行列との論理和を`a`に再度代入するという処理を `for`ループで3回行っています。
56
56
 
57
57
 
58
58
 

2

テキスト追加

2020/03/18 23:33

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -52,7 +52,7 @@
52
52
 
53
53
 
54
54
 
55
- コメント頂いた件と、ご質問への追記に書かれた趣旨で、上記の関数 `diagonally_ones` 使用したサンプルを追記します。まず、 `a` に6×6のゼロ行列を得ておいて、これに `diagonally_ones` で得られる行列との論理和を、`a`に再度、代入するという処理を `for`ループで3回行っています。
55
+ コメント頂いた件と、ご質問への追記に書かれた趣旨で、上記の関数 `diagonally_ones` 使サンプルを追記します。まず、 `a` に6×6のゼロ行列を得ておいて、これに `diagonally_ones` で得られる行列との論理和を、`a`に再度、代入するという処理を `for`ループで3回行っています。
56
56
 
57
57
 
58
58
 

1

テキスト追加

2020/03/18 22:57

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -8,19 +8,23 @@
8
8
 
9
9
 
10
10
 
11
- def diagonally_ones(pos, n):
11
+ def diagonally_ones(p, n):
12
12
 
13
+ return np.fromfunction(
14
+
13
- return np.fromfunction(lambda i, j: (i-j == pos[0]-pos[1]) + (i+j == pos[0]+pos[1]), (n, n)).astype(int)
15
+ lambda i, j: (i - j == p[0] - p[1]) + (i + j == p[0] + p[1]), (n, n)
16
+
17
+ ).astype(int)
14
18
 
15
19
 
16
20
 
17
21
 
18
22
 
19
- a = diagonally_ones((1,3), 6)
23
+ if __name__ == '__main__':
20
24
 
25
+ a = diagonally_ones((1,3), 6)
21
26
 
22
-
23
- print(a)
27
+ print(a)
24
28
 
25
29
  ```
26
30
 
@@ -39,3 +43,69 @@
39
43
 
40
44
 
41
45
  - **動作確認用 Repl.it:** [https://repl.it/@jun68ykt/Q247807](https://repl.it/@jun68ykt/Q247807)
46
+
47
+
48
+
49
+
50
+
51
+ ### 追記
52
+
53
+
54
+
55
+ コメント頂いた件と、ご質問への追記に書かれた趣旨で、上記の関数 `diagonally_ones` の使用したサンプルを追記します。まず、 `a` に6×6のゼロ行列を得ておいて、これに `diagonally_ones` で得られる行列との論理和を、`a`に再度、代入するという処理を `for`ループで3回行っています。
56
+
57
+
58
+
59
+ ```python3
60
+
61
+ if __name__ == '__main__':
62
+
63
+ n = 6
64
+
65
+ a = np.zeros((n,n), dtype=int)
66
+
67
+ print(a)
68
+
69
+
70
+
71
+ for p in [(1,3), (2,2), (4,2)]:
72
+
73
+ a |= diagonally_ones(p, n)
74
+
75
+
76
+
77
+ print(a)
78
+
79
+ ```
80
+
81
+
82
+
83
+ > [[0 0 0 0 0 0]
84
+
85
+ [0 0 0 0 0 0]
86
+
87
+ [0 0 0 0 0 0]
88
+
89
+ [0 0 0 0 0 0]
90
+
91
+ [0 0 0 0 0 0]
92
+
93
+ [0 0 0 0 0 0]]
94
+
95
+ [[1 0 1 0 1 0]
96
+
97
+ [0 1 0 1 0 1]
98
+
99
+ [1 0 1 0 1 0]
100
+
101
+ [0 1 0 1 0 1]
102
+
103
+ [1 0 1 0 1 0]
104
+
105
+ [0 1 0 1 0 1]]
106
+
107
+
108
+
109
+
110
+
111
+ - **動作確認用 Repl.it:** [https://repl.it/@jun68ykt/Q2478072](https://repl.it/@jun68ykt/Q2478072)