Um jogo infantil, chamado "Huckle Buckle Beanstalk", é jogado com dois jogadores. Aqui está uma breve descrição de como o jogo é jogado:
- Um jogador é designado "hider" e o outro, "seeker".
- O buscador sai da sala enquanto o hider esconde um pequeno objeto pré-selecionado, o "tesouro".
- O caminhante tenta procurar o objeto enquanto o buscador dá dicas úteis:
- Se o buscador estiver se aproximando do tesouro, o caminhante gritará "mais quente!"
- Se o buscador estiver se afastando do tesouro, o caminhante gritará "mais frio!"
- Uma vez que o buscador encontra o tesouro, eles anunciam que o encontraram.
Seus filhos querem que você jogue esse jogo com eles; no entanto, você está muito ocupado respondendo perguntas no codegolf.SE. Então, você decide escrever um programa para jogar o jogo com eles. No entanto, você deseja usar o menor tempo possível digitando, para tentar tornar o programa o mínimo possível de caracteres.
Podemos definir a sala em que o jogo é jogado como um campo quadrado toroidal bidimensional. A coordenada 0,0
é o canto inferior esquerdo e a coordenada 99,99
é o canto superior direito. O tesouro é colocado em alguma posição n,m
onde n
e m
são números inteiros positivos entre 0 e 99, inclusive.
Seu programa obterá entrada do reprodutor usando sua função de entrada embutida do usuário (por exemplo prompt()
, raw_input()
etc.) Se o idioma escolhido não possuir uma função de entrada do usuário, use a entrada STDIN. O jogo funcionará da seguinte maneira:
- O programa "oculta" o tesouro em uma posição
n,m
. - O programa solicita que o candidato insira uma posição de pesquisa inicial. A entrada virá na forma em
x y
quex
ey
são números inteiros positivos. - O programa emitirá "correto" se a posição de pesquisa inicial
x,y
for igual à posição do tesouron,m
e terminar. De outra forma: - O programa solicitará que o candidato se mova. A entrada vem no formato
a b
ondea
eb
são números inteiros que podem ser negativos . Isso representa o vetor de direção em que o buscador está se movendo (a
é a direção xe a direçãob
y). - Se a posição resultante do buscador estiver no tesouro, o programa emitirá "correto" e será encerrado. De outra forma:
- O programa gera "mais frio" se o buscador estiver se afastando do tesouro ou "mais quente" se estiver se movendo em direção ao tesouro.
- Vá para o passo 4.
As palavras "afastando-se" e "movendo-se para" podem ser ambíguas. Para este desafio, se a posição resultante do buscador depois de se mover estiver mais próxima do tesouro do que a posição anterior, eles estão se movendo em direção ao tesouro. Caso contrário, eles estão se afastando. (Sim, isso significa que, se a posição resultante e a anterior estiverem à mesma distância, o programa deverá produzir "mais frio").
Isso é código de golfe, então o código mais curto vence. Faça perguntas se a especificação não estiver clara.