Submeter | Todas submissőes | Melhores | Voltar |
DAMA - Dama |
O jogo de xadrez possui várias peças com movimentos curiosos: uma delas é a dama, que pode se mover qualquer quantidade de casas na mesma linha, na mesma coluna, ou em uma das duas diagonais, conforme exemplifica a figura abaixo:
O grande mestre de xadrez Kary Gasparov inventou um novo tipo de problema de xadrez: dada a posição de uma dama em um tabuleiro de xadrez vazio (ou seja, um tabuleiro 8 × 8, com 64 casas), de quantos movimentos, no mínimo, ela precisa para chegar em outra casa do tabuleiro?
Kary achou a solução para alguns desses problemas, mas teve dificuldade com outros, e por isso pediu que você escrevesse um programa que resolve esse tipo de problema.
Entrada
A entrada contem vários casos de teste. A primeira e única linha de cada caso de teste contém
quatro inteiros X1, Y1 , X2 e Y2
(1 <= X1 , Y1 , X2 , Y2 <= 8
). A dama começa na casa de coordenadas
(X1 , Y1
), e a casa de destino é a casa de coordenadas (X2 , Y2
). No tabuleiro, as colunas são
numeradas da esquerda para a direita de 1 a 8 e as linhas de cima para baixo também de 1 a
8. As coordenadas de uma casa na linha X e coluna Y são (X, Y
).
O final da entrada é indicado por uma linha contendo quatro zeros.
Saída
Para cada caso de teste da entrada seu programa deve imprimir uma unica linha na saída, contendo um número inteiro, indicando o menor número de movimentos necessários para a dama chegar em sua casa de destino.
Exemplo
Entrada 4 4 6 2 3 5 3 5 5 5 4 3 0 0 0 0 Saída 1 0 2
Adicionado por: | Wanderley Guimarăes |
Data: | 2008-10-25 |
Tempo limite: | 1s |
Tamanho do fonte: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Linguagem permitida: | Todas exceto: ASM64 CLOJURE ERL FSHARP JS-RHINO PERL6 PY_NBC SCALA TCL |
Origem: | Primeira fase da Maratona de Programação - 2008 |
hide comments
2015-07-07 23:20:09 Jorgiano Vidal
É uma pena que algumas pessoas coloquem aqui a resposta do problema, eliminando o mesmo do conjunto de testes usados por contests locais e/ou exercícios em disciplinas de programação. |
|
2015-03-22 19:07:53 JuniiorMastter
[Java] int verificarMovimento(int x1, int y1, int x2, int y2){ int movimentos = 2; // Na vertical se o x1 e o x2 forem iguais e o y1 e y2 forem diferentes; boolean vertical = (x1 == x2 && y1 != y2); // Na horizontal se o x1 for diferente que x2 e y1 , y2 forem iguais; boolean horizontal = (x1 != x2 && y1 == y2); // Na diagonal se o valor absoluto (Modulo) de x1 - x2 for igual // ao valor absoluto de y1 - y2. boolean diagonal = (Math.abs(x1-x2) == Math.abs(y1 - y2)); // A rainha esta parada quando x1 for igual x2 e y1 tambem for igual a y2 if (x1 == x2 && y1 == y2){ movimentos = 0; }else if (vertical == true || horizontal == true || diagonal == true){ movimentos = 1; } return movimentos; } |
|
2012-09-07 14:20:34 Diego do Nascimento
Last edit: 2012-09-07 23:45:51 |