Код: Выделить всё
w^n-1=0
- a_1+a_2w+...+a_nw^{n-1}=0
кодовый код. (at the moment n=12 and k=1 as it takes too long to generate any shape n>12 and w=e^{(2*i*pi)/n})
I'm currently using itertools to generate all permutations of the side lengths and then iterating through them to find a permutation that satisfies my equations and then it Перерывы. Мне было интересно, могу ли я написать какой -нибудь код, чтобы я мог проверить, удовлетворяет ли перестанов мои уравнения, прежде чем генерировать следующую перестановку для проверки. Это значительно сократит мое время выполнения, так как мне нужна только одна перестановка, которая работает. Спасибо за помощь

import itertools
import numpy as np
import cmath
n = 12 #number of sides of the polygon
k = 1 #lengths = 1^k,2^k,...,n^k
lengths = [] #empty set to append edge lengths
w = cmath.exp((2*np.pi*1j)/n)
for i in range(1,n):
lengths.append(i**k)
for shape in itertools.permutations(lengths):
sum = n**k
for a in range(1,n):
sum = sum + shape[a-1]*w**a
if abs(round(sum.real,12)) == 0.0 and abs(round(sum.imag,12)) == 0.0:
ngon = [n**k]
for ii in shape:
ngon.append(ii)
print(ngon)
break
Подробнее здесь: https://stackoverflow.com/questions/795 ... ore-i-gene