Dado um número inteiro positivo n
, projete um transferidor com o menor número de marcas que permita medir todos os ângulos que são um múltiplo integral de 2π/n
(cada um em uma única medição).
Detalhes
Como saída, você pode enviar uma lista de números inteiros no intervalo 0
para n-1
(ou 1
para n
) que representam a posição de cada marca. Como alternativa, você pode gerar uma string / lista de comprimento n
com a #
na posição de cada marca e a _
(sublinhado) onde não há nenhuma. (Ou dois caracteres diferentes, se for mais conveniente.)
Exemplo: Para que n = 5
você precise exatamente de 3 marcas para poder medir todos os ângulos 2π/5, 4π/5, 6π/5, 8π/5, 2π
, defina (por exemplo) uma marca em 0
, uma marca em 2π/5
e uma marca em 6π/5
. Podemos codificar isso como uma lista [0,1,3]
ou como uma string ##_#_
.
Exemplos
Observe que as saídas não são necessariamente únicas.
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: É semelhante ao problema da régua esparsa , mas em vez de uma escala linear (com duas extremidades), consideramos uma escala circular (angular).
PPS: esse script deve calcular um exemplo de um conjunto de marcas para cada um n
. Experimente online!
PPPS: Como o @ngn apontou, esse problema é equivalente a encontrar uma base de diferença mínima de um grupo cíclico de ordem n
. Os pedidos mínimos estão listados em http://oeis.org/A283297 e alguns limites teóricos são encontrados em https://arxiv.org/pdf/1702.02631.pdf