{"id":244,"date":"2021-07-02T15:03:34","date_gmt":"2021-07-02T18:03:34","guid":{"rendered":"http:\/\/www.galirows.com.br\/meublog\/competir\/?p=244"},"modified":"2021-07-13T16:50:28","modified_gmt":"2021-07-13T19:50:28","slug":"robo-colecionador-maratona2010","status":"publish","type":"post","link":"http:\/\/www.galirows.com.br\/meublog\/competir\/robo-colecionador-maratona2010\/","title":{"rendered":"Rob\u00f4 Colecionador [Maratona 2010]"},"content":{"rendered":"\n<div class=\"both\">\n<div class=\"description\">\n<p>Um dos esportes favoritos na Robol\u00e2ndia \u00e9 o Rali dos Rob\u00f4s. Este rali \u00e9 praticado em uma arena retangular gigante de <strong>N<\/strong> linhas por <strong>M<\/strong> colunas de c\u00e9lulas quadradas. Algumas das c\u00e9lulas est\u00e3o vazias, algumas cont\u00eam figurinhas da Copa (muito apreciadas pelas intelig\u00eancias artificiais da Robol\u00e2ndia) e algumas s\u00e3o ocupadas por pilastras que sustentam o teto da arena. Em seu percurso os rob\u00f4s podem ocupar qualquer c\u00e9lula da arena, exceto as que cont\u00e9m pilastras, que bloqueiam o seu movimento. O percurso do rob\u00f4 na arena durante o rali \u00e9 determinado por uma sequ\u00eancia de instru\u00e7\u00f5es. Cada instru\u00e7\u00e3o \u00e9 representada por um dos seguintes caracteres: \u2018D\u2019, \u2018E\u2019 e \u2018F\u2019, significando, respectivamente, \u201cgire 90 graus para a direita\u201d, \u201cgire 90 graus para a esquerda\u201d e \u201cande uma c\u00e9lula para a frente\u201d. O rob\u00f4 come\u00e7a o rali em uma posi\u00e7\u00e3o inicial na arena e segue fielmente a sequ\u00eancia de instru\u00e7\u00f5es dada (afinal, eles s\u00e3o rob\u00f4s!). Sempre que o rob\u00f4 ocupa uma c\u00e9lula que cont\u00e9m uma figurinha da Copa ele a coleta. As figurinhas da Copa n\u00e3o s\u00e3o repostas, ou seja, cada figurinha pode ser coletada uma \u00fanica vez. Quando um rob\u00f4 tenta andar para uma c\u00e9lula onde existe uma pilastra ele patina, permanecendo na c\u00e9lula onde estava, com a mesma orienta\u00e7\u00e3o. O mesmo tamb\u00e9m acontece quando um rob\u00f4 tenta sair da arena.<\/p>\n<p>Dados o mapa da arena, descrevendo a posi\u00e7\u00e3o de pilastras e figurinhas, e a sequ\u00eancia de instru\u00e7\u00f5es de um rob\u00f4, voc\u00ea deve escrever um programa para determinar o n\u00famero de figurinhas coletadas pelo rob\u00f4.<\/p>\n<\/div>\n\n\n\n<!--more-->\n\n\n\n<p><strong>Entrada<\/strong><\/p>\n\n\n\n<p>A entrada cont\u00e9m v\u00e1rios casos de teste. A primeira linha de um caso de teste cont\u00e9m tr\u00eas n\u00fameros inteiros <strong>N<\/strong>, <strong>M<\/strong> e <strong>S<\/strong> (1 \u2264 <strong>N<\/strong>, <strong>M<\/strong> \u2264 100, 1 \u2264 <strong>S<\/strong> \u2264 5 \u00d7 10<sup>4<\/sup> ), separados por espa\u00e7os em branco, indicando respectivamente o n\u00famero de linhas e o n\u00famero de colunas da arena e o n\u00famero de instru\u00e7\u00f5es para o rob\u00f4. Cada uma das <strong>N<\/strong> linhas seguintes da entrada descreve uma linha de c\u00e9lulas da arena e cont\u00e9m uma cadeia com <strong>M<\/strong> caracteres. A primeira linha que aparece na descri\u00e7\u00e3o da arena \u00e9 a que est\u00e1 mais ao Norte; a primeira coluna que aparece na descri\u00e7\u00e3o de uma linha de c\u00e9lulas da arena \u00e9 a que est\u00e1 mais a Oeste.<\/p>\n\n\n\n<p>Cada c\u00e9lula da arena pode conter um dos seguintes caracteres:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\u2018.\u2019 \u2014 c\u00e9lula normal;<\/li><li>\u2018*\u2019 \u2014 c\u00e9lula que cont\u00e9m uma figurinha da Copa;<\/li><li>\u2018#\u2019 \u2014 c\u00e9lula que cont\u00e9m uma pilastra;<\/li><li>\u2018N\u2019, \u2018S\u2019, \u2018L\u2019, \u2018O\u2019 \u2014 c\u00e9lula onde o rob\u00f4 inicia o percurso (\u00fanica na arena). A letra representa a orienta\u00e7\u00e3o inicial do rob\u00f4 (Norte, Sul, Leste e Oeste, respectivamente).<\/li><\/ul>\n\n\n\n<p>A ultima linha da entrada cont\u00e9m uma sequ\u00eancia de <strong>S<\/strong> caracteres dentre \u2018D\u2019, \u2018E\u2019 e \u2018F\u2019, representando as instru\u00e7\u00f5es do rob\u00f4.<\/p>\n\n\n\n<p>O \u00faltimo caso de teste \u00e9 seguido por uma linha que cont\u00e9m apenas tr\u00eas n\u00fameros zero separados por um espa\u00e7o em branco.<\/p>\n\n\n\n<p><strong>Sa\u00edda<\/strong><\/p>\n\n\n\n<p>Para cada rali descrito na entrada seu programa deve imprimir uma \u00fanica linha contendo um \u00fanico inteiro, indicando o n\u00famero de figurinhas que o rob\u00f4 colecionou durante o rali.<\/p>\n\n\n\n<div class=\"both\"><strong>Exemplo<\/strong><\/div>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><td>Entrada<\/td><td>Sa\u00edda<\/td><\/tr><\/thead><tbody><tr><td>3 3 2<br>***<br>*N*<br>***<br>DE<br>4 4 5<br>&#8230;#<br>*#O.<br>*.*.<br>*.#.<br>FFEFF<br>10 10 20<br>&#8230;.*&#8230;..<br>&#8230;&#8230;.*..<br>&#8230;..*&#8230;.<br>..*.#&#8230;..<br>&#8230;#N.*..*<br>&#8230;*&#8230;&#8230;<br>&#8230;&#8230;&#8230;.<br>&#8230;&#8230;&#8230;.<br>&#8230;&#8230;&#8230;.<br>&#8230;&#8230;&#8230;.<br>FDFFFFFFEEFFFFFFEFDF<br>0 0 0<\/td><td>0<br>1<br>3<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>Dicas<\/strong><\/p>\n\n\n\n<p>(1) Presente aten\u00e7\u00e3o nas orienta\u00e7\u00f5es para o rob\u00f4: se a orienta\u00e7\u00e3o atual do rob\u00f4 \u00e9 N (norte) e a instru\u00e7\u00e3o dada \u00e9 D (girar 90\u00ba para a direita), ent\u00e3o a nova orienta\u00e7\u00e3o do rob\u00f4 \u00e9 L (leste); (2) Cuidado em rela\u00e7\u00e3o \u00e0 uma pilastra: o rob\u00f4 e sua localiza\u00e7\u00e3o na matriz n\u00e3o s\u00e3o alteradas; (3) Observe os limites de linhas e colunas da matriz.<\/p>\n\n\n\n<p class=\"footer\"><strong>Solu\u00e7\u00e3o em C<\/strong><\/p>\n\n\n\n<p class=\"has-small-font-size\">Esse c\u00f3digo n\u00e3o \u00e9 meu e retirei ele de: <a href=\"http:\/\/nerdcabecao.blogspot.com.br\/2013\/02\/resolucao-robo-colecionador-2010.html\" target=\"_blank\" rel=\"noreferrer noopener\">http:\/\/nerdcabecao.blogspot.com.br\/2013\/02\/resolucao-robo-colecionador-2010.html<\/a><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">#include&lt;stdio.h&gt;\nstruct pos {\n    int x;\n    int y;\n    int prox_x;\n    int prox_y;\n}pos;\n&nbsp;\nint main (void) {\n    int L, C, S;\n    while (<a href=\"http:\/\/www.opengroup.org\/onlinepubs\/009695399\/functions\/scanf.html\">scanf<\/a>(\"%d %d %d\", &amp;L, &amp;C, &amp;S)&amp;&amp;L!=0) {\n        int i, j, fig=0;\n        char tab[L][C], cmd[S+1];\n        <a href=\"http:\/\/www.opengroup.org\/onlinepubs\/009695399\/functions\/getchar.html\">getchar<\/a>();\n        for(i=0; i&lt;L; i++) {\n            for(j=0; j&lt;C; j++) {\n                tab[i][j]=<a href=\"http:\/\/www.opengroup.org\/onlinepubs\/009695399\/functions\/getchar.html\">getchar<\/a>();\n                if(tab[i][j]!='.'&amp;&amp;tab[i][j]!='*'&amp;&amp;tab[i][j]!='#') {\n                    pos.x=i;\n                    pos.y=j;\n                    switch (tab[i][j]) {\n                        case 'N':\n                            pos.prox_x=i-1;\n                            pos.prox_y=j;\n                            break;\n                        case 'S':\n                            pos.prox_x=i+1;\n                            pos.prox_y=j;\n                            break;\n                        case 'L':\n                            pos.prox_x=i;\n                            pos.prox_y=j+1;\n                            break;\n                        case 'O':\n                            pos.prox_x=i;\n                            pos.prox_y=j-1;\n                            break;\n                    }\n                }\n            }\n            <a href=\"http:\/\/www.opengroup.org\/onlinepubs\/009695399\/functions\/getchar.html\">getchar<\/a>();\n        }\n        <a href=\"http:\/\/www.opengroup.org\/onlinepubs\/009695399\/functions\/scanf.html\">scanf<\/a>(\"%s\", cmd);\n        for (i=0; i&lt;S; i++) {\n            switch (cmd[i]) {\n                case 'D':\n                    if (pos.prox_y==pos.y) {\n                        if (pos.prox_x&gt;pos.x) {\n                            pos.prox_x=pos.x;\n                            pos.prox_y=pos.y-1;\n                        }\n                        else {\n                            pos.prox_x=pos.x;\n                            pos.prox_y=pos.y+1;\n                        }\n                    }\n                    else {\n                        if (pos.prox_y&gt;pos.y) {\n                            pos.prox_y=pos.y;\n                            pos.prox_x=pos.x+1;\n                        }\n                        else {\n                            pos.prox_y=pos.y;\n                            pos.prox_x=pos.x-1;\n                        }\n                    }\n                    break;\n                case 'E':\n                    if (pos.prox_x==pos.x) {\n                        if (pos.prox_y&gt;pos.y) {\n                            pos.prox_y=pos.y;\n                            pos.prox_x=pos.x-1;\n                        }\n                        else {\n                            pos.prox_y=pos.y;\n                            pos.prox_x=pos.x+1;\n                        }\n                    }\n                    else {\n                        if (pos.prox_x&gt;pos.x) {\n                            pos.prox_x=pos.x;\n                            pos.prox_y=pos.y+1;\n                        }\n                        else {\n                            pos.prox_x=pos.x;\n                            pos.prox_y=pos.y-1;\n                        }\n                    }\n                    break;\n                case 'F':\n                    if (tab[pos.prox_x][pos.prox_y]!='#'&amp;&amp;(pos.prox_x&lt;L&amp;&amp;pos.prox_x&gt;-1)&amp;&amp;(pos.prox_y&lt;C&amp;&amp;pos.prox_y&gt;-1)) {\n                        if (tab[pos.prox_x][pos.prox_y]=='*') {\n                            tab[pos.prox_x][pos.prox_y]='.';\n                            fig++;\n                        }\n                        if (pos.prox_y==pos.y) {\n                            if (pos.prox_x&gt;pos.x) {\n                                pos.x=pos.prox_x;\n                                pos.prox_x++;\n&nbsp;\n                            }\n                            else {\n                                pos.x=pos.prox_x;\n                                pos.prox_x--;\n                            }\n                        }\n                        else {\n                            if (pos.prox_y&gt;pos.y) {\n                                pos.y=pos.prox_y;\n                                pos.prox_y++;\n&nbsp;\n                            }\n                            else {\n                                pos.y=pos.prox_y;\n                                pos.prox_y--;\n                            }\n                        }\n                    }\n                    break;\n            }\n&nbsp;\n        }\n        <a href=\"http:\/\/www.opengroup.org\/onlinepubs\/009695399\/functions\/printf.html\">printf<\/a>(\"%d\\n\", fig);\n    }\n    return 0;\n}<\/code><\/pre>\n\n\n\n<p>Experimente o c\u00f3digo em: <a href=\"https:\/\/ideone.com\/LwbdEH\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/ideone.com\/LwbdEH<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Um dos esportes favoritos na Robol\u00e2ndia \u00e9 o Rali dos Rob\u00f4s. Este rali \u00e9 praticado em uma arena retangular gigante de N linhas por M colunas de c\u00e9lulas quadradas. Algumas das c\u00e9lulas est\u00e3o vazias, algumas cont\u00eam figurinhas da Copa (muito apreciadas pelas intelig\u00eancias artificiais da Robol\u00e2ndia) e algumas s\u00e3o ocupadas por pilastras que sustentam o [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"class_list":["post-244","post","type-post","status-publish","format-standard","hentry","category-maratona-de-programacao"],"aioseo_notices":[],"amp_enabled":true,"_links":{"self":[{"href":"http:\/\/www.galirows.com.br\/meublog\/competir\/wp-json\/wp\/v2\/posts\/244","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.galirows.com.br\/meublog\/competir\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.galirows.com.br\/meublog\/competir\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/competir\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/competir\/wp-json\/wp\/v2\/comments?post=244"}],"version-history":[{"count":6,"href":"http:\/\/www.galirows.com.br\/meublog\/competir\/wp-json\/wp\/v2\/posts\/244\/revisions"}],"predecessor-version":[{"id":382,"href":"http:\/\/www.galirows.com.br\/meublog\/competir\/wp-json\/wp\/v2\/posts\/244\/revisions\/382"}],"wp:attachment":[{"href":"http:\/\/www.galirows.com.br\/meublog\/competir\/wp-json\/wp\/v2\/media?parent=244"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/competir\/wp-json\/wp\/v2\/categories?post=244"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/competir\/wp-json\/wp\/v2\/tags?post=244"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}