{"id":14358,"date":"2014-03-13T07:55:16","date_gmt":"2014-03-13T12:55:16","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/icm00794\/?p=2784"},"modified":"2026-04-05T17:15:25","modified_gmt":"2026-04-05T22:15:25","slug":"s1eva2007tii_t1-hormiga-busca-arroz","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-s1eva10\/s1eva2007tii_t1-hormiga-busca-arroz\/","title":{"rendered":"s1Eva2007TII_T1 Hormiga busca arroz"},"content":{"rendered":"\n<p><em><strong>Ejercicio<\/strong><\/em>: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-1eva10\/1eva2007tii_t1-hormiga-busca-arroz\/\" data-type=\"post\" data-id=\"3164\">1Eva2007TII_T1 Hormiga busca arroz<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><em><strong>Algoritmo<\/strong><\/em>:<\/p>\n\n\n\n<p><a href=\"#algoritmounpasoturno\">un paso<\/a>\/turno<\/p>\n\n\n\n<p><a href=\"#algoritmopasosturno\">varios pasos<\/a>\/turno<\/p>\n\n\n\n<p><a href=\"#diagramaflujo\">diagFlujo<\/a><\/p>\n\n\n\n<p><a href=\"#repitahasta\">repita-hasta<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Algoritmo con un paso por cada turno<\/h2>\n\n\n\n<p>Considere ingresar la ubicaci\u00f3n inicial (<strong>x<\/strong>h,<strong>y<\/strong>h) de la hormiga y que la posici\u00f3n del arroz (<strong>x<\/strong>a,<strong>y<\/strong>a) sea fija.<\/p>\n\n\n\n<figure class=\"wp-block-image alignright\"><img loading=\"lazy\" decoding=\"async\" width=\"364\" height=\"280\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2015\/03\/HormigaArroz.gif\" alt=\"hormiga y arroz tablero\" class=\"wp-image-215\" \/><\/figure>\n\n\n\n<p>Suponga que la hormiga no ha encontrado el grano de arroz, se encuentran distantes.<\/p>\n\n\n\n<p>Para la direcci\u00f3n del movimiento de la hormiga&nbsp; se genera un n\u00famero aleatorio usado para cambiar un valor de coordenada de la hormiga.<\/p>\n\n\n\n<p>Luego se revisa si la hormiga encontr\u00f3 el grano de arroz al comparar que&nbsp; las coordenadas sean iguales<\/p>\n\n\n\n<p>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 requeridos.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><em><strong>Algoritmo<\/strong><\/em>:<\/p>\n\n\n\n<p><a href=\"#algoritmounpasoturno\">un paso<\/a>\/turno<\/p>\n\n\n\n<p><a href=\"#algoritmopasosturno\">varios pasos<\/a>\/turno<\/p>\n\n\n\n<p><a href=\"#diagramaflujo\">diagFlujo<\/a><\/p>\n\n\n\n<p><a href=\"#repitahasta\">repita-hasta<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"algoritmounpasoturno\">Algoritmo en Python&nbsp;con un paso por cada turno<\/h2>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# ICM00794-Fundamentos de Computaci\u00f3n - FCNM-ESPOL\n# 1Eva_IIT2007_T1 Hormiga busca arroz\nimport random as rnd\n\n# INGRESO\nxa=int(input(' x arroz: '))\nya=int(input(' y arroz: '))\n\nxh=int(input(' x hormiga: '))\nyh=int(input(' y hormiga: '))\n\n# PROCEDIMIENTO\nencontro = 0\nt = 0\nwhile not((xh==xa and yh==ya) or t&gt;100):\n    \n    # direcci\u00f3n de movimiento de hormiga\n    d = int(rnd.random()*4)+1\n    \n    if (d==1):\n        yh = yh+1\n    if (d==2):\n        yh = yh-1\n    if (d==3):\n        xh = xh+1\n    if (d==4):\n        xh = xh-1\n\n    # Revisa si lo encontr\u00f3\n    if (xh==xa and yh==ya):\n        encontro = 1\n    t = t + 1\n\nprint('\u00bfencontr\u00f3?: ')\nprint(encontro)\nprint('pasos realizados: ')\nprint(t)\n<\/pre><\/div>\n\n\n<p>Ejemplo de respuesta con el algoritmo<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> x arroz: 5\n y arroz: 3\n x hormiga: 4\n y hormiga: 2\n\u00bfencontr\u00f3?: \n1\npasos realizados: \n34\n&gt;&gt;&gt; \n\n x arroz: 8\n y arroz: 8\n x hormiga: 3\n y hormiga: 2\n\u00bfencontr\u00f3?: \n0\npasos realizados: \n101<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><em><strong>Algoritmo<\/strong><\/em>:<\/p>\n\n\n\n<p><a href=\"#algoritmounpasoturno\">un paso<\/a>\/turno<\/p>\n\n\n\n<p><a href=\"#algoritmopasosturno\">varios pasos<\/a>\/turno<\/p>\n\n\n\n<p><a href=\"#diagramaflujo\">diagFlujo<\/a><\/p>\n\n\n\n<p><a href=\"#repitahasta\">repita-hasta<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"algoritmopasosturno\">Algoritmo en Python con varios pasos por turno<\/h2>\n\n\n\n<p>Al ejercicio anterior se le a\u00f1ade una variable \"pasos\" para que mediante un aleatorio sea diferente en cada turno.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# ICM00794-Fundamentos de Computaci\u00f3n - FCNM-ESPOL\n# 1ra Eval II Termino 2007. Tema 1. Hormiga y arroz\n# Propuesta de soluci\u00f3n. edelros@espol.edu.ec\n\nimport random as rnd\nimport math\n\nxh = int(input('coordenada x hormiga: '))\nyh = int(input('coordenada y hormiga: '))\n\n# PROCEDIMIENTO\n\n# posici\u00f3n del arroz fija\nxa = 10\nya = 8\n\n# distancia inicial\ndmayor = math.sqrt((xh-xa)**2+(yh-ya)**2)\n\nencontrado = 0\nturno = 0\nwhile (turno&lt;100 and encontrado==0):\n    \n    direccion = int(rnd.random()*4)+1\n    pasos = int(rnd.random()*3)+1\n\n    if direccion==1:\n        yh = yh + pasos\n    if direccion==2:\n        yh = yh - pasos\n    if direccion==3:\n        xh = xh + pasos\n    if direccion==4:\n        xh = xh - pasos\n        \n    if (xh==xa and yh==ya):\n        encontrado = 1\n\n    distancia = math.sqrt((xh-xa)**2+(yh-ya)**2)\n    if distancia&gt;dmayor:\n        dmayor = distancia\n        \n    turno = turno + 1\n\n# SALIDA\nprint('estado encontrado: ')\nprint(encontrado)\nprint('turnos simulados: ')\nprint(turno)\nprint('distancia m\u00e1s lejana: ')\nprint(dmayor)\n<\/pre><\/div>\n\n\n<p>Resultado del algoritmo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>coordenada x hormiga: 2\ncoordenada y hormiga: 1\nestado encontrado: \n1\nturnos simulados: \n92\ndistancia m\u00e1s lejana: \n23.323807579381203\n&gt;&gt;&gt; \ncoordenada x hormiga: 0\ncoordenada y hormiga: 0\nestado encontrado: \n0\nturnos simulados: \n100\ndistancia m\u00e1s lejana: \n38.2099463490856\n&gt;&gt;&gt; <\/code><\/pre>\n\n\n\n<p>En la soluci\u00f3n con Python, se usar\u00e1n las librer\u00edas b\u00e1sicas de aleatorios (random) y matem\u00e1ticas (math). Una alternativa a esta soluci\u00f3n es usar la librer\u00eda num\u00e9rica Numpy que se descarga e instala como un m\u00f3dulo complementario.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><em><strong>Algoritmo<\/strong><\/em>:<\/p>\n\n\n\n<p><a href=\"#algoritmounpasoturno\">un paso<\/a>\/turno<\/p>\n\n\n\n<p><a href=\"#algoritmopasosturno\">varios pasos<\/a>\/turno<\/p>\n\n\n\n<p><a href=\"#diagramaflujo\">diagFlujo<\/a><\/p>\n\n\n\n<p><a href=\"#repitahasta\">repita-hasta<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"diagramaflujo\">Diagrama de Flujo<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"228\" height=\"370\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2014\/03\/s1eva_iit2007_t1_01.png\" alt=\"s1eva_iit2007_t1 diagrama de flujo 01 \" class=\"wp-image-19270\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"285\" height=\"943\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2014\/03\/s1eva_iit2007_t1_02.png\" alt=\"s1eva_iit2007_t1 diagrama de flujo 02 \" class=\"wp-image-19271\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><em><strong>Algoritmo<\/strong><\/em>:<\/p>\n\n\n\n<p><a href=\"#algoritmounpasoturno\">un paso<\/a>\/turno<\/p>\n\n\n\n<p><a href=\"#algoritmopasosturno\">varios pasos<\/a>\/turno<\/p>\n\n\n\n<p><a href=\"#diagramaflujo\">diagFlujo<\/a><\/p>\n\n\n\n<p><a href=\"#repitahasta\">repita-hasta<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Algoritmo en Python: Bucle Repita-Hasta:<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# ICM00794-Fundamentos de Computaci\u00f3n - FCNM-ESPOL\n# 1ra Eval II Termino 2007. Tema 1. Hormiga y arroz\n# Propuesta de soluci\u00f3n. edelros@espol.edu.ec\n\nimport random as rnd\nimport math\n\nxh = int(input('coordenada x hormiga: '))\nyh = int(input('coordenada y hormiga: '))\n\n# PROCEDIMIENTO\n\n# posici\u00f3n del arroz fija\nxa = 10\nya = 8\n\n# distancia inicial\ndmayor = math.sqrt((xh-xa)**2+(yh-ya)**2)\n\nencontrado = 0\nturno = 0\nwhile not(turno&gt;=100 or encontrado!=0):\n    \n    direccion = int(rnd.random()*4)+1\n    pasos = int(rnd.random()*3)+1\n    \n    if direccion==1:\n        yh = yh + pasos\n    if direccion==2:\n        yh = yh - pasos\n    if direccion==3:\n        xh = xh + pasos\n    if direccion==4:\n        xh = xh - pasos\n        \n    if (xh==xa and yh==ya):\n        encontrado = 1\n\n    distancia = math.sqrt((xh-xa)**2+(yh-ya)**2)\n    if distancia&gt;dmayor:\n        dmayor = distancia\n\n    turno = turno+1\n\n# SALIDA\nprint('estado encontrado: ')\nprint(encontrado)\nprint('turnos simulados: ')\nprint(turno)\nprint('distancia m\u00e1s lejana: ')\nprint(dmayor)\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><em><strong>Algoritmo<\/strong><\/em>:<\/p>\n\n\n\n<p><a href=\"#algoritmounpasoturno\">un paso<\/a>\/turno<\/p>\n\n\n\n<p><a href=\"#algoritmopasosturno\">varios pasos<\/a>\/turno<\/p>\n\n\n\n<p><a href=\"#diagramaflujo\">diagFlujo<\/a><\/p>\n\n\n\n<p><a href=\"#repitahasta\">repita-hasta<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n","protected":false},"excerpt":{"rendered":"<p>Ejercicio: 1Eva2007TII_T1 Hormiga busca arroz Algoritmo: un paso\/turno varios pasos\/turno diagFlujo repita-hasta Algoritmo con un paso por cada turno Considere ingresar la ubicaci\u00f3n inicial (xh,yh) de la hormiga y que la posici\u00f3n del arroz (xa,ya) sea fija. Suponga que la hormiga no ha encontrado el grano de arroz, se encuentran distantes. Para la direcci\u00f3n del [&hellip;]<\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"wp-custom-template-entrada-fp-ejemplos","format":"standard","meta":{"footnotes":""},"categories":[125],"tags":[58,157],"class_list":["post-14358","post","type-post","status-publish","format-standard","hentry","category-fp-s1eva10","tag-ejemplos-python","tag-fundamentos-programacion"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/14358","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/users\/8043"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/comments?post=14358"}],"version-history":[{"count":4,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/14358\/revisions"}],"predecessor-version":[{"id":23569,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/14358\/revisions\/23569"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=14358"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=14358"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=14358"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}