ATENÇÃO: especificação de formato de entrada e saída do EP3

ATENÇÃO: especificação de formato de entrada e saída do EP3

por Alexandre da Silva Freire -
Número de respostas: 8
Olá, pessoal!

Hoje na monitoria alguns alunos perguntaram sobre o formato da
entrada/saída do EP3.

IMPORTANTE: peço a todos que fiquem atentos a estas instruções
(e às demais que venham a complementar e/ou corrigir esta), do contrário
a correção ficará mais difícil para nós monitores (além disso,
seguir esta especificação faz parte dos requisitos do EP).

Vamos padronizar da seguinte forma:


formato da entrada:
---------------------------

- para quem for implementar só o jogo padrão (32 peças e um espaço
vazio no meio do tabuleiro) não precisa ler nada da entrada.

- quem for implementar alguma variante (extra), use o formato que o
Carlinhos especificou: os dois primeiros dígitos são o número de
"linhas" e "colunas" do tabuleiro, respectivamente. Depois, cada uma
das "linhas" X "colunas" do tabuleiro contém um número 0, 1 e -1, em
que -1 significa "nada" (posição não existe no tabuleiro), 0 significa
"buraco" (dentro do tabuleiro) e 1 significa "peça". No caso do
tabuleiro usual, ficaria:

7 7
-1 -1 1 1 1 -1 -1
-1 -1 1 1 1 -1 -1
1 1 1 1 1 1 1
1 1 1 0 1 1 1
1 1 1 1 1 1 1
-1 -1 1 1 1 -1 -1
-1 -1 1 1 1 -1 -1

formato da saída:
------------------------

- de acordo com a observação (2) do enunciado "Pode ser que
seu programa fique durante algum tempo sem responder coisa
alguma, dando a impressão de ter entrado em loop. Utilize
impressões auxiliares para saber que seu programa ainda está vivo".

- após imprimir essas mensagens demonstrando que seu programa
"está vivo", seu programa deve imprimir uma sequência de movimentos
válidos (na ordem correta) que leve à configuração final (com apenas
uma peça no tabuleiro). O formato deve ser o seguinte: cada movimento
deve ser impresso em uma linha. Um movimento é representado por
uma tripla "(A, B, C)", indicando que a peça que estava na posição A foi
movimentada para a posição C e a peça que estava na posição B foi
retirada do tabuleiro. Use as coordenadas A3, ..., A5, B3, ..., B5,
C1, ..., C7, D1, ..., D7, E1, ..., E7, F3, ... F5, G3, ..., G5, conforme figura
mostrada no enunciado. Exemplo de saída:

(B4, C4, D4)
(E4, D4, C4)
(D2, D3, D4)
.
.
.


- no caso de quem implementar a parte extra (na qual o tabuleiro inicial
é dado pelo usuário) o programa deve imprimir a palavra IMPOSSIVEL
caso não seja possível chegar a uma configuração final através de
movimentos válidos.


Em resposta à Alexandre da Silva Freire

Re: ATENÇÃO: especificação de formato de entrada e saída do EP3

por Fernando Aluani -

Só uma idéia/opinião aqui:  seria possível deixar a saída, pelo menos a parte de movimentos, na forma:

Movimente B4 para DIREITA

Movimente E4 para ESQUERDA

Movimente D2 para BAIXO

.

.

.

Ou algo parecido? Ao meu ver é mais "fácil" para nós lendo entender o movimento assim do que com as triplas (A, B, C)... Talvez outras pessoas achem também...

Em resposta à Fernando Aluani

Re: ATENÇÃO: especificação de formato de entrada e saída do EP3

por Renato Augusto Vieira Nishimori -
Também preferi fazer assim, ficou mais fácil pra verificar no tabuleiro se está funcionando mesmo. Tenho que mudar pra esse outro?

Outra coisa, minha entrada pergunta se ele quer resolver o tabuleiro padrão ou um personalizado e depois se precisa terminar com a peça no meio ou não. Se escolher o personalizado, ele pega célula por célula até o fim. Então minha entrada está assim, por exemplo:

2 1 (tabuleiro personalizado, deve terminar no meio)

7 7 (linha coluna)
-1 -1 0 0 0 -1 -1
-1 -1 0 1 0 -1 -1
0 0 1 1 1 0 0
0 1 1 1 1 1 0
1 1 1 1 1 1 1
-1 -1 0 0 0 -1 -1
-1 -1 0 0 0 -1 -1 (celulas)

Tem problema se ficar assim?
Em resposta à Renato Augusto Vieira Nishimori

Re: ATENÇÃO: especificação de formato de entrada e saída do EP3

por Alexandre da Silva Freire -
ANTENÇÃO: o complemento da especificação do formato da entrada mostrado a seguir se aplica somente aos alunos que forem implementar a variente em que a peça deve terminar em uma posição específica do tabuleiro (lembrando que não é obrigatória a implementação desta variante).

Nesta variante em que a peça precisa terminar em uma posição específica, adicione um parâmetro no final da primeira linha da entrada informando qual é a posição (usando as coordenadas) ou o símbolo "*" caso queira indicar que a peça pode terminar em qualquer posição. Exemplo:

- para tabuleiro padrão e a peça pode terminar em qualquer posição:
7 7 *
-1 -1 1 1 1 -1 -1
-1 -1 1 1 1 -1 -1
1 1 1 1 1 1 1
1 1 1 0 1 1 1
1 1 1 1 1 1 1
-1 -1 1 1 1 -1 -1
-1 -1 1 1 1 -1 -1

- para tabuleiro padrão e a peça deve terminar no centro:
7 7 D4
-1 -1 1 1 1 -1 -1
-1 -1 1 1 1 -1 -1
1 1 1 1 1 1 1
1 1 1 0 1 1 1
1 1 1 1 1 1 1
-1 -1 1 1 1 -1 -1
-1 -1 1 1 1 -1 -1

- para uma dada configuração de tabuleiro (não padrão) e a peça deve terminar na posição G4:
7 7 G4
-1 -1 0 0 0 -1 -1
-1 -1 0 0 0 -1 -1
0 0 0 0 0 0 0
0 0 0 0 1 1 0
0 0 0 0 0 0 0
-1 -1 0 0 0 -1 -1
-1 -1 0 0 0 -1 -1

Essa última até meu carrocho resolve sorriso
Em resposta à Fernando Aluani

Re: ATENÇÃO: especificação de formato de entrada e saída do EP3

por Alexandre da Silva Freire -
Concordo que este formato é melhor, mas acho melhor martermos o formato que eu especifiquei, do contrário corremos o risco de ficar alterando a especificação toda hora. O que vocês podem fazer é imprimir como acharem melhor enquanto estiverem desenvolvendo, depois quando forem entregar o EP coloquem no formato padrão que eu especifiquei (não dá muito trabalho extra fazer isso).
Em resposta à Alexandre da Silva Freire

Re: ATENÇÃO: especificação de formato de entrada e saída do EP3

por Douglas Bettioli Barreto -
Alexandre,
desculpe prorrogar esse assunto que parece que já está cansando =P
Mas se eu não implementar os extras para tabuleiros diversos, mas quiser deixar a opção de deixar a peça final no centro necessariamente ou não, eu posso deixar uma mensagem "Deseja que a peça final esteja no meio? (S/N)" para que o usuário decida, respondendo S/N em forma de caracter mesmo?
Grato.
Em resposta à Douglas Bettioli Barreto

Re: ATENÇÃO: especificação de formato de entrada e saída do EP3

por Alexandre da Silva Freire -
Desculpem, a especificação não foi muito bem feita (não contempla todos os casos particulares), portanto a culpa dessa confusão toda não é de vocês (desculpem, mais uma vez).

Vamos fazer o seguinte: você estão livres para alterar o formato da entrada/saída conforme haja necessidade, porém o que estiver fora da especificação deve ser documentado de forma clara e sucinta (usem o bom senso!).



Em resposta à Alexandre da Silva Freire

Re: ATENÇÃO: especificação de formato de entrada e saída do EP3

por Rafael Reggiani Manzo -
Tem problema em trocar as letras por números? Uma solução para o tradicional que meu programa devolve é:

SOLUÇÃO!
(1.3, 2.3, 3.3)
(2.1, 2.2, 2.3)
(0.2, 1.2, 2.2)
(0.4, 0.3, 0.2)
(2.3, 2.2, 2.1)
(2.0, 2.1, 2.2)
(2.4, 1.4, 0.4)
(2.6, 2.5, 2.4)
(3.2, 2.2, 1.2)
(0.2, 1.2, 2.2)
(3.0, 3.1, 3.2)
(3.2, 2.2, 1.2)
(3.4, 3.3, 3.2)
(3.6, 3.5, 3.4)
(3.4, 2.4, 1.4)
(0.4, 1.4, 2.4)
(4.2, 3.2, 2.2)
(1.2, 2.2, 3.2)
(4.0, 4.1, 4.2)
(4.3, 4.2, 4.1)
(5.4, 4.4, 3.4)
(4.6, 4.5, 4.4)
(6.2, 5.2, 4.2)
(3.2, 4.2, 5.2)
(6.4, 6.3, 6.2)
(6.2, 5.2, 4.2)
(4.1, 4.2, 4.3)
(4.3, 4.4, 4.5)
(2.4, 3.4, 4.4)
(4.5, 4.4, 4.3)
(4.3, 5.3, 6.3)

Obrigado!
Em resposta à Rafael Reggiani Manzo

Re: ATENÇÃO: especificação de formato de entrada e saída do EP3

por Yuri Almeida -
Sinceramente eu não entendo porque os bixos questionam tanto se pode se não pode..

Não está especificado: pergunte!
Está especificado: TEM QUE SER ASSIM!

Enfim, depois do chilique uma dica:

era algo assim...

código: printf("SOLUÇÃO!\n (%d.%d,%d.%d,%d.%d)",xi,yi,xm,ym,xf,yf)
saída: SOLUÇÃO!
(1.3, 2.3, 3.3)

agora faça assim...

código: printf("SOLUÇÃO!\n (%c%d,%c%d,%c%d)",xi-1+'A',yi,xm-1+'A',ym,xf-1+'A',yf)
saída: SOLUÇÃO!
(A3, B3, C3)

Voilà!