Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

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
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.