s1Eva_IIT2007_T1 Hormiga busca arroz

Ejercicio: 1Eva_IIT2007_T1 Hormiga busca arroz

Propuesta de solución en Python: python.pdf, también en versión matlab.pdf.

Considere ingresar la ubicacióninicial (xh,yh) de la hormiga y que la posición del arroz (xa,ya) sea fija.

Suponga que la distancia inicial es la mayor y que la hormiga no ha encontrado el grano de arroz.

Para la dirección del movimiento de la hormiga y la cantidad de pasos se generan números aleatorios cuyos valores se usan para simular el movimiento al cambiar las coordenadas de la hormiga.

Luego de cada movimiento, se revisa si la hormiga encontró el grano de arroz o que las coordenadas sean iguales; también se puede revisar si la nueva distancia es mayor a las anteriores.

Cuente un turno completado, y repita el procedimiento hasta que se completen los 100 turnos o se haya encontrado el grano de arroz. Al final muestre los resultados buscados.

Tarea: Realizar las modificaciones para mostrar la cantidad de pasos en lugar de turnos.

# 1Eva_IIT2007_T1 Hormiga busca arroz
import random

xa=int(input(' x arroz: '))
ya=int(input(' y arroz: '))

xh=int(input(' x hormiga: '))
yh=int(input(' y hormiga: '))

encontro = 0
t=0
while not((xh==xa and yh==ya) or t>100):
    d=int(random.random()*4)+1
    if (d==1):
        yh=yh+1
    if (d==2):
        yh=yh-1
    if (d==3):
        xh=xh+1
    if (d==4):
        xh=xh-1

    if (xh==xa and yh==ya):
        encontro=1
        
    t=t+1

print(encontro)

En la solucióncon Python,se usarán las librerías básicas de aleatorios(random) y matemáticas (math). Una alternativa a esta solución es usar lalibrería numérica NUMPY, que se descarga e instala como un módulo complementario.

Usando lazo Mientras-Repita:

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1ra Eval II Termino 2007. Tema 1. Hormiga y arroz
# Propuesta de solución. edelros@espol.edu.ec

import random
import math

xh = int(input('coordenada x hormiga: '))
yh = int(input('coordenada y hormiga: '))

# PROCEDIMIENTO
xa = 10
ya = 8
dmayor = math.sqrt((xh-xa)**2+(yh-ya)**2)
encontrado = 0
turno = 0
while (turno<100 and encontrado==0):
    dir = int(random.random()*4)+1
    pasos = int(random.random()*3)+1

    if dir==1:
        yh = yh+pasos
    if dir==2:
        yh = yh-pasos
    if dir==3:
        xh = xh+pasos
    if dir==4:
        xh = xh-pasos
    if (xh==xa and yh==ya):
        encontrado = 1

    d = math.sqrt((xh-xa)**2+(yh-ya)**2)
    if d>dmayor:
        dmayor = d
    turno = turno+1

# SALIDA
print('estado encontrado: ')
print(encontrado)
print('turnos simulados: ')
print(turno)
print('distancia más lejana: ')
print(dmayor)

Usando lazo Repita-Hasta:

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1ra Eval II Termino 2007. Tema 1. Hormiga y arroz
# Propuesta de solución. edelros@espol.edu.ec

import random
import math

xh = int(input('coordenada x hormiga: '))
yh = int(input('coordenada y hormiga: '))

# PROCEDIMIENTO
xa = 10
ya = 8
dmayor = math.sqrt((xh-xa)**2+(yh-ya)**2)

encontrado = 0
turno = 0
while not(turno>=100 or encontrado!=0):
    dir = int(random.random()*4)+1
    pasos = int(random.random()*3)+1
    if dir==1:
        yh = yh+pasos
    if dir==2:
        yh = yh-pasos
    if dir==3:
        xh = xh+pasos
    if dir==4:
        xh = xh-pasos
    if (xh==xa and yh==ya):
        encontrado = 1

    d = math.sqrt((xh-xa)**2+(yh-ya)**2)
    if d>dmayor:
        dmayor = d

    turno=turno+1

# SALIDA
print('estado encontrado: ')
print(encontrado)
print('turnos simulados: ')
print(turno)
print('distancia más lejana: ')
print(dmayor)