開発環境
- macOS Mojave - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Visual Studio Code (Text Editor)
- Python 3.7 (プログラミング言語)
Programming Bitcoin: Learn How to Program Bitcoin from Scratch (Jimmy Song(著)、O'Reilly Media)のChapter 2(Elliptic Curves)、Point Addition for When x1≠x2、Exercises 4(36)の解答を求めてみる。
コード
Python 3
#!/usr/bin/env python3
def slope(p1, p2):
x1, y1 = p1
x2, y2 = p2
if x1 == x2:
raise ValueError()
return (y2 - y1) / (x2 - x1)
def add(p1, p2):
x1, y1 = p1
x2, y2 = p2
s = slope(p1, p2)
x3 = s ** 2 - x1 - x2
return (s ** 2 - x1 - x2, s * (x1 - x3) - y1)
p1 = (2, 5)
p2 = (-1, -1)
p3 = add(p1, p2)
x3, y3 = p3
for o in [p3, y3 ** 2 == x3 ** 3 + 5 * x3 + 7]:
print(o)
入出力結果(cmd(コマンドプロンプト)、Terminal、Jupyter(IPython))
C:\Users\...>py -3 sample4.py (3.0, -7.0) True C:\Users\...>
0 コメント:
コメントを投稿