Para uma imagem N por N , encontre um conjunto de pixels de forma que nenhuma distância de separação esteja presente mais de uma vez. Ou seja, se dois pixels são separados por uma distância d , eles são os únicos dois pixels separados por exatamente d (usando distância euclidiana ). Observe que d não precisa ser inteiro.
O desafio é encontrar um conjunto maior desse que qualquer outro.
Especificação
Nenhuma entrada é necessária - para este concurso N será fixado em 619.
(Como as pessoas continuam perguntando - não há nada de especial no número 619. Ele foi escolhido para ser grande o suficiente para tornar improvável uma solução ideal e pequeno o suficiente para permitir que uma imagem N por N seja exibida sem que o Stack Exchange a reduza automaticamente. exibido em tamanho máximo de 630 por 630, e decidi ir com a maior prime que não exceda isso.)
A saída é uma lista separada por espaços de números inteiros.
Cada número inteiro na saída representa um dos pixels, numerados na ordem de leitura em inglês de 0. Por exemplo, para N = 3, os locais seriam numerados nesta ordem:
0 1 2
3 4 5
6 7 8
Você pode enviar informações de progresso durante a execução, se desejar, desde que a saída final da pontuação esteja facilmente disponível. Você pode enviar para STDOUT ou para um arquivo ou o que for mais fácil de colar no Juiz de snippets de pilha abaixo.
Exemplo
N = 3
Coordenadas escolhidas:
(0,0)
(1,0)
(2,1)
Saída:
0 1 5
Ganhando
A pontuação é o número de locais na saída. Das respostas válidas que têm a pontuação mais alta, o mais cedo a publicar resultados com essa pontuação vence.
Seu código não precisa ser determinístico. Você pode postar sua melhor saída.
Áreas relacionadas à pesquisa
(Obrigado a Abulafia pelos links Golomb)
Embora nenhum deles seja o mesmo que esse problema, ambos são semelhantes em conceito e podem fornecer idéias sobre como abordar isso:
- Régua de Golomb : o caso unidimensional.
- Retângulo Golomb : uma extensão bidimensional da régua Golomb. Uma variante do caso NxN (quadrado) conhecida como matriz Costas é resolvida para todos os N.
Observe que os pontos necessários para esta pergunta não estão sujeitos aos mesmos requisitos que um retângulo Golomb. Um retângulo de Golomb se estende do caso unidimensional, exigindo que o vetor de cada ponto um para o outro seja único. Isso significa que pode haver dois pontos separados por uma distância de 2 na horizontal e também dois pontos separados por uma distância de 2 na vertical.
Para esta pergunta, é a distância escalar que deve ser única, portanto não pode haver uma separação horizontal e vertical de 2. Toda solução para essa pergunta será um retângulo de Golomb, mas nem todo retângulo de Golomb será uma solução válida para essa questão.
Limites superiores
Dennis, prestativamente, apontou no bate-papo que 487 é um limite superior na pontuação e deu uma prova:
De acordo com meu código CJam (
619,2m*{2f#:+}%_&,
), existem 118800 números únicos que podem ser escritos como a soma dos quadrados de dois números inteiros entre 0 e 618 (ambos inclusive). n pixels requerem n (n-1) / 2 distâncias únicas entre si. Para n = 488, isso dá 118828.
Portanto, existem 118.800 comprimentos diferentes possíveis entre todos os pixels em potencial na imagem, e a colocação de 488 pixels em preto resultaria em 118.828 comprimentos, o que torna impossível que todos sejam únicos.
Eu ficaria muito interessado em saber se alguém tem uma prova de um limite superior mais baixo do que isso.
Entre os melhores
(Melhor resposta de cada usuário)