Desafió semana 3

Esta semana el desafió es:

Dos gatos y un ratón se encuentran en varias posiciones en una línea. Se le darán sus posiciones iniciales. Su tarea es determinar qué gato alcanzará primero al ratón, asumiendo que el ratón no se mueve y los gatos viajan a la misma velocidad. Si los gatos llegan al mismo tiempo, el ratón podrá moverse y escapará mientras luchan.

Recibirá una consultas en forma de X, Y y Z que representan las posiciones respectivas para gatos A y B, y para ratón C. Complete la función para devolver la respuesta adecuada a cada consulta, que se imprimirá en una nueva línea. Si el gato A captura al ratón primero, imprimir gato A, si el gato B captura al ratón primero, imprimir gato B y si ambos gatos capturan al ratón al mismo tiempo, imprimir que el Ratón C como los dos gatos pelearon y el ratón escapo.

Ejemplo: x=2 y=5 z=4 Los gatos en posición 2 (gato A) y 5 (Gato B) y el ratón en la posición 4. Retorna Gato B

Ahora resuelve esa función pero para un plano 2d Primero pregunte si tienen obstáculos que impida que un gato se mueva directamente donde el ratón y me dijo que lo escribiera como si no hubieran obstáculos, es decir, tratemoslo como si estuvieran en un campo abierto.

Tiempo 20 Min

Primero creamos a los gatos y al ratón, posteriormente creamos la función para replicar el ejemplo, de tal manera de asegurarnos que vamos por buen camino. Notar que la distancia la envolvemos en valor absoluto para asegurarnos que la distancia siempre sea positiva.

import numpy as np
def gatos_versus_raton(a, b, c):
  distanciaA=np.abs(c-a)
  distanciaB=np.abs(c-b)
  if distanciaA<distanciaB:
    print("Gato A")
  elif distanciaA>distanciaB:
    print("Gato B")
  else:
    print("Raton C")
gatos_versus_raton(2, 5, 4)
#Gato B

Una vez probado la función, procedemos a llevarlo al mundo 2d, es decir, cada animal tendrá dos puntos que representan su ubicación en el eje X e Y.

gatoA=np.random.randint(0, 10, size=2)
gatoB = np.random.randint(0, 10, size=2)
ratonC= np.random.randint(0, 10, size=2)
gatoA, gatoB,  ratonC
#(array([4, 8]), array([0, 7]), array([8, 7]))

A diferencia del ejemplo donde solo necesitábamos la distancia en linea recta, aquí necesitamos ubicar la distancia en dos dimensiones, por lo que debemos ocupar el clásico teorema de pitagoras.

def gatos_versus_raton_2d(a, b, c):
  distanciaA=np.abs(np.sqrt((c[0]-a[0])**2+(c[1]-a[1])**2))
  distanciaB=np.abs(np.sqrt((c[0]-b[0])**2+(c[1]-b[1])**2))
  if distanciaA<distanciaB:
    print("Gato A")
  elif distanciaA>distanciaB:
    print("Gato B")
  else:
    print("Raton C")
gatos_versus_raton_2d(gatoA, gatoB, ratonC)
#Gato A

Allí estaría resuelto el ejercicio de esta semana, si quieren dejen sus comentarios sobre como mejorar este algoritmo o si les interesa que resuelva algún problema de sus entrevistas de trabajo pueden dejarlo también y los realizare cuando termine la lista que ya tengo (no sean cheaters)

Deja un comentario