Difference between revisions of "Problema da caminhada perfeita"

From AdonaiMedrado.Pro.Br
Jump to: navigation, search
(Dificuldade Única)
(Dificuldade Única)
Line 8: Line 8:
 
*0 (zero) casa não ocupada.
 
*0 (zero) casa não ocupada.
  
Uma peça disposta neste tabuleiro executa uma caminha perfeita se é possivel que, em jogadas '''sucessivas''' (sem que exista movimento adversário), ela tome ("coma") todas as outras peças do tabuleiro sem que em nenhuma jogada deixe de tomar peça.
+
Uma peça disposta neste tabuleiro executa uma caminha perfeita se é possivel que, em jogadas '''sucessivas''', ela tome ("coma") todas as outras peças do tabuleiro sem que em nenhuma jogada deixe de tomar peça.
  
Considerando que só existirá no máximo uma peça de cada tipo no tabuleiro, faça uma classe de nome CaminhadaPerfeita com um método público VerificarExistencia que, recebendo uma matriz 8x8 de String, seja capaz de retornar um booleano indicando se existe ou não peça capaz de executar a caminhada perfeita.
+
Faça um programa que, recebendo uma matriz 8x8 (oito linhas de oito caracteres), seja capaz de retornar um V se existir uma peça capaz de executar uma caminhada perfeita ou F caso não exista.
  
 
=== Exemplo 1 ===
 
=== Exemplo 1 ===
 
==== Entrada ====
 
==== Entrada ====
  { {"0","0","0","0","0","0","0"},
+
  0000000
  {"0","C","0","0","0","0","0"},
+
0C00000
  {"0","0","0","0","0","0","0"},
+
0000000
  {"0","0","T","0","0","0","0"},
+
00T0000
  {"0","0","0","0","Q","0","0"},
+
0000Q00
  {"0","B","0","0","0","0","0"},
+
0B00000
  {"0","0","0","K","0","0","0"},
+
000K000
  {"0","0","0","0","0","0","0"} }
+
0000000
 
==== Saída ====
 
==== Saída ====
  true
+
V
 +
O cavalo é capaz de realizar uma caminhada perfeita.
  
 
=== Exemplo 2 ===
 
=== Exemplo 2 ===
 
==== Entrada ====
 
==== Entrada ====
  { {"0","0","0","0","0","0","0","0"},
+
  00000000
  {"0","T","0","0","0","0","0","0"},
+
0T000000
  {"0","0","0","0","0","0","0","0"},
+
00000000
  {"0","0","0","0","0","0","0","0"},
+
00000000
  {"0","0","0","0","Q","0","0","0"},
+
0000Q000
  {"0","0","0","K","0","0","0","0"},
+
000K0000
  {"0","0","B","0","0","0","0","0"},
+
00B00000
  {"0","C","0","0","0","0","0","0"} }
+
0C000000
 
==== Saída ====
 
==== Saída ====
  true
+
V
 +
O bispo é capaz de realizar uma caminhada perfeita.
  
 
=== Exemplo 3 ===
 
=== Exemplo 3 ===
 
==== Entrada ====
 
==== Entrada ====
  { {"0","0","0","0","0","0","0","0"},
+
  00000000
  {"0","0","0","0","0","0","0","0"},
+
00000000
  {"0","0","0","0","0","0","0","0"},
+
00000000
  {"0","0","0","0","0","0","0","0"},
+
00000000
  {"0","0","0","0","T","0","0","0"},
+
0000T000
  {"0","0","0","K","0","0","0","0"},
+
000K0000
  {"0","0","C","0","0","0","0","0"},
+
00C00000
  {"0","0","0","0","0","0","0","0"} }
+
00000000
 
==== Saída ====
 
==== Saída ====
  false
+
F

Revision as of 02:16, 8 July 2009

Dificuldade Única

Considere uma representação de um tabuleiro de Xadrez em uma matriz de String 8x8 e o seguinte padrão:

  • T para Torre (movimentam-se N casas na vertical e horizontal).
  • C para Cavalo (movimentam-se em L, um L por vez).
  • B para Bispo (movimentam-se N casas em diagonal).
  • Q para Rainha (movimentam-se N casas na vertical, horizontal e diagonal).
  • K para Rei (movimenta-se uma casa por vez na vertical, horizontal e diagonal).
  • 0 (zero) casa não ocupada.

Uma peça disposta neste tabuleiro executa uma caminha perfeita se é possivel que, em jogadas sucessivas, ela tome ("coma") todas as outras peças do tabuleiro sem que em nenhuma jogada deixe de tomar peça.

Faça um programa que, recebendo uma matriz 8x8 (oito linhas de oito caracteres), seja capaz de retornar um V se existir uma peça capaz de executar uma caminhada perfeita ou F caso não exista.

Exemplo 1

Entrada

0000000
0C00000
0000000
00T0000
0000Q00
0B00000
000K000
0000000

Saída

V

O cavalo é capaz de realizar uma caminhada perfeita.

Exemplo 2

Entrada

00000000
0T000000
00000000
00000000
0000Q000
000K0000
00B00000
0C000000

Saída

V

O bispo é capaz de realizar uma caminhada perfeita.

Exemplo 3

Entrada

00000000
00000000
00000000
00000000
0000T000
000K0000
00C00000
00000000

Saída

F