Dato un numero intero positivo n
, progettare un goniometro con il minor numero di segni che consente di misurare tutti gli angoli che sono un multiplo integrale di 2π/n
(ciascuno in una singola misura).
Dettagli
Come output, è possibile generare un elenco di numeri interi nell'intervallo 0
a n-1
(o 1
a n
) che rappresentano la posizione di ciascun segno. In alternativa è possibile generare una stringa / elenco di lunghezza n
con #
a nella posizione di ciascun segno e un _
(trattino basso) dove non ce n'è. (O due caratteri diversi, se più conveniente.)
Esempio: per n = 5
avere bisogno di esattamente 3 segni per poter misurare tutti gli angoli 2π/5, 4π/5, 6π/5, 8π/5, 2π
impostando (per esempio) un segno su 0
, un segno su 2π/5
e un segno su 6π/5
. Possiamo codificarlo come un elenco [0,1,3]
o come una stringa ##_#_
.
Esempi
Si noti che le uscite non sono necessariamente uniche.
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: Questo è simile al problema dei righelli sparsi , ma invece di una scala lineare (con due estremità) consideriamo una scala circolare (angolare).
PPS: questo script dovrebbe calcolare un esempio di un insieme di segni per ciascuno n
. Provalo online!
PPPS: Come sottolineato da @ngn, questo problema equivale a trovare una base di differenza minima di un gruppo di ordini ciclico n
. Gli ordini minimi sono elencati in http://oeis.org/A283297 e alcuni limiti teorici si trovano in https://arxiv.org/pdf/1702.02631.pdf