Skip to content

Commit bbe87f1

Browse files
authored
Merge pull request #220 from chvmvd/update-advanced-article
2 parents e4ec6d4 + 2ffaaa4 commit bbe87f1

16 files changed

+1033
-194
lines changed

docs/01python/12practice/index.mdx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,14 @@ $$
105105

106106
<ViewSource path="/practice/gcd.ipynb" />
107107

108+
`a, b = b, a` は、次と同じ意味です。
109+
110+
```python
111+
tmp = a
112+
a = b
113+
b = tmp
114+
```
115+
108116
再帰を使うと次のようにもできます。再帰を使ったプログラムは、後の項で紹介します。
109117

110118
<ViewSource path="/practice/gcd_recursive.ipynb" />
-3.88 KB
Binary file not shown.
3.83 KB
Loading

docs/02advanced/01image/index.mdx

Lines changed: 64 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,14 @@ Python で画像を表現してみましょう。
1111

1212
## 白黒の表現
1313

14-
大学がアルゴリズム入門の授業用に作った `ita` ライブラリを使えば、簡単に画像を表現できます。
14+
東京大学がアルゴリズム入門の授業用に作った `ita` ライブラリを使えば、簡単に画像を表現できます。(`ita` って、Introduction to Algorithms の略なんですかね?)
15+
`ita` ライブラリは、インストールして使う必要があります。ライブラリをインストールするには、先頭で `!pip install ita` と書けば良いのでした。
16+
17+
`ita` ライブラリで画像を扱う場合は、次のようなコードをはじめの方に書いておく必要があります。これに関しては、おまじないだと思ってください。Google Colaboratory 上でうまく表示するために、必要になっています。
18+
19+
```python
20+
%matplotlib inline
21+
```
1522

1623
次のように、0 と 1 が格納された二次元配列を作って、それを `ita` ライブラリの `image_show` 関数に与えれば、白黒の画像を表現できます。0 が黒、1 が白となります。
1724

@@ -21,7 +28,7 @@ Python で画像を表現してみましょう。
2128

2229
`ita` ライブラリを使って次のような画像を作ってみましょう。
2330

24-
![lattice patter](lattice_pattern.drawio.svg)
31+
![市松模様](lattice_pattern.png)
2532

2633
<Answer>
2734
<ViewSource path="/image/lattice_pattern.ipynb" />
@@ -62,7 +69,7 @@ Python で画像を表現してみましょう。
6269

6370
次のような画像を作ってみましょう。
6471

65-
![black to red](black_to_red.drawio.png)
72+
![黒から赤へのグラデーション](black_to_red.png)
6673

6774
<Answer>
6875
<ViewSource path="/image/black_to_red.ipynb" />
@@ -74,29 +81,54 @@ Python で画像を表現してみましょう。
7481

7582
左から右にかけて、黒色から緑色に色が変化するグラデーション画像を作ってみましょう。
7683

77-
![black to green](black_to_green.png)
84+
![黒から赤へのグラデーション](black_to_green.png)
7885

79-
<Answer>
86+
`配列.append(要素)` とすることで、配列の末尾に要素を追加できます。
8087

81-
<ViewSource path="/image/black_to_green.ipynb" />
88+
<ViewSource path="/image/append.ipynb" />
8289

83-
`配列.append(要素)` とすることで、配列の末尾に要素を追加できます。
90+
<Hint>
8491

85-
この問題ならそれぞれの行がすべて同じなので、`row` を使いまわすこともできます
92+
左側が黒で右側に行くにつれてだんだん緑になるように、数値を少しずつ変化させていけば良さそうです
8693

87-
<ViewSource path="/image/black_to_green_another_solution.ipynb" />
94+
二次元配列の作り方としては、まず空の配列を作り、それに `append` を使って値を入れていき一次元配列を作ります。
95+
さらに、これを空の配列に入れていけば、二次元配列になります。
96+
97+
</Hint>
98+
99+
<Answer>
100+
101+
<ViewSource path="/image/black_to_green.ipynb" />
88102

89103
</Answer>
90104

91105
### 練習問題 2
92106

93-
左から右にかけて、白色から青色に色が変化するグラデーション画像を作ってみましょう。
107+
左から右にかけて、白色から青色に色が変化するグラデーション画像を作ってみましょう。これは、少し難しいです。分からなかったら、ヒントを見てください。
94108

95-
![white to blue](white_to_blue.png)
109+
![白から青へのグラデーション](white_to_blue.png)
96110

97-
<Answer>
111+
<Hint>
98112

99-
加重平均をとると、うまくできます。
113+
次のように、加重平均をとると、うまくできます。
114+
115+
![加重平均の説明](weighted_mean.drawio.svg)
116+
117+
$$
118+
\left\{
119+
\begin{align*}
120+
R&=(1-t)R_1+tR_2 \\
121+
G&=(1-t)G_1+tG_2 \\
122+
B&=(1-t)B_1+tB_2
123+
\end{align*}
124+
\right.
125+
$$
126+
127+
右側の色と左の色を定義して、その加重平均をとるという流れになるかと思います。
128+
129+
</Hint>
130+
131+
<Answer>
100132

101133
<ViewSource path="/image/white_to_blue.ipynb" />
102134

@@ -106,11 +138,27 @@ Python で画像を表現してみましょう。
106138

107139
左上が白、右上が赤、左下が緑、右下が青となるようなグラデーション画像を作ってみましょう。
108140

109-
![gradation](gradation.png)
141+
![グラデーション](gradation.png)
110142

111-
<Answer>
143+
<Hint>
144+
145+
次のように、二次元で加重平均をとると、うまくできます。
146+
147+
![加重平均の説明](weighted_mean_2d.drawio.svg)
112148

113-
二次元で加重平均をとると、うまくできます。
149+
$$
150+
\left\{
151+
\begin{align*}
152+
R&=s\{(1-t)R_1+tR_2\}+(1-s)\{(1-t)R_3+tR_4\} \\
153+
G&=s\{(1-t)G_1+tG_2\}+(1-s)\{(1-t)G_3+tG_4\} \\
154+
B&=s\{(1-t)B_1+tB_2\}+(1-s)\{(1-t)B_3+tB_4\}
155+
\end{align*}
156+
\right.
157+
$$
158+
159+
</Hint>
160+
161+
<Answer>
114162

115163
<ViewSource path="/image/gradation.ipynb" />
116164

docs/02advanced/01image/lattice_pattern.drawio.svg

Lines changed: 0 additions & 41 deletions
This file was deleted.
5.3 KB
Loading

0 commit comments

Comments
 (0)