Поразительное выравнивание происходит 2048/5/28 с внутренними 5 планетами
имеющие гелиоцентрические долготы (в градусах):
248,229, 66,631, 246,967, 249,605, 67,684.
Планеты находятся на расстоянии не более 0,875 градусов от линии (через Солнце)
с уклоном 67,823 градуса. В этом случае искомый метод (PA) даст:
PA (248,229, 66,631, 246,967, 249.605, 67,684) = (67,823, 0,875)
Я попробовал два простых алгоритма, которые оба не работают в этом случае:
2003/9/9: 340,256, 180,320, 346,156, 342,316, 150,285
Один метод дает наклон = 127,867, отклонение = 51,019, а другой 271,867, 85,251.
Я думаю, что правильный метод даст s = 163,466, d = 7,515.
Основная проблема заключается в том, что планеты на противоположных сторонах Солнца могут (почти) находиться на одной линии.
Питон или JavaScript приветствуются.
Я понял, как редактировать! Или нет.
def score3(wList):
wSize = len(wList)
#print wList
first = wList[0]
d1 = first - 90.0
if d1 < 0.0: d1 += 360.0
d2 = first + 90.0
if d2 > 360.0: d1 -= 360.0
if d1 > d2: d1,d2 = d2,d1
sum = 0.0
for wx in range(0,wSize):
curr = wList[wx]
if (curr > d1) and (curr < d2):
new = curr
else:
new = (curr + 180.0) % 360.0
wList[wx] = new
sum += new
#print '%7.3f --> %7.3f' % (curr, new)
avg = sum / wSize
#print avg, wList
score = 0.0
for wx in range(0,wSize):
curr = wList[wx]
diff = curr - avg
if diff < 0: diff = - diff
score += diff
score /= wSize
return avg, score