Meu robô entrou em curto-circuito de alguma forma e fugiu aleatoriamente para algum lugar do meu laboratório!
Felizmente, sempre que ele faz isso, sua sequência de desligamento é iniciada, dando-lhe tempo suficiente para virar e correr aleatoriamente na direção em que está por cinco rodadas antes de desligar. Suas funções de giroscópio e acelerômetro ainda estão retransmitindo os dados para o laboratório enquanto ele ainda está ligado.
Os dados sempre virão na forma de cinco conjuntos de dois números, por exemplo.
12:234,-135:47,-68:230,140:324,127,87
Sua missão, jogadores de golfe, é: a) simular a seqüência frenética de rotação e rotação do robô, exibindo cinco conjuntos de números na forma de a1:d1,a2:d2,a3:d3,a4:d4,a5:d5
onde a
(n) é o ângulo no sentido horário (em graus), de modo -179<=a<=+180
que o robô saia da posição atual ( inicialmente ele está no rumo zero antes de girar pela primeira vez), e d
(n) é a distância em pés percorridos antes da próxima mudança de rumo, que é tal que os 0<=d<=500
pés; eb) Um cabeçalho calculado do laboratório (que também está voltado para um zero), a distância em pés (precisão de até três casas decimais é fortemente incentivada, -5 bytes, se você o fizer) e o cabeçalho da orientação (em graus) de onde meu robô está voltado quando desligado.
Exemplo fácil:
Data: 0:1,45:1,90:1,90:1,90:1
Heading: 0
Distance: 1
Orientation: -45
As voltas e distâncias aleatórias são exatamente isso, aleatórias. Nenhum valor definido deve ser codificado, devemos ver a aleatoriedade em ação dentro do código.
Restrições à aleatoriedade: sem referências baseadas em relógio ou data, precisamos ver uma random
referência nativa dentro do código. Sempre que você executa esse código, a aleatoriedade deve se apresentar com a possibilidade de mostrar 1 de 360 possíveis ângulos de giro com cada rodada de giro. Portanto, o robô pode girar -36 graus em um turno e +157 graus no próximo, seguido por outro turno de +2 graus e outro turno de -116 graus e um turno final de +42 graus no turno final. Pelo menos 360 valores distintos devem ser possíveis (entre -179 a +180 graus, inclusive) a cada geração aleatória de ângulo.
Restrições à distância percorrida: Definidas da mesma forma, existem 501 distâncias possíveis que o robô pode percorrer (entre 0 e 500 pés, inclusive), portanto, espero que a aleatoriedade também esteja disponível ao determinar a distância de corrida do robô. O robô poderia teoricamente executar 45, 117, 364, 27 e 6 pés com cada uma de suas respectivas rodadas ...
Os dados fornecidos a você sempre estarão em valores inteiros ... o robô girará em intervalos inteiros de graus e será executado em intervalos inteiros de distância. Os valores de saída, no entanto, serão flutuantes ...
Isso é código-golfe. O menor código vence ... Agora, encontre o meu robô!
PS: em referência à minha "Precisão de até 3 casas decimais", se você pode fornecer o cabeçalho (em graus, para um MÍNIMO de 3 casas decimais) e uma distância em pés (também precisa também para um mínimo de 3 casas decimais), você receberá um bônus de -5 bytes).
-180 < a <= +180
como o<
sinal em seus próprios meios menos do que mas não incluindo AFAIK ...