Inspirado pela grande caça aos ovos de Páscoa da API!
Sumário
Sua tarefa é procurar um número inteiro predeterminado no "espaço Collatz" (a ser explicado posteriormente) usando o menor número possível de etapas.
Introdução
Esse desafio é baseado na famosa conjectura de Collatz, da qual esperamos que todos aqui pelo menos tenham ouvido falar. Aqui está um resumo de Imprimir os números Super Collatz .
A sequência Collatz (também chamada de problema 3x + 1) é onde você começa com um número inteiro positivo; neste exemplo, usaremos 10 e aplicaremos este conjunto de etapas:
if n is even: Divide it by 2 if n is odd: Multiply it by 3 and add 1 repeat until n = 1
A distância Collatz C(m,n)entre os dois números me n, para o objetivo deste desafio, é a distância entre dois números no gráfico Collatz (créditos para @tsh por me falar sobre esse conceito), que é definida da seguinte forma: (usando 21e 13como exemplos ):
Anote a sequência Collatz para m(neste caso 21):
21, 64, 32, 16, 8, 4, 2, 1
Anote a sequência Collatz para n(neste caso 13):
13, 40, 20, 10, 5, 16, 8, 4, 2, 1
Agora conte quantos números aparecem apenas em uma das seqüências. Isso é definido como a distância da Collatz entre me n. Nesse caso 8, ou seja,
21, 64, 32, 13, 40, 20, 10, 5
Portanto, temos a distância de Collatz entre 21e 13como C(21,13)=8.
C(m,n) tem as seguintes boas propriedades:
C(m,n)=C(n,m)
C(m,n)=0 iff. m=n
Esperemos que a definição de C(m,n)agora seja clara. Vamos começar a caçar ovos no espaço Collatz!
No início do jogo, um controlador decide a posição de um ovo de páscoa, que é expresso por sua coordenada unidimensional: Um número inteiro no intervalo [p,q](em outras palavras, um número inteiro entre pe q, ambas as extremidades, inclusive).
A posição do ovo permanece constante durante todo o jogo. Denotaremos essa coordenada como r.
Agora você pode fazer um palpite inicial de 0 e ele será gravado pelo controlador. Esta é sua 0ª rodada. Se você tiver tanta sorte que acertou em primeiro lugar (ou seja, 0 = r), o jogo termina e sua pontuação é 0(quanto menor a pontuação, melhor). Caso contrário, você entra na 1ª rodada e faz um novo palpite a 1 , isso continua até você acertar, ou seja, n = r, e sua pontuação será n.
Para cada rodada após o dia 0, o controlador fornece um dos seguintes feedbacks para que você possa adivinhar melhor com base nas informações fornecidas. Vamos supor que você esteja atualmente na nronda e, portanto, seu palpite é n
- "Você achou!" se n = r, nesse caso o jogo termina e você marca
n. - "Você está mais perto :)" se C (a n , r) <C (a n-1 , r)
- "Você está circulando em torno do ovo" se C (a n , r) = C (a n-1 , r)
- "Você está mais longe :(" se C (a n , r)> C (a n-1 , r)
Para salvar alguns bytes, chamarei as respostas como "Direita", "Mais próxima", "Mesmo", "Mais longe", na ordem apresentada acima.
Aqui está um exemplo de jogo com p=1,q=15.
- a 0 = 10
- a 1 = 11, resposta: "Mais próximo"
- a 2 = 13, resposta: "Mais longe"
- a 3 = 4, resposta: "Mais longe"
- a 4 = 3, resposta: "Mais próximo"
- a 5 = 5, resposta: "Mesmo"
- a 6 = 7, resposta: "Certo"
Pontuação: 6.
Desafio
Crie uma estratégia determinística para jogar p=51, q=562com a melhor pontuação.
As respostas devem descrever os algoritmos em detalhes. Você pode anexar qualquer código que ajude a elucidar o algoritmo. Como não é um codegolf, você deve escrever um código legível.
As respostas devem incluir a pior pontuação possível para todos os casos possíveis re a que tiver a pior pontuação mais baixa vence. No caso de empate, os algoritmos com melhor pontuação média para todos os rs possíveis (que também devem ser incluídos nas respostas) vencem. Não há mais desempates e podemos ter vários vencedores no final.
Especificações
- Para reiterar,
restá no intervalo[51,562]. - Aplicam-se brechas padrão .
Recompensa (adicionada após a primeira resposta ser publicada)
Pessoalmente, posso oferecer uma recompensa a uma resposta em que todas as suposições são feitas dentro do intervalo [51,562]e ainda tendo uma pontuação mais baixa razoavelmente baixa.