blog.tmp.tokyo

Peace cannot be kept by force. It can only be achieved by understanding.

伊右衛門・特茶の特徴を読み解く

序。

これまでも何度か書いてきたように思いますが、私の仕事はシステムエンジニア、いわゆるSEというやつです。ですが、なんとなくカッコ良さというか凄さが伝わらないような気がしていてプライベートなところではプログラマと名乗ってます。

実際にプログラムもバリバリ書いてるので嘘ではないと思いますし、仕事を離れた場でもプログラムを書いたり関連する技術を学ぶために書籍を読んだりと研鑽をしてることが多いのでヨシとします。

問。

ふとX(旧Twitter)を見ていたらこんなポストを見つけました。

x.com

このポストのリプライ欄に正面からの画像があるので気になる方はそちらを見ていただくとして、数学好きとしてはやって見なければいけないかな、と思いチャレンジしてみました。

・・・というか定数と一次関数ばかり・・・値の範囲も示されてるからグラフを書けば良いのかな、と。

解。

プログラマらしくここはプログラムを使って解いてみることにしました。数学関係ならPythonの出番かな、と思います。Numpyのライブラリが強力すぎる。

と偉そうなことを言う割には専門はJavaなので細かい文法的なところはうる覚え。調べながら書きました。以下のようなプログラムになりました。同じ処理が続くので関数化すればいいのかもしれませんが、ここでは直感的に見てわかることを重視してあえてベタ書きのままにしておきます(言い訳)。

import matplotlib.pyplot as plt
import numpy as np

plt.xlim(-10, 12)  # x軸の表示範囲
plt.ylim(-10, 10)  # y軸の表示範囲

# 1列目
x1 = np.linspace(-9, -8)
y1 = 7 * np.ones_like(x1)
plt.plot(x1, y1)

x2 = np.linspace(-9, -8)
y2 = 5 * np.ones_like(x2)
plt.plot(x2, y2)

x3 = np.linspace(-9, -8)
y3 = x3 * 2 + 20
plt.plot(x3, y3)

y4 = np.linspace(2, 7)
x4 = -7 * np.ones_like(y4)
plt.plot(x4, y4)

x5 = np.linspace(-7, -3)
y5 = 7 * np.ones_like(x5)
plt.plot(x5, y5)

x6 = np.linspace(-6, -5)
y6 = 6 * np.ones_like(x6)
plt.plot(x6, y6)

y7 = np.linspace(4, 5)
x7 = -6 * np.ones_like(y7)
plt.plot(x7, y7)

x8 = np.linspace(-6, -5)
y8 = 5 * np.ones_like(x8)
plt.plot(x8, y8)

y9 = np.linspace(4, 5)
x9 = -5 * np.ones_like(y9)
plt.plot(x9, y9)

x10 = np.linspace(-6, -5)
y10 = 4 * np.ones_like(x10)
plt.plot(x10, y10)

# 2列目
x11 = np.linspace(-4, -3)
y11 = x11 * (-6) - 16
plt.plot(x11, y11)

x12 = np.linspace(-5, -3)
y12 = x12 + 7
plt.plot(x12, y12)

x13 = np.linspace(-3, -2)
y13 = x13 * (-1) + 6
plt.plot(x13, y13)

y14 = np.linspace(4, 8)
x14 = 2 * np.ones_like(y14)
plt.plot(x14, y14)

x15 = np.linspace(-1, 0)
y15 = x15 * 2 + 7
plt.plot(x15, y15)

x16 = np.linspace(4, 5)
y16 = x16 * (-2) + 15
plt.plot(x16, y16)

x17 = np.linspace(0, 3)
y17 = x17 + 2
plt.plot(x17, y17)

x18 = np.linspace(7, 9)
y18 = 6 * np.ones_like(x18)
plt.plot(x18, y18)

y19 = np.linspace(5, 7)
x19 = 8 * np.ones_like(y19)
plt.plot(x19, y19)

x20 = np.linspace(8, 9)
y20 = x20 * (-2) + 21
plt.plot(x20, y20)

# 3列目
x21 = np.linspace(7, 10)
y21 = x21 - 5
plt.plot(x21, y21)

x22 = np.linspace(7, 10)
y22 = 2 * np.ones_like(x22)
plt.plot(x22, y22)

y23 = np.linspace(-(23/3), -2)
x23 = -8 * np.ones_like(y23)
plt.plot(x23, y23)

x24 = np.linspace(-8, -6)
y24 = -2 * np.ones_like(x24)
plt.plot(x24, y24)

y25 = np.linspace(-7, -2)
x25 = -6 * np.ones_like(y25)
plt.plot(x25, y25)

x26 = np.linspace(-8, -6)
y26 = -4 * np.ones_like(x26)
plt.plot(x26, y26)

x27 = np.linspace(-8, -6)
y27 = -6 * np.ones_like(x27)
plt.plot(x27, y27)

x28 = np.linspace(-9, -6)
y28 = x28 * (1/3) - 5
plt.plot(x28, y28)

x29 = np.linspace(-5, -2)
y29 = -3 * np.ones_like(x29)
plt.plot(x29, y29)

y30 = np.linspace(-8, -3)
x30 = -2 * np.ones_like(y30)
plt.plot(x30, y30)

# 4列目
x31 = np.linspace(-5, -4)
y31 = x31 * 6 + 22
plt.plot(x31, y31)

y32 = np.linspace(-7, -4)
x32 = 0 * np.ones_like(y32)
plt.plot(x32, y32)

x33 = np.linspace(1, 4)
y33 = -4 * np.ones_like(x33)
plt.plot(x33, y33)

y34 = np.linspace(-8, -3)
x34 = 3 * np.ones_like(y34)
plt.plot(x34, y34)

x35 = np.linspace(8, 10)
y35 = -2 * np.ones_like(x35)
plt.plot(x35, y35)

x36 = np.linspace(7, 10)
y36 = x36 * (2/3) - (26/3)
plt.plot(x36, y36)

x37 = np.linspace(7, 11)
y37 = -4 * np.ones_like(x37)
plt.plot(x37, y37)

x38 = np.linspace(9, 11)
y38 = x38 * 2 - 26
plt.plot(x38, y38)

x39 = np.linspace(7, 9)
y39 = -8 * np.ones_like(x39)
plt.plot(x39, y39)

y40 = np.linspace(-8, -6)
x40 = 7 * np.ones_like(y40)
plt.plot(x40, y40)

x41 = np.linspace(7, 10)
y41 = -6 * np.ones_like(x41)
plt.plot(x41, y41)

plt.grid()
plt.show()

大抵のPythonの処理系ならMatplotlibが入ってるのではないかと思うので、上のプログラムをコピって適当なファイル名で保存して実行(雑)すれば動くと思います。

答。

なるほど・・・。

結。

たまにはゲームを離れて真面目?な話題も良いかもしれませんね。プログラムのネタはいくらでも書けるので書きたい思いもあるのですが、検索とかで引っかかると職場で当ブログの存在がバレても恥ずかしいのであまり書かないようにしています・・・。

別なブログを立ち上げるのがいいのかもしれませんが、これまで複数ブログを立ち上げてあまりうまく行ったことがないので二の足を踏んでます。