Biorąc pod uwagę pewną dodatnią liczbę całkowitą n, zaprojektuj kątomierz z najmniejszą liczbą znaczników, która pozwoli ci zmierzyć wszystkie kąty, które są integralną wielokrotnością 2π/n(każdy w jednym pomiarze).
Detale
Jako wynik możesz wypisać listę liczb całkowitych z zakresu 0do n-1(lub 1do n), które reprezentują pozycję każdego znaku. Alternatywnie możesz wypisać ciąg / listę długości nze znakiem #w pozycji każdego znaku i _(podkreślenie) tam, gdzie go nie ma. (Lub dwa różne znaki, jeśli jest to wygodniejsze.)
Przykład: Aby n = 5dokładnie zmierzyć wszystkie kąty, potrzebujesz dokładnie 3 znaków, 2π/5, 4π/5, 6π/5, 8π/5, 2πustawiając (na przykład) jeden znak o 0, jeden znak o 2π/5i jeden znak o 6π/5. Możemy zakodować to jako listę [0,1,3]lub ciąg znaków ##_#_.

Przykłady
Zauważ, że wyniki niekoniecznie są unikalne.
n: output:
1 [0]
2 [0,1]
3 [0,1]
4 [0,1,2]
5 [0,1,2]
6 [0,1,3]
7 [0,1,3]
8 [0,1,2,4]
9 [0,1,3,4]
10 [0,1,3,6]
11 [0,1,3,8]
20 [0,1,2,3,6,10]
PS: Jest to podobne do problemu rzadkiej linijki , ale zamiast skali liniowej (z dwoma końcami) rozważamy skalę kołową (kątową).
PPS: Ten skrypt powinien obliczyć jeden przykład zestawu znaków dla każdego n. Wypróbuj online!
PPPS: Jak wskazał @ngn, ten problem jest równoważny ze znalezieniem podstawy minimalnej różnicy w cyklicznej grupie zamówień n. Minimalne zamówienia są wymienione w http://oeis.org/A283297, a niektóre teoretyczne granice znajdują się w https://arxiv.org/pdf/1702.02631.pdf