-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathP68.py
47 lines (41 loc) · 1.14 KB
/
P68.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# -*- coding: utf-8 -*-
from itertools import combinations
import numpy as np
def ring_sum(string,n=5,m=2):
count=[]
for i in range(n):
sum_=string[i]
for j in range(m):
if i+j+n!=10:
sum_+=string[i+j+n]
else:
sum_+=string[5]
count.append(sum_)
return count
def ring_recons(string,n=5,m=2):
count=''
for i in range(n):
sum_=str(string[i])
for j in range(m):
if i+j+n!=10:
sum_+=str(string[i+j+n])
else:
sum_+=str(string[5])
count+=sum_
return count
def form_cycle(comb):
X=np.array(comb)
A=np.array(((-1,1,-1,1,-1),(-1,-1,1,-1,1),(1,-1,-1,1,-1),(-1,1,-1,-1,1),(1,-1,1,-1,-1)))
new=8+1/2*np.dot(A,X)
return new
result=[]
possible=(1,2,3,4,5,6,7,8,9,10)
for comb in combinations(possible,5):
X_=np.array(comb)
X_remain=form_cycle(comb)
if sum(X_remain%1)==0:
X=np.hstack([X_remain,X_]).astype(int)
if all([i in X for i in possible]):
result.append((X_,X_remain))
#print(ring_sum(result[0]))
#print(ring_recons(result[0]))