Difference between revisions of "Problema do decifrador de senhas"

From AdonaiMedrado.Pro.Br
Jump to: navigation, search
(New page: == Dificuldade Única == Um determinado banco fornece aos seus clientes, além da senha numérica, uma senha de 3 letras que deve ser utilizada no caixa eletrônico na realização de oper...)
 
(Dificuldade Única)
Line 13: Line 13:
  
 
==== Exemplo 1 ====
 
==== Exemplo 1 ====
===== Entrada ====
+
===== Entrada =====
  {"","",""},{"","",""}
+
  {"","",""},{"","",""},{"","",""}
  
===== Retorno ====
+
===== Retorno =====
 
  {"","",""},{"","",""}
 
  {"","",""},{"","",""}

Revision as of 08:30, 15 October 2008

Dificuldade Única

Um determinado banco fornece aos seus clientes, além da senha numérica, uma senha de 3 letras que deve ser utilizada no caixa eletrônico na realização de operações. O software do caixa eletrônico, para dificultar a ação de ladrões, solicita a entrada da senha de 3 letras em um "teclado" gráfico especial gerado aleatoriamente todas as vezes e exibido na tela do monitor.

Neste teclado, cada uma das teclas contém uma quantidade de 4 letras distintas. Para digitar a senha, o usuário deve escolher em ordem as teclas que contenham as letras da sua senha. Por exemplo, sendo a senha ABC e existindo as teclas MNAU, ILKC, JIYB e OKLM o usuário deve pressionar as teclas MNAU, JIYB e ILKC nesta ordem.

Um contraventor observou determinados usuários do banco durante várias operações no caixa eletrônico e anotou as teclas pressionadas durante a operação. O banco, que grava a cada operação as teclas pressionadas pelo usuário, foi informado da atuação de tal criminoso e deseja fazer um programa para saber de quais clientes é necessário bloquear a senha.

As senhas bloqueadas serão aquelas que, a partir das teclas pressionadas, o contraventor é capaz de saber, sem sombra de dúvida, qual é a senha de 3 letras do cliente.

Faça uma classe ProblemaDoBanco com um método público PrecisaBloquear que receberá como parâmetro 3 String[] de mesmo tamanho. Cada um dos parâmetros conterá as letras das "teclas" gráficas pressionadas pelo usuário. Assim, o primeiro parâmetro irá conter as teclas pressionadas com relação à primeira letra da senha, o segundo as teclas pressionadas com relação à segunda e o terceiro as teclas pressionadas com relação a terceira letra da senha.

Este método retornará um booleano, false caso não seja possível identificar (sem sombra de dúvidas) quais as letras da senha e true caso contrário.

Exemplo 1

Entrada
{"","",""},{"","",""},{"","",""}
Retorno
{"","",""},{"","",""}