Враховуючи деяке додатне ціле число n
, спроектуйте транспортир з найменшою кількістю знаків, що дозволяє вимірювати всі кути, які є інтегральним кратним 2π/n
(кожен в одному вимірі).
Деталі
Як вихід, ви можете вивести список цілих чисел у діапазоні 0
до n-1
(або 1
до n
), які представляють положення кожної позначки. Крім того, ви можете виводити рядок / список довжини n
з а #
в позиції кожної позначки та _
(підкреслення), коли такої немає. (Або два різних символи, якщо це зручніше.)
Приклад: Для n = 5
того, щоб виміряти всі кути 2π/5, 4π/5, 6π/5, 8π/5, 2π
, потрібно встановити (наприклад) одну позначку в 0
, одну позначку в 2π/5
і одну позначку в 6π/5
. Ми можемо кодувати це як список [0,1,3]
або як рядок ##_#_
.
Приклади
Зауважте, що результати не обов'язково є унікальними.
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: Це схоже на проблему з розрідженою лінійкою , але замість лінійної шкали (з двома кінцями) ми вважаємо кругову (кутову) шкалу.
PPS: Цей сценарій повинен обчислити один приклад набору знаків для кожного n
. Спробуйте в Інтернеті!
PPPS: Як зазначав @ngn, ця проблема рівнозначна пошуку мінімальної бази різниць циклічної групи порядку n
. Мінімальні замовлення перелічені в http://oeis.org/A283297, а деякі теоретичні рамки можна знайти на https://arxiv.org/pdf/1702.02631.pdf