Isso se baseia nesse desafio e na idéia do Geobits / CarpetPython para melhorá-lo:
Para esse desafio, a distância entre dois números é medida em um loop, portanto, por exemplo, a distância entre 0 e 999 é 1. Isso deve impedir que estratégias como sempre escolher o número mais baixo ou mais alto ganhem quase todas as vezes. A única outra alteração é que o número mais baixo que pode ser escolhido agora é 0 em vez de 1.
Vou resumir aqui:
- Escreva uma função em Java, Python ou Ruby que aceite três argumentos:
- o número de rodadas disputadas até agora
- o número de jogadores
- os números escolhidos nas rodadas anteriores, como uma matriz de sequências separadas por espaço
- Ele deve retornar um número inteiro de 0 a 999, inclusive
- A pontuação de um programa a cada rodada é a soma das raízes quadradas das distâncias dos números que o outro programa escolheu
- O programa com a maior pontuação após 100 rodadas vence.
- Uma resposta por pessoa
O programa de controle está aqui:
https://github.com/KSFTmh/src/
Entre os melhores
NumberOne, da TheBestOne, está ganhando.
- NumberOne - 9700
- NumberOnePlusFourNineNine - 9623
- AntigoHistória - 9425
- FindCampers - 9259
- WowThisGameIsSoDeep - 9069
- Amostrador - 9014
- SabotageCampers - 8545
Aparentemente, minha sabotagem de campista ... er (?) Não funciona muito bem.
Aqui estão os resultados completos: https://github.com/KSFTmh/src/blob/master/results-3
Eu acho que isso é diferente o suficiente para não ser uma duplicata.
A propósito, esta é a primeira vez que faço uma pergunta no Stack Exchange, então, deixe-me saber se estou fazendo algo errado.
fonte
Respostas:
Python 2, Sampler
Esta entrada é baseada no mesmo código da entrada Mantenha distância, Sampler . Espero que faça melhor aqui, onde as vantagens 1 e 999 não existem.
Em uma lista de locais, escolha o que está mais distante dos números usados recentemente, ignorando a curva anterior (porque outras entradas podem prever com base apenas na curva anterior).
fonte
Number OnePlusFourNineNine, Java
A lógica é realmente simples. A menos que alguém encontre um algoritmo real que leve em consideração as pontuações anteriores, essa resposta é bastante otimizada.
Agora que contamos a distância em um círculo, a distância máxima de dois pontos pode ser 500. Agora, se todas as entradas estivessem gerando números aleatórios (ou pseudo-aleatórios com base em algum algoritmo), essa resposta não teria nenhuma vantagem. . Mas há pelo menos uma entrada que produz uma resposta constante a uma distância quase máxima. Isso faz com que a pontuação seja a favor de 500, pois existe uma fonte fixa de distância máxima possível em cada rodada :)
fonte
AncientHistorian - Python
É o mesmo algoritmo do anterior, exceto no cálculo das pontuações potenciais que utiliza a distância circular. Como estou perdendo horrivelmente e não consigo compilar o controlador, estou apenas tentando uma nova estratégia, na qual uso o pior das rodadas anteriores.
fonte
i
é um elemento descores.split(' ')
, o que significa que é uma string, não um int.SabotageCampers - Python
Os campistas ainda estão vencendo. Deixe-me saber se você tem alguma sugestão para isso.
fonte
FindCampers - Python 2
Encontre todos os campistas das últimas 10 rodadas e fique longe deles. Espero que os preditores corram de mim. Agora vou ignorar minhas antigas escolhas.
fonte
Número Um, Java
A primeira resposta Copiado da minha resposta anterior .
fonte
WowThisGameIsSoDeep, Java
Analisei o jogo por 10 anos em um cluster de 1 milhão de núcleos e encontrei a solução ideal.
fonte
Random.nextInt(int)
.Extrapolador circular, Ruby
fonte
NoMethodError: undefined method `split' for #<Array:0x720f56e2> choose at CircilinearExtrapolator.rb:2
previous_choices
uma matriz de valores["1 6 500","2 8 503"]
?