ここでは、有限体
(p=5)
楕円曲線
(a=0,b=1,c=1)
の有理点をpythonで調べています。
有理点の数は9です。(無限遠点を含む)
無限遠点はOと出力しています。
加法公式を用いて、有理点{P1, P2, ... P8}を2倍,3倍,...,9倍した点も示しています。
この計算の途中で元の有理点に戻った場合、あとは繰り返しなので、そこで計算を止めています。
P1,P2,P5,P6,P7,P8は9倍したところで無限遠点になるので、位数9の点といいます。
ここで倍々していくと9つ全ての点を通ります。
これを巡回群であるといいます。
P3,P4は3倍したところで無限遠点になるので、位数3の点といいます。
この群は2つの巡回群Z/3ZとZ/9Zの直積と同型であるといいます。
%matplotlib inline import numpy as np import matplotlib.pyplot as plt class Point: def __init__(self, x, y): self.x = x self.y = y def desc(self): if self.x == -1 and self.y == -1: return "O" return "("+str(self.x)+","+str(self.y)+")" def is_equal(self, other): return self.x == other.x and self.y == other.y def is_equal_negative(self, other, prime): return self.x == other.x and - self.y == other.y - prime def iszero(self): return self.x == -1 and self.y == -1 @staticmethod def zero(): return Point(-1, -1) class EC: def __init__(self, a, b, c, p): self.a = a self.b = b self.c = c self.p = p self.calc_order() def calc_order(self): self.points = [] for x in range(self.p): for y in range(self.p): pt = Point(x,y) if self.oncurve(pt): self.points.append(pt) self.points_count = len(self.points) self.order = len(self.points)+1 def oncurve(self, pt): l = ((pt.y**2) % self.p) r = ((pt.x**3) + self.a*(pt.x**2) + self.b*pt.x + self.c) % self.p return l == r def d(self): return -4*(self.a**3)*self.c \ + (self.a**2)*(self.b**2) \ + 18*self.a*self.b*self.c \ - 4*(self.b**3) \ - 27 * (self.c**2) def inverse(self, a): assert self.p >= 2 return a ** (self.p-2) def plus(self, p1, p2): x1 = p1.x y1 = p1.y x2 = p2.x y2 = p2.y if (p1.iszero()): return p2 if (p2.iszero()): return p1 if p1.is_equal_negative(p2, self.p): return Point.zero() elif p1.is_equal(p2): if (y1 == 0): return Point.zero() else: lm = (3 * (x1 **2) + 2 * self.a * x1 + self.b) * self.inverse(2 * y1) x3 = (lm ** 2) - self.a - x1 - x2 y3 = - lm *(x3-x1) - y1 else: lm = (y2-y1) * self.inverse(x2-x1) x3 = (lm ** 2) - self.a - x1 - x2 y3 = -(lm*(x3-x1) + y1) q = Point(x3 , y3) q2 = Point(x3 % self.p, y3 % self.p) if not self.oncurve(q2): print("p1 {0} p2 {1} q {2} q2 {3}".format(p1.desc(), p2.desc(), q.desc(), q2.desc())) assert False return q2 def mul(self, p, n): q = p for i in range(n-1): q = ec.plus(q, p) return q ec = EC(0, 1, 1, 5) print "F" + str(ec.p) print "d:" + str(ec.d()) print "#EC:" + str(ec.order) print "" plotx = [p.x for p in ec.points] ploty = [p.y for p in ec.points] n = ["P"+str(i+1) for (i, p) in zip(range(len(ec.points)), ec.points)] for i in range(ec.points_count): baseP = ec.points[i] print "P"+str(i+1)+":" + baseP.desc() for j in range(2, ec.order+1): p = ec.mul(baseP, j) print str(j)+"*P"+str(i+1)+":"+p.desc() if (p == baseP): print "" break print "" fig, ax = plt.subplots() ax.scatter(plotx, ploty) for i, txt in enumerate(n): ax.annotate(txt, (plotx[i],ploty[i]))
F5 d:-31 #EC:9 P1:(0,1) 2*P1:(4,2) 3*P1:(2,1) 4*P1:(3,4) 5*P1:(3,1) 6*P1:(2,4) 7*P1:(4,3) 8*P1:(0,4) 9*P1:O P2:(0,4) 2*P2:(4,3) 3*P2:(2,4) 4*P2:(3,1) 5*P2:(3,4) 6*P2:(2,1) 7*P2:(4,2) 8*P2:(0,1) 9*P2:O P3:(2,1) 2*P3:(2,4) 3*P3:O 4*P3:(2,1) P4:(2,4) 2*P4:(2,1) 3*P4:O 4*P4:(2,4) P5:(3,1) 2*P5:(0,1) 3*P5:(2,4) 4*P5:(4,2) 5*P5:(4,3) 6*P5:(2,1) 7*P5:(0,4) 8*P5:(3,4) 9*P5:O P6:(3,4) 2*P6:(0,4) 3*P6:(2,1) 4*P6:(4,3) 5*P6:(4,2) 6*P6:(2,4) 7*P6:(0,1) 8*P6:(3,1) 9*P6:O P7:(4,2) 2*P7:(3,4) 3*P7:(2,4) 4*P7:(0,4) 5*P7:(0,1) 6*P7:(2,1) 7*P7:(3,1) 8*P7:(4,3) 9*P7:O P8:(4,3) 2*P8:(3,1) 3*P8:(2,1) 4*P8:(0,1) 5*P8:(0,4) 6*P8:(2,4) 7*P8:(3,4) 8*P8:(4,2) 9*P8:O
他の楕円曲線でも試してみましょう。
この場合、全ての点の位数が17となります。こういうのはわりと珍しいです。 この群はZ/17Zと同型であるといいます。
F13 d:-464 #EC:17 P1:(0,2) 2*P1:(10,6) 3*P1:(12,1) 4*P1:(2,9) 5*P1:(7,6) 6*P1:(5,10) 7*P1:(9,7) 8*P1:(8,8) 9*P1:(8,5) 10*P1:(9,6) 11*P1:(5,3) 12*P1:(7,7) 13*P1:(2,4) 14*P1:(12,12) 15*P1:(10,7) 16*P1:(0,11) 17*P1:O P2:(0,11) 2*P2:(10,7) 3*P2:(12,12) 4*P2:(2,4) 5*P2:(7,7) 6*P2:(5,3) 7*P2:(9,6) 8*P2:(8,5) 9*P2:(8,8) 10*P2:(9,7) 11*P2:(5,10) 12*P2:(7,6) 13*P2:(2,9) 14*P2:(12,1) 15*P2:(10,6) 16*P2:(0,2) 17*P2:O P3:(2,4) 2*P3:(8,5) 3*P3:(7,6) 4*P3:(0,2) 5*P3:(12,12) 6*P3:(9,6) 7*P3:(5,10) 8*P3:(10,6) 9*P3:(10,7) 10*P3:(5,3) 11*P3:(9,7) 12*P3:(12,1) 13*P3:(0,11) 14*P3:(7,7) 15*P3:(8,8) 16*P3:(2,9) 17*P3:O P4:(2,9) 2*P4:(8,8) 3*P4:(7,7) 4*P4:(0,11) 5*P4:(12,1) 6*P4:(9,7) 7*P4:(5,3) 8*P4:(10,7) 9*P4:(10,6) 10*P4:(5,10) 11*P4:(9,6) 12*P4:(12,12) 13*P4:(0,2) 14*P4:(7,6) 15*P4:(8,5) 16*P4:(2,4) 17*P4:O P5:(5,3) 2*P5:(7,6) 3*P5:(0,11) 4*P5:(9,6) 5*P5:(2,9) 6*P5:(10,7) 7*P5:(8,5) 8*P5:(12,1) 9*P5:(12,12) 10*P5:(8,8) 11*P5:(10,6) 12*P5:(2,4) 13*P5:(9,7) 14*P5:(0,2) 15*P5:(7,7) 16*P5:(5,10) 17*P5:O P6:(5,10) 2*P6:(7,7) 3*P6:(0,2) 4*P6:(9,7) 5*P6:(2,4) 6*P6:(10,6) 7*P6:(8,8) 8*P6:(12,12) 9*P6:(12,1) 10*P6:(8,5) 11*P6:(10,7) 12*P6:(2,9) 13*P6:(9,6) 14*P6:(0,11) 15*P6:(7,6) 16*P6:(5,3) 17*P6:O P7:(7,6) 2*P7:(9,6) 3*P7:(10,7) 4*P7:(12,1) 5*P7:(8,8) 6*P7:(2,4) 7*P7:(0,2) 8*P7:(5,10) 9*P7:(5,3) 10*P7:(0,11) 11*P7:(2,9) 12*P7:(8,5) 13*P7:(12,12) 14*P7:(10,6) 15*P7:(9,7) 16*P7:(7,7) 17*P7:O P8:(7,7) 2*P8:(9,7) 3*P8:(10,6) 4*P8:(12,12) 5*P8:(8,5) 6*P8:(2,9) 7*P8:(0,11) 8*P8:(5,3) 9*P8:(5,10) 10*P8:(0,2) 11*P8:(2,4) 12*P8:(8,8) 13*P8:(12,1) 14*P8:(10,7) 15*P8:(9,6) 16*P8:(7,6) 17*P8:O P9:(8,5) 2*P9:(0,2) 3*P9:(9,6) 4*P9:(10,6) 5*P9:(5,3) 6*P9:(12,1) 7*P9:(7,7) 8*P9:(2,9) 9*P9:(2,4) 10*P9:(7,6) 11*P9:(12,12) 12*P9:(5,10) 13*P9:(10,7) 14*P9:(9,7) 15*P9:(0,11) 16*P9:(8,8) 17*P9:O P10:(8,8) 2*P10:(0,11) 3*P10:(9,7) 4*P10:(10,7) 5*P10:(5,10) 6*P10:(12,12) 7*P10:(7,6) 8*P10:(2,4) 9*P10:(2,9) 10*P10:(7,7) 11*P10:(12,1) 12*P10:(5,3) 13*P10:(10,6) 14*P10:(9,6) 15*P10:(0,2) 16*P10:(8,5) 17*P10:O P11:(9,6) 2*P11:(12,1) 3*P11:(2,4) 4*P11:(5,10) 5*P11:(0,11) 6*P11:(8,5) 7*P11:(10,6) 8*P11:(7,7) 9*P11:(7,6) 10*P11:(10,7) 11*P11:(8,8) 12*P11:(0,2) 13*P11:(5,3) 14*P11:(2,9) 15*P11:(12,12) 16*P11:(9,7) 17*P11:O P12:(9,7) 2*P12:(12,12) 3*P12:(2,9) 4*P12:(5,3) 5*P12:(0,2) 6*P12:(8,8) 7*P12:(10,7) 8*P12:(7,6) 9*P12:(7,7) 10*P12:(10,6) 11*P12:(8,5) 12*P12:(0,11) 13*P12:(5,10) 14*P12:(2,4) 15*P12:(12,1) 16*P12:(9,6) 17*P12:O P13:(10,6) 2*P13:(2,9) 3*P13:(5,10) 4*P13:(8,8) 5*P13:(9,6) 6*P13:(7,7) 7*P13:(12,12) 8*P13:(0,11) 9*P13:(0,2) 10*P13:(12,1) 11*P13:(7,6) 12*P13:(9,7) 13*P13:(8,5) 14*P13:(5,3) 15*P13:(2,4) 16*P13:(10,7) 17*P13:O P14:(10,7) 2*P14:(2,4) 3*P14:(5,3) 4*P14:(8,5) 5*P14:(9,7) 6*P14:(7,6) 7*P14:(12,1) 8*P14:(0,2) 9*P14:(0,11) 10*P14:(12,12) 11*P14:(7,7) 12*P14:(9,6) 13*P14:(8,8) 14*P14:(5,10) 15*P14:(2,9) 16*P14:(10,6) 17*P14:O P15:(12,1) 2*P15:(5,10) 3*P15:(8,5) 4*P15:(7,7) 5*P15:(10,7) 6*P15:(0,2) 7*P15:(2,9) 8*P15:(9,7) 9*P15:(9,6) 10*P15:(2,4) 11*P15:(0,11) 12*P15:(10,6) 13*P15:(7,6) 14*P15:(8,8) 15*P15:(5,3) 16*P15:(12,12) 17*P15:O P16:(12,12) 2*P16:(5,3) 3*P16:(8,8) 4*P16:(7,6) 5*P16:(10,6) 6*P16:(0,11) 7*P16:(2,4) 8*P16:(9,6) 9*P16:(9,7) 10*P16:(2,9) 11*P16:(0,2) 12*P16:(10,7) 13*P16:(7,7) 14*P16:(8,5) 15*P16:(5,10) 16*P16:(12,1) 17*P16:O
もう一つ試します。無駄に長くなってきたので、点の位数(Pをn倍した時に無限遠点Oになるもっとも小さな値)だけ表示します。
有理点の数(=群の位数)は72, 有理点の位数は、2, 3, 4, 9, 12, 18, 36で有理点の数の因数が全て出てきているようです。
F71 d:4 #EC:72 P1:(0,0) order:2 P2:(1,0) order:2 P3:(2,19) order:9 P4:(2,52) order:9 P5:(3,33) order:18 P6:(3,38) order:18 P7:(4,29) order:9 P8:(4,42) order:9 P9:(5,7) order:18 P10:(5,64) order:18 P11:(9,9) order:6 P12:(9,62) order:6 P13:(12,15) order:36 P14:(12,56) order:36 P15:(13,14) order:4 P16:(13,57) order:4 P17:(14,23) order:18 P18:(14,48) order:18 P19:(19,33) order:3 P20:(19,38) order:3 P21:(21,9) order:36 P22:(21,62) order:36 P23:(23,28) order:18 P24:(23,43) order:18 P25:(27,29) order:36 P26:(27,42) order:36 P27:(32,17) order:12 P28:(32,54) order:12 P29:(33,7) order:36 P30:(33,64) order:36 P31:(35,13) order:18 P32:(35,58) order:18 P33:(37,8) order:9 P34:(37,63) order:9 P35:(40,29) order:12 P36:(40,42) order:12 P37:(41,9) order:36 P38:(41,62) order:36 P39:(42,8) order:18 P40:(42,63) order:18 P41:(43,21) order:36 P42:(43,50) order:36 P43:(45,22) order:36 P44:(45,49) order:36 P45:(46,34) order:36 P46:(46,37) order:36 P47:(47,20) order:18 P48:(47,51) order:18 P49:(49,33) order:18 P50:(49,38) order:18 P51:(51,16) order:12 P52:(51,55) order:12 P53:(53,24) order:18 P54:(53,47) order:18 P55:(54,28) order:36 P56:(54,43) order:36 P57:(55,31) order:12 P58:(55,40) order:12 P59:(56,30) order:6 P60:(56,41) order:6 P61:(60,10) order:4 P62:(60,61) order:4 P63:(61,2) order:36 P64:(61,69) order:36 P65:(63,8) order:6 P66:(63,63) order:6 P67:(64,27) order:36 P68:(64,44) order:36 P69:(65,28) order:36 P70:(65,43) order:36 P71:(70,0) order:2
もう一つ試します。
F13 #EC:21 P1:(0,2) 2*P1:(0,11) 3*P1:O order:3 4*P1:(0,2) P2:(0,11) 2*P2:(0,2) 3*P2:O order:3 4*P2:(0,11) P3:(2,5) 2*P3:(12,9) 3*P3:(8,3) 4*P3:(6,5) 5*P3:(5,8) 6*P3:(7,3) 7*P3:(0,2) 8*P3:(10,9) 9*P3:(11,10) 10*P3:(4,4) 11*P3:(4,9) 12*P3:(11,3) 13*P3:(10,4) 14*P3:(0,11) 15*P3:(7,10) 16*P3:(5,5) 17*P3:(6,8) 18*P3:(8,10) 19*P3:(12,4) 20*P3:(2,8) 21*P3:O order:21 P4:(2,8) 2*P4:(12,4) 3*P4:(8,10) 4*P4:(6,8) 5*P4:(5,5) 6*P4:(7,10) 7*P4:(0,11) 8*P4:(10,4) 9*P4:(11,3) 10*P4:(4,9) 11*P4:(4,4) 12*P4:(11,10) 13*P4:(10,9) 14*P4:(0,2) 15*P4:(7,3) 16*P4:(5,8) 17*P4:(6,5) 18*P4:(8,3) 19*P4:(12,9) 20*P4:(2,5) 21*P4:O order:21 P5:(4,4) 2*P5:(2,8) 3*P5:(11,10) 4*P5:(12,4) 5*P5:(10,9) 6*P5:(8,10) 7*P5:(0,2) 8*P5:(6,8) 9*P5:(7,3) 10*P5:(5,5) 11*P5:(5,8) 12*P5:(7,10) 13*P5:(6,5) 14*P5:(0,11) 15*P5:(8,3) 16*P5:(10,4) 17*P5:(12,9) 18*P5:(11,3) 19*P5:(2,5) 20*P5:(4,9) 21*P5:O order:21 P6:(4,9) 2*P6:(2,5) 3*P6:(11,3) 4*P6:(12,9) 5*P6:(10,4) 6*P6:(8,3) 7*P6:(0,11) 8*P6:(6,5) 9*P6:(7,10) 10*P6:(5,8) 11*P6:(5,5) 12*P6:(7,3) 13*P6:(6,8) 14*P6:(0,2) 15*P6:(8,10) 16*P6:(10,9) 17*P6:(12,4) 18*P6:(11,10) 19*P6:(2,8) 20*P6:(4,4) 21*P6:O order:21 P7:(5,5) 2*P7:(4,9) 3*P7:(7,3) 4*P7:(2,5) 5*P7:(6,8) 6*P7:(11,3) 7*P7:(0,2) 8*P7:(12,9) 9*P7:(8,10) 10*P7:(10,4) 11*P7:(10,9) 12*P7:(8,3) 13*P7:(12,4) 14*P7:(0,11) 15*P7:(11,10) 16*P7:(6,5) 17*P7:(2,8) 18*P7:(7,10) 19*P7:(4,4) 20*P7:(5,8) 21*P7:O order:21 P8:(5,8) 2*P8:(4,4) 3*P8:(7,10) 4*P8:(2,8) 5*P8:(6,5) 6*P8:(11,10) 7*P8:(0,11) 8*P8:(12,4) 9*P8:(8,3) 10*P8:(10,9) 11*P8:(10,4) 12*P8:(8,10) 13*P8:(12,9) 14*P8:(0,2) 15*P8:(11,3) 16*P8:(6,8) 17*P8:(2,5) 18*P8:(7,3) 19*P8:(4,9) 20*P8:(5,5) 21*P8:O order:21 P9:(6,5) 2*P9:(10,9) 3*P9:(11,3) 4*P9:(5,5) 5*P9:(2,8) 6*P9:(8,3) 7*P9:(0,2) 8*P9:(4,9) 9*P9:(7,10) 10*P9:(12,4) 11*P9:(12,9) 12*P9:(7,3) 13*P9:(4,4) 14*P9:(0,11) 15*P9:(8,10) 16*P9:(2,5) 17*P9:(5,8) 18*P9:(11,10) 19*P9:(10,4) 20*P9:(6,8) 21*P9:O order:21 P10:(6,8) 2*P10:(10,4) 3*P10:(11,10) 4*P10:(5,8) 5*P10:(2,5) 6*P10:(8,10) 7*P10:(0,11) 8*P10:(4,4) 9*P10:(7,3) 10*P10:(12,9) 11*P10:(12,4) 12*P10:(7,10) 13*P10:(4,9) 14*P10:(0,2) 15*P10:(8,3) 16*P10:(2,8) 17*P10:(5,5) 18*P10:(11,3) 19*P10:(10,9) 20*P10:(6,5) 21*P10:O order:21 P11:(7,3) 2*P11:(11,3) 3*P11:(8,10) 4*P11:(8,3) 5*P11:(11,10) 6*P11:(7,10) 7*P11:O order:7 8*P11:(7,3) P12:(7,10) 2*P12:(11,10) 3*P12:(8,3) 4*P12:(8,10) 5*P12:(11,3) 6*P12:(7,3) 7*P12:O order:7 8*P12:(7,10) P13:(8,3) 2*P13:(7,3) 3*P13:(11,10) 4*P13:(11,3) 5*P13:(7,10) 6*P13:(8,10) 7*P13:O order:7 8*P13:(8,3) P14:(8,10) 2*P14:(7,10) 3*P14:(11,3) 4*P14:(11,10) 5*P14:(7,3) 6*P14:(8,3) 7*P14:O order:7 8*P14:(8,10) P15:(10,4) 2*P15:(5,8) 3*P15:(8,10) 4*P15:(4,4) 5*P15:(12,9) 6*P15:(7,10) 7*P15:(0,2) 8*P15:(2,8) 9*P15:(11,3) 10*P15:(6,5) 11*P15:(6,8) 12*P15:(11,10) 13*P15:(2,5) 14*P15:(0,11) 15*P15:(7,3) 16*P15:(12,4) 17*P15:(4,9) 18*P15:(8,3) 19*P15:(5,5) 20*P15:(10,9) 21*P15:O order:21 P16:(10,9) 2*P16:(5,5) 3*P16:(8,3) 4*P16:(4,9) 5*P16:(12,4) 6*P16:(7,3) 7*P16:(0,11) 8*P16:(2,5) 9*P16:(11,10) 10*P16:(6,8) 11*P16:(6,5) 12*P16:(11,3) 13*P16:(2,8) 14*P16:(0,2) 15*P16:(7,10) 16*P16:(12,9) 17*P16:(4,4) 18*P16:(8,10) 19*P16:(5,8) 20*P16:(10,4) 21*P16:O order:21 P17:(11,3) 2*P17:(8,3) 3*P17:(7,10) 4*P17:(7,3) 5*P17:(8,10) 6*P17:(11,10) 7*P17:O order:7 8*P17:(11,3) P18:(11,10) 2*P18:(8,10) 3*P18:(7,3) 4*P18:(7,10) 5*P18:(8,3) 6*P18:(11,3) 7*P18:O order:7 8*P18:(11,10) P19:(12,4) 2*P19:(6,8) 3*P19:(7,10) 4*P19:(10,4) 5*P19:(4,9) 6*P19:(11,10) 7*P19:(0,2) 8*P19:(5,8) 9*P19:(8,3) 10*P19:(2,5) 11*P19:(2,8) 12*P19:(8,10) 13*P19:(5,5) 14*P19:(0,11) 15*P19:(11,3) 16*P19:(4,4) 17*P19:(10,9) 18*P19:(7,3) 19*P19:(6,5) 20*P19:(12,9) 21*P19:O order:21 P20:(12,9) 2*P20:(6,5) 3*P20:(7,3) 4*P20:(10,9) 5*P20:(4,4) 6*P20:(11,3) 7*P20:(0,11) 8*P20:(5,5) 9*P20:(8,10) 10*P20:(2,8) 11*P20:(2,5) 12*P20:(8,3) 13*P20:(5,8) 14*P20:(0,2) 15*P20:(11,10) 16*P20:(4,9) 17*P20:(10,4) 18*P20:(7,10) 19*P20:(6,8) 20*P20:(12,4) 21*P20:O order:21
しつこいですが、もう一つ試します。
F17 #EC:18 P1:(1,5) 2*P1:(2,10) 3*P1:(5,9) 4*P1:(12,1) 5*P1:(12,16) 6*P1:(5,8) 7*P1:(2,7) 8*P1:(1,12) 9*P1:O order:9 P2:(1,12) 2*P2:(2,7) 3*P2:(5,8) 4*P2:(12,16) 5*P2:(12,1) 6*P2:(5,9) 7*P2:(2,10) 8*P2:(1,5) 9*P2:O order:9 P3:(2,7) 2*P3:(12,16) 3*P3:(5,9) 4*P3:(1,5) 5*P3:(1,12) 6*P3:(5,8) 7*P3:(12,1) 8*P3:(2,10) 9*P3:O order:9 P4:(2,10) 2*P4:(12,1) 3*P4:(5,8) 4*P4:(1,12) 5*P4:(1,5) 6*P4:(5,9) 7*P4:(12,16) 8*P4:(2,7) 9*P4:O order:9 P5:(3,0) 2*P5:O order:2 P6:(5,8) 2*P6:(5,9) 3*P6:O order:3 P7:(5,9) 2*P7:(5,8) 3*P7:O order:3 P8:(6,6) 2*P8:(1,5) 3*P8:(8,14) 4*P8:(2,10) 5*P8:(10,15) 6*P8:(5,9) 7*P8:(15,4) 8*P8:(12,1) 9*P8:(3,0) 10*P8:(12,16) 11*P8:(15,13) 12*P8:(5,8) 13*P8:(10,2) 14*P8:(2,7) 15*P8:(8,3) 16*P8:(1,12) 17*P8:(6,11) 18*P8:O order:18 P9:(6,11) 2*P9:(1,12) 3*P9:(8,3) 4*P9:(2,7) 5*P9:(10,2) 6*P9:(5,8) 7*P9:(15,13) 8*P9:(12,16) 9*P9:(3,0) 10*P9:(12,1) 11*P9:(15,4) 12*P9:(5,9) 13*P9:(10,15) 14*P9:(2,10) 15*P9:(8,14) 16*P9:(1,5) 17*P9:(6,6) 18*P9:O order:18 P10:(8,3) 2*P10:(5,8) 3*P10:(3,0) 4*P10:(5,9) 5*P10:(8,14) 6*P10:O order:6 P11:(8,14) 2*P11:(5,9) 3*P11:(3,0) 4*P11:(5,8) 5*P11:(8,3) 6*P11:O order:6 P12:(10,2) 2*P12:(12,1) 3*P12:(8,14) 4*P12:(1,12) 5*P12:(15,13) 6*P12:(5,9) 7*P12:(6,6) 8*P12:(2,7) 9*P12:(3,0) 10*P12:(2,10) 11*P12:(6,11) 12*P12:(5,8) 13*P12:(15,4) 14*P12:(1,5) 15*P12:(8,3) 16*P12:(12,16) 17*P12:(10,15) 18*P12:O order:18 P13:(10,15) 2*P13:(12,16) 3*P13:(8,3) 4*P13:(1,5) 5*P13:(15,4) 6*P13:(5,8) 7*P13:(6,11) 8*P13:(2,10) 9*P13:(3,0) 10*P13:(2,7) 11*P13:(6,6) 12*P13:(5,9) 13*P13:(15,13) 14*P13:(1,12) 15*P13:(8,14) 16*P13:(12,1) 17*P13:(10,2) 18*P13:O order:18 P14:(12,1) 2*P14:(1,12) 3*P14:(5,9) 4*P14:(2,7) 5*P14:(2,10) 6*P14:(5,8) 7*P14:(1,5) 8*P14:(12,16) 9*P14:O order:9 P15:(12,16) 2*P15:(1,5) 3*P15:(5,8) 4*P15:(2,10) 5*P15:(2,7) 6*P15:(5,9) 7*P15:(1,12) 8*P15:(12,1) 9*P15:O order:9 P16:(15,4) 2*P16:(2,7) 3*P16:(8,14) 4*P16:(12,16) 5*P16:(6,11) 6*P16:(5,9) 7*P16:(10,2) 8*P16:(1,5) 9*P16:(3,0) 10*P16:(1,12) 11*P16:(10,15) 12*P16:(5,8) 13*P16:(6,6) 14*P16:(12,1) 15*P16:(8,3) 16*P16:(2,10) 17*P16:(15,13) 18*P16:O order:18 P17:(15,13) 2*P17:(2,10) 3*P17:(8,3) 4*P17:(12,1) 5*P17:(6,6) 6*P17:(5,8) 7*P17:(10,15) 8*P17:(1,12) 9*P17:(3,0) 10*P17:(1,5) 11*P17:(10,2) 12*P17:(5,9) 13*P17:(6,11) 14*P17:(12,16) 15*P17:(8,14) 16*P17:(2,7) 17*P17:(15,4) 18*P17:O order:18
もう一つ
F19 #EC:27 P1:(0,1) 2*P1:(1,17) 3*P1:(8,4) 4*P1:(15,10) 5*P1:(15,9) 6*P1:(8,15) 7*P1:(1,2) 8*P1:(0,18) 9*P1:O order:9 10*P1:(0,1) P2:(0,18) 2*P2:(1,2) 3*P2:(8,15) 4*P2:(15,9) 5*P2:(15,10) 6*P2:(8,4) 7*P2:(1,17) 8*P2:(0,1) 9*P2:O order:9 10*P2:(0,18) P3:(1,2) 2*P3:(15,9) 3*P3:(8,4) 4*P3:(0,1) 5*P3:(0,18) 6*P3:(8,15) 7*P3:(15,10) 8*P3:(1,17) 9*P3:O order:9 10*P3:(1,2) P4:(1,17) 2*P4:(15,10) 3*P4:(8,15) 4*P4:(0,18) 5*P4:(0,1) 6*P4:(8,4) 7*P4:(15,9) 8*P4:(1,2) 9*P4:O order:9 10*P4:(1,17) P5:(4,4) 2*P5:(18,13) 3*P5:(1,2) 4*P5:(6,1) 5*P5:(16,14) 6*P5:(15,9) 7*P5:(9,11) 8*P5:(11,9) 9*P5:(8,4) 10*P5:(7,15) 11*P5:(13,1) 12*P5:(0,1) 13*P5:(12,9) 14*P5:(12,10) 15*P5:(0,18) 16*P5:(13,18) 17*P5:(7,4) 18*P5:(8,15) 19*P5:(11,10) 20*P5:(9,8) 21*P5:(15,10) 22*P5:(16,5) 23*P5:(6,18) 24*P5:(1,17) 25*P5:(18,6) 26*P5:(4,15) 27*P5:O order:27 P6:(4,15) 2*P6:(18,6) 3*P6:(1,17) 4*P6:(6,18) 5*P6:(16,5) 6*P6:(15,10) 7*P6:(9,8) 8*P6:(11,10) 9*P6:(8,15) 10*P6:(7,4) 11*P6:(13,18) 12*P6:(0,18) 13*P6:(12,10) 14*P6:(12,9) 15*P6:(0,1) 16*P6:(13,1) 17*P6:(7,15) 18*P6:(8,4) 19*P6:(11,9) 20*P6:(9,11) 21*P6:(15,9) 22*P6:(16,14) 23*P6:(6,1) 24*P6:(1,2) 25*P6:(18,13) 26*P6:(4,4) 27*P6:O order:27 P7:(6,1) 2*P7:(11,9) 3*P7:(0,1) 4*P7:(13,18) 5*P7:(9,8) 6*P7:(1,17) 7*P7:(4,4) 8*P7:(16,14) 9*P7:(8,4) 10*P7:(12,9) 11*P7:(7,4) 12*P7:(15,10) 13*P7:(18,6) 14*P7:(18,13) 15*P7:(15,9) 16*P7:(7,15) 17*P7:(12,10) 18*P7:(8,15) 19*P7:(16,5) 20*P7:(4,15) 21*P7:(1,2) 22*P7:(9,11) 23*P7:(13,1) 24*P7:(0,18) 25*P7:(11,10) 26*P7:(6,18) 27*P7:O order:27 P8:(6,18) 2*P8:(11,10) 3*P8:(0,18) 4*P8:(13,1) 5*P8:(9,11) 6*P8:(1,2) 7*P8:(4,15) 8*P8:(16,5) 9*P8:(8,15) 10*P8:(12,10) 11*P8:(7,15) 12*P8:(15,9) 13*P8:(18,13) 14*P8:(18,6) 15*P8:(15,10) 16*P8:(7,4) 17*P8:(12,9) 18*P8:(8,4) 19*P8:(16,14) 20*P8:(4,4) 21*P8:(1,17) 22*P8:(9,8) 23*P8:(13,18) 24*P8:(0,1) 25*P8:(11,9) 26*P8:(6,1) 27*P8:O order:27 P9:(7,4) 2*P9:(9,11) 3*P9:(1,17) 4*P9:(12,10) 5*P9:(6,1) 6*P9:(15,10) 7*P9:(13,1) 8*P9:(4,4) 9*P9:(8,15) 10*P9:(11,9) 11*P9:(18,6) 12*P9:(0,18) 13*P9:(16,14) 14*P9:(16,5) 15*P9:(0,1) 16*P9:(18,13) 17*P9:(11,10) 18*P9:(8,4) 19*P9:(4,15) 20*P9:(13,18) 21*P9:(15,9) 22*P9:(6,18) 23*P9:(12,9) 24*P9:(1,2) 25*P9:(9,8) 26*P9:(7,15) 27*P9:O order:27 P10:(7,15) 2*P10:(9,8) 3*P10:(1,2) 4*P10:(12,9) 5*P10:(6,18) 6*P10:(15,9) 7*P10:(13,18) 8*P10:(4,15) 9*P10:(8,4) 10*P10:(11,10) 11*P10:(18,13) 12*P10:(0,1) 13*P10:(16,5) 14*P10:(16,14) 15*P10:(0,18) 16*P10:(18,6) 17*P10:(11,9) 18*P10:(8,15) 19*P10:(4,4) 20*P10:(13,1) 21*P10:(15,10) 22*P10:(6,1) 23*P10:(12,10) 24*P10:(1,17) 25*P10:(9,11) 26*P10:(7,4) 27*P10:O order:27 P11:(8,4) 2*P11:(8,15) 3*P11:O order:3 4*P11:(8,4) P12:(8,15) 2*P12:(8,4) 3*P12:O order:3 4*P12:(8,15) P13:(9,8) 2*P13:(12,9) 3*P13:(15,9) 4*P13:(4,15) 5*P13:(11,10) 6*P13:(0,1) 7*P13:(16,14) 8*P13:(18,6) 9*P13:(8,15) 10*P13:(13,1) 11*P13:(6,1) 12*P13:(1,17) 13*P13:(7,4) 14*P13:(7,15) 15*P13:(1,2) 16*P13:(6,18) 17*P13:(13,18) 18*P13:(8,4) 19*P13:(18,13) 20*P13:(16,5) 21*P13:(0,18) 22*P13:(11,9) 23*P13:(4,4) 24*P13:(15,10) 25*P13:(12,10) 26*P13:(9,11) 27*P13:O order:27 P14:(9,11) 2*P14:(12,10) 3*P14:(15,10) 4*P14:(4,4) 5*P14:(11,9) 6*P14:(0,18) 7*P14:(16,5) 8*P14:(18,13) 9*P14:(8,4) 10*P14:(13,18) 11*P14:(6,18) 12*P14:(1,2) 13*P14:(7,15) 14*P14:(7,4) 15*P14:(1,17) 16*P14:(6,1) 17*P14:(13,1) 18*P14:(8,15) 19*P14:(18,6) 20*P14:(16,14) 21*P14:(0,1) 22*P14:(11,10) 23*P14:(4,15) 24*P14:(15,9) 25*P14:(12,9) 26*P14:(9,8) 27*P14:O order:27 P15:(11,9) 2*P15:(13,18) 3*P15:(1,17) 4*P15:(16,14) 5*P15:(12,9) 6*P15:(15,10) 7*P15:(18,13) 8*P15:(7,15) 9*P15:(8,15) 10*P15:(4,15) 11*P15:(9,11) 12*P15:(0,18) 13*P15:(6,18) 14*P15:(6,1) 15*P15:(0,1) 16*P15:(9,8) 17*P15:(4,4) 18*P15:(8,4) 19*P15:(7,4) 20*P15:(18,6) 21*P15:(15,9) 22*P15:(12,10) 23*P15:(16,5) 24*P15:(1,2) 25*P15:(13,1) 26*P15:(11,10) 27*P15:O order:27 P16:(11,10) 2*P16:(13,1) 3*P16:(1,2) 4*P16:(16,5) 5*P16:(12,10) 6*P16:(15,9) 7*P16:(18,6) 8*P16:(7,4) 9*P16:(8,4) 10*P16:(4,4) 11*P16:(9,8) 12*P16:(0,1) 13*P16:(6,1) 14*P16:(6,18) 15*P16:(0,18) 16*P16:(9,11) 17*P16:(4,15) 18*P16:(8,15) 19*P16:(7,15) 20*P16:(18,13) 21*P16:(15,10) 22*P16:(12,9) 23*P16:(16,14) 24*P16:(1,17) 25*P16:(13,18) 26*P16:(11,9) 27*P16:O order:27 P17:(12,9) 2*P17:(4,15) 3*P17:(0,1) 4*P17:(18,6) 5*P17:(13,1) 6*P17:(1,17) 7*P17:(7,15) 8*P17:(6,18) 9*P17:(8,4) 10*P17:(16,5) 11*P17:(11,9) 12*P17:(15,10) 13*P17:(9,11) 14*P17:(9,8) 15*P17:(15,9) 16*P17:(11,10) 17*P17:(16,14) 18*P17:(8,15) 19*P17:(6,1) 20*P17:(7,4) 21*P17:(1,2) 22*P17:(13,18) 23*P17:(18,13) 24*P17:(0,18) 25*P17:(4,4) 26*P17:(12,10) 27*P17:O order:27 P18:(12,10) 2*P18:(4,4) 3*P18:(0,18) 4*P18:(18,13) 5*P18:(13,18) 6*P18:(1,2) 7*P18:(7,4) 8*P18:(6,1) 9*P18:(8,15) 10*P18:(16,14) 11*P18:(11,10) 12*P18:(15,9) 13*P18:(9,8) 14*P18:(9,11) 15*P18:(15,10) 16*P18:(11,9) 17*P18:(16,5) 18*P18:(8,4) 19*P18:(6,18) 20*P18:(7,15) 21*P18:(1,17) 22*P18:(13,1) 23*P18:(18,6) 24*P18:(0,1) 25*P18:(4,15) 26*P18:(12,9) 27*P18:O order:27 P19:(13,1) 2*P19:(16,5) 3*P19:(15,9) 4*P19:(7,4) 5*P19:(4,4) 6*P19:(0,1) 7*P19:(6,18) 8*P19:(9,11) 9*P19:(8,15) 10*P19:(18,13) 11*P19:(12,9) 12*P19:(1,17) 13*P19:(11,9) 14*P19:(11,10) 15*P19:(1,2) 16*P19:(12,10) 17*P19:(18,6) 18*P19:(8,4) 19*P19:(9,8) 20*P19:(6,1) 21*P19:(0,18) 22*P19:(4,15) 23*P19:(7,15) 24*P19:(15,10) 25*P19:(16,14) 26*P19:(13,18) 27*P19:O order:27 P20:(13,18) 2*P20:(16,14) 3*P20:(15,10) 4*P20:(7,15) 5*P20:(4,15) 6*P20:(0,18) 7*P20:(6,1) 8*P20:(9,8) 9*P20:(8,4) 10*P20:(18,6) 11*P20:(12,10) 12*P20:(1,2) 13*P20:(11,10) 14*P20:(11,9) 15*P20:(1,17) 16*P20:(12,9) 17*P20:(18,13) 18*P20:(8,15) 19*P20:(9,11) 20*P20:(6,18) 21*P20:(0,1) 22*P20:(4,4) 23*P20:(7,4) 24*P20:(15,9) 25*P20:(16,5) 26*P20:(13,1) 27*P20:O order:27 P21:(15,9) 2*P21:(0,1) 3*P21:(8,15) 4*P21:(1,17) 5*P21:(1,2) 6*P21:(8,4) 7*P21:(0,18) 8*P21:(15,10) 9*P21:O order:9 10*P21:(15,9) P22:(15,10) 2*P22:(0,18) 3*P22:(8,4) 4*P22:(1,2) 5*P22:(1,17) 6*P22:(8,15) 7*P22:(0,1) 8*P22:(15,9) 9*P22:O order:9 10*P22:(15,10) P23:(16,5) 2*P23:(7,4) 3*P23:(0,1) 4*P23:(9,11) 5*P23:(18,13) 6*P23:(1,17) 7*P23:(11,10) 8*P23:(12,10) 9*P23:(8,4) 10*P23:(6,1) 11*P23:(4,15) 12*P23:(15,10) 13*P23:(13,18) 14*P23:(13,1) 15*P23:(15,9) 16*P23:(4,4) 17*P23:(6,18) 18*P23:(8,15) 19*P23:(12,9) 20*P23:(11,9) 21*P23:(1,2) 22*P23:(18,6) 23*P23:(9,8) 24*P23:(0,18) 25*P23:(7,15) 26*P23:(16,14) 27*P23:O order:27 P24:(16,14) 2*P24:(7,15) 3*P24:(0,18) 4*P24:(9,8) 5*P24:(18,6) 6*P24:(1,2) 7*P24:(11,9) 8*P24:(12,9) 9*P24:(8,15) 10*P24:(6,18) 11*P24:(4,4) 12*P24:(15,9) 13*P24:(13,1) 14*P24:(13,18) 15*P24:(15,10) 16*P24:(4,15) 17*P24:(6,1) 18*P24:(8,4) 19*P24:(12,10) 20*P24:(11,10) 21*P24:(1,17) 22*P24:(18,13) 23*P24:(9,11) 24*P24:(0,1) 25*P24:(7,4) 26*P24:(16,5) 27*P24:O order:27 P25:(18,6) 2*P25:(6,18) 3*P25:(15,10) 4*P25:(11,10) 5*P25:(7,4) 6*P25:(0,18) 7*P25:(12,9) 8*P25:(13,1) 9*P25:(8,4) 10*P25:(9,11) 11*P25:(16,14) 12*P25:(1,2) 13*P25:(4,4) 14*P25:(4,15) 15*P25:(1,17) 16*P25:(16,5) 17*P25:(9,8) 18*P25:(8,15) 19*P25:(13,18) 20*P25:(12,10) 21*P25:(0,1) 22*P25:(7,15) 23*P25:(11,9) 24*P25:(15,9) 25*P25:(6,1) 26*P25:(18,13) 27*P25:O order:27 P26:(18,13) 2*P26:(6,1) 3*P26:(15,9) 4*P26:(11,9) 5*P26:(7,15) 6*P26:(0,1) 7*P26:(12,10) 8*P26:(13,18) 9*P26:(8,15) 10*P26:(9,8) 11*P26:(16,5) 12*P26:(1,17) 13*P26:(4,15) 14*P26:(4,4) 15*P26:(1,2) 16*P26:(16,14) 17*P26:(9,11) 18*P26:(8,4) 19*P26:(13,1) 20*P26:(12,9) 21*P26:(0,18) 22*P26:(7,4) 23*P26:(11,10) 24*P26:(15,10) 25*P26:(6,18) 26*P26:(18,6) 27*P26:O order:27