2019年3月31日日曜日

Programming, Python [プログラミング][Python]

開発環境

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 コメント:

コメントを投稿