Você está na página 1de 2

Primeiro Trabalho de Ocina de Computa c ao Primeiro semestre de 2013

Aten c ao: Este trabalho e obrigat orio e dever a ser entregue, impreterivelmente, at e a semana de 13 a 17 de maio de 2013. A solu ca o e individual e dever a ser arquivada no diret orio ~<professor>/CI067/ onde ~<professor> deve ser ~alexd (para a TURMA C2) ou ~nicolui (para a TURMA A). O nome do arquivo ter a como prexo o seu nome-de-usu ario no sistema do laborat orio e, como extens ao, .c para indicar que seu conte udo possui um programa em C. Assim, por exemplo, se voc e e aluno da Turma C2 e o seu nome de usu ario no sistema e grs12 ent ao o nome do arquivo ser a grs12.c (dentro do diret orio ~alexd/CI067/). N ao se esque ca de proteger completamente o arquivo criado, de maneira a permitir a leitura do mesmo apenas por voc e! Isso deve ser feito aplicando chmod og-rwx grs12.c antes de efetuar a c opia com a preserva ca o das permiss oes (cp -p grs12.c ~alexd/CI067/). N ao se preocupe com as permiss oes do professor que ir a corrigir o trabalho. A corre ca o dos trabalhos ser a parcialmente automatizada, sendo assim, e importante que todos os arquivos com as solu co es individuais estejam no diret orio citado acima, dentro do prazo estipulado. O procedimento de entrega acima dever a ser feito em sala de aula, na presen ca do professor, nos dias estipulados no calend ario de avalia co es de cada turma. N ao ser a permitida a entrega do arquivo por e-mail. O Puzzle das Fichas: O Puzzle das Fichas e composto de uma r egua segmentada (tabuleiro) com casas e chas que podem ser movidas entre as casas. A Figura 1 mostra uma das poss veis congura co es de estado onde h a 2 chas brancas e 2 chas pretas em um tabuleiro de 5 casas.

Figura 1: Um estado de congura ca o de um tabuleiro com 5 casas e 4 chas. As regras de composi ca o e movimento s ao as seguintes: 1. A r egua e constitu da de n casas; 2. H a chas brancas e pretas que, somadas, totalizam n 1 chas; 3. Em uma dada congura ca o, as chas podem ocupar qualquer casa da r egua, cando sempre uma casa vazia; poss 4. E vel movimentar as chas na r egua de duas maneiras: a cha; Fazer com que uma cha deslize para a casa vazia, se a casa vazia for adjacente ` Fazer com que uma cha salte para uma casa vazia, se o salto ocorrer por cima de uma u nica cha. 5. Para resolver qualquer problema no Puzzle das Fichas, o objetivo e calcular e imprimir um u nico plano (mesmo que haja v arios!) para transformar uma congura ca o inicial (dada por meio da entrada padr ao) em uma congura ca o nal (tamb em dada como entrada) usando apenas as duas regras de movimento; 6. o plano n ao pode conter nenhuma repeti ca o de congura c oes intermedi arias entre os estados inicial e nal das chas; 7. O plano n ao pode conter nenhum movimento depois que todas as chas esiverem no estado nal. A Figura 2 mostra todas as 4 congura co es de estado diretamente atin veis (adjacentes) a partir da aplica ca o das duas regras de movimento. Fazer um programa em linguagem C para ler duas sequ encias de caracteres do teclado, as quais denem, respectivamente, as congura co es dos estados inicial e nal das chas. Ambas as sequ encias terminam com o caractere . (ponto, para indicar m). Antes do . cada sequ encia cont em uma quantidade arbitr aria de caracteres b e p. Al em desses, tamb em deve aparecer obrigatoriamente um, e somente um, caractere espa co em branco antes do . de termina ca o da leitura. Em total acordo com as regras acima, cada um dos caracteres lidos denota o seguinte: b: cha branca; p: cha preta;

salta

desliza

desliza

salta

Figura 2: Estados edjacentes de um tabuleiro com 5 casas e 4 chas. : casa vazia (espa co em branco). Ou seja, sem contar o ., a quantidade de caracteres lidos determina a quantidade de casas da r egua. Depois da leitura, o programa deve gerar o plano e imprim -lo na tela do computador. O formato de sa da do plano deve ser dividido em linhas, onde cada linha apresenta o tipo de movimento (salta ou desliza) seguido da congura ca o adjacente ` a da linha anterior. Para ilustrar a execu ca o do seu programa, veja o seguinte exemplo: ./grs12 Entre com o estado inicial: bb pp. Entre com o estado final: bp pb. desliza: _b bpp_ salta: _bpb p_ desliza: _bp bp_ desliza: _b pbp_ desliza: _ bpbp_ salta: _pb bp_ desliza: _p bbp_ salta: _pbb p_ desliza: _pbbp _ salta: _pb pb_ desliza: _p bpb_ desliza: _ pbpb_ salta: _bp pb_ importante voc es), o qual pode ser implementado por meio E e pesquisar sobre o conceito de retroa ca o (backtracking em ingl de uma fun ca o recursiva. Aten ca o, pois a retroa ca o e fundamentalmente diferente da retroalimenta ca o. A t tulo de ilustra ca o, a Figura 3 mostra, para um exemplo diferente, o fragmento das ramica co es que um processo retroativo sistem atico de localiza ca o pode realizar para resolver automaticamente o problema de montagem de um plano usando as duas regras de movimento das chas.

Figura 3: Fragmento das ramica co es do planejamento de um problema. N ao esque ca de elaborar o seu c odigo de forma modular e abstrata. Isso e importante. Bom trabalho!

Você também pode gostar