Ser atingido no joelho com flechas parece ser a lesão de escolha no momento. Como tal, proponho o seguinte desafio de golfe.
Você tem um aventureiro que se parece com isso:
O
/|\
/ | \
|
|
/ \
/ \
Dado um arquivo de texto que contém um arco (desenhado como um }
símbolo), um conjunto de paredes (desenhado como #
símbolos) e um aventureiro, escreva o menor código que calcula o ângulo e a velocidade inicial em que você deve disparar uma flecha para acertar ele no joelho.
Suponha o seguinte:
- Cada caractere no arquivo tem 0,5 x 0,5 metros.
- A flecha é disparada do centro da
}
, ou seja, um deslocamento de0.25m, 0.25m
- Gravidade é
10ms^-2
- Seta pesa
0.1kg
- Seta é um ponto, ou seja, colisões só ocorrem quando a coordenada da seta entra em um dos blocos.
- A velocidade inicial máxima é
50m/s
- O ângulo pode estar entre 0 (reto) e 180 (reto)
- Bater em qualquer parte da perna do aventureiro é considerado um golpe no joelho.
- Uma parede (
#
personagem) ocupa um bloco inteiro de 0,5mx 0,5m. - A seta pode passar sobre o "topo" do arquivo, mas não há nada para impedir que a entrada comece com um limite de
#
caracteres. - Você não pode penetrar nas paredes com flechas.
- Atingir qualquer outra parte do aventureiro não é permitido!
- Você deve exibir um erro se for impossível acertá-lo no joelho.
Exemplo de entrada:
#
} O
# /|\
/ | \
# |
# |
/ \
/ \
Sinta-se à vontade para fazer perguntas se precisar :)
code-golf
path-finding
Polinomial
fonte
fonte
#############
...Respostas:
Python, 599 caracteres
A
X(K,L)
rotina utiliza uma parábolaK=(a,b,c)
representando y = ax ^ 2 + bx + c e um segmento de linhaL=(a,b,c,d)
representando o segmento entre (a, b) e (c, d) . Os obstáculos (O
) e o alvo (T
) são representados como segmentos de linha. Todas as distâncias são dimensionadas por um fator de 2.A entrada de exemplo fornece a seguinte trajetória (por padrão, a velocidade mínima):
você pode reverter
R
para obter o caminho da velocidade máxima:fonte
8**5
para obter 64KB)w=v+1
e substituindo as 3 instâncias dev+1
withw
. Eu não codifico muito Python, portanto, posso estar errado.