Mi perro me ladra, pero soy demasiado vago para llevarlo a pasear. ¡Tengo una idea! ¡Haré que la gente de Code Golf lo haga por mí!
Su desafío es simular el paseo de un perro. Estas son las reglas para pasear al perro:
- El humano (
H
) comenzará en0,0
un plano de coordenadas (cartesiano), e irá aleatoriamente un espacio arriba, izquierda, derecha o abajo cada segundo. - El perro (
D
) comenzará en la misma ubicación, e irá a cero, uno, dos o tres espacios arriba, izquierda, derecha o abajo cada segundo (al azar, por supuesto). El perro es menos predecible y a veces correrá más rápido o se detendrá por completo. - El perro nunca obtendrá más de una cierta cantidad de unidades lejos del humano (en la distancia euclidiana), que es la longitud de la correa (
L
). Por ejemplo, siL
es así6
, una posición válida seríaH(0,0) D(4,4)
(ya que la distancia es de aproximadamente 5.65 unidades), pero noH(0,0) D(5,4)
(aproximadamente 6.4 unidades).- Si, cuando el perro se mueve, violaría el requisito de distancia de la correa, debe ir lo más lejos que pueda en su dirección determinada que no viole el requisito de distancia. Por ejemplo, si la posición es
H(0,0) D(3,4)
y se decide aleatoriamente que el perro se mueva 3 espacios a la derecha, irá aD(4,4)
, ya que es lo más lejos que puede llegar sin alejarse más de 6 unidades. (Tenga en cuenta que esto podría resultar en un movimiento de 0 espacios, es decir, ¡ningún movimiento en absoluto!)
- Si, cuando el perro se mueve, violaría el requisito de distancia de la correa, debe ir lo más lejos que pueda en su dirección determinada que no viole el requisito de distancia. Por ejemplo, si la posición es
- Reglas misceláneas: el humano se mueve primero. El humano no debe exceder la longitud de la correa en su movimiento. Si lo hace, debe elegir otra dirección. "Aleatorio" significa "con una distribución uniforme y sin patrones".
La entrada se dará en este formato (puede ser STDIN, parámetro de función, archivo, etc.):
"<amount of seconds the walk will last> <leash length>"
Por ejemplo:
300 6 // a 5 minute walk with a 6 yard leash
Debe dar salida en este formato (puede ser STDOUT, valor de retorno de función, archivo, etc.):
H(0,0) D(0,0)
H(0,1) D(2,0)
H(1,1) D(2,1)
H(1,0) D(2,-1)
...
(La cantidad de líneas de salida será seconds + 1
, ya que la H(0,0) D(0,0)
línea no cuenta).
Este es el código de golf , ¡así que el código más corto en bytes ganará!