Difference between revisions of "Problema do decifrador de senhas"

From AdonaiMedrado.Pro.Br
Jump to: navigation, search
(Dificuldade Única)
(Instrução para linguagem C)
 
(5 intermediate revisions by 2 users not shown)
Line 8: Line 8:
 
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.
 
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.
+
== Instrução para linguagem C ==
 +
Faça um programa que receberá 9 cadeias de caracteres do mesmo tamanho. Cada bloco de 3 cadeias conterá as letras das "teclas" gráficas pressionadas pelo usuário com relaçao a uma letra da senha.
 +
 
 +
O primeiro bloco de 3 cadeias irá conter as teclas pressionadas com relação à primeira letra da senha, o segundo bloco as teclas pressionadas com relação à segunda e o terceiro bloco as teclas pressionadas com relação à terceira letra da senha.
 +
 
 +
O programa deverá retornar 1 caso seja possível identificar (sem sombra de dúvidas) quais as letras da senha e 0 caso contrário.
 +
 
 +
===== Exemplo 1 =====
 +
====== Entrada ======
 +
MNAU
 +
LACN
 +
AKIM
 +
IKJH
 +
ILKC
 +
JKBM
 +
MUDH
 +
ADIK
 +
HUDM
 +
 
 +
====== Saída ======
 +
1
 +
(Senha: AKD)
 +
 
 +
===== Exemplo 2 =====
 +
====== Entrada ======
 +
HJMI
 +
OPJH
 +
AJMO
 +
MIUN
 +
ABCI
 +
IJKB
 +
ONHK
 +
LOUN
 +
UODN 
 +
 
 +
====== Saída ======
 +
0
 +
(Senha: JI(O ou N))
 +
 
 +
== Instrução para linguagem C++/Java/C# ==
 +
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 à 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.
 
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 ====
+
===== Exemplo 1 =====
===== Entrada =====
+
====== Entrada ======
  {"","",""},{"","",""},{"","",""}
+
{ "MNAU", "LACN", "AKIM" }, { "IKJH", "ILKC", "JKBM" },{ "MUDH", "ADIK", "HUDM" }
 +
 
 +
====== Retorno ======
 +
true
 +
(Senha: AKD)
 +
 
 +
===== Exemplo 2 =====
 +
====== Entrada ======
 +
  { "HJMI", "OPJH", "AJMO" },{ "MIUN", "ABCI", "IJKB" },{ "ONHK", "LOUN", "UODN" }
  
===== Retorno =====
+
====== Retorno ======
  {"","",""},{"","",""}
+
  false
 +
(Senha: JI(O ou N))

Latest revision as of 16:19, 17 July 2009

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.

Instrução para linguagem C

Faça um programa que receberá 9 cadeias de caracteres do mesmo tamanho. Cada bloco de 3 cadeias conterá as letras das "teclas" gráficas pressionadas pelo usuário com relaçao a uma letra da senha.

O primeiro bloco de 3 cadeias irá conter as teclas pressionadas com relação à primeira letra da senha, o segundo bloco as teclas pressionadas com relação à segunda e o terceiro bloco as teclas pressionadas com relação à terceira letra da senha.

O programa deverá retornar 1 caso seja possível identificar (sem sombra de dúvidas) quais as letras da senha e 0 caso contrário.

Exemplo 1
Entrada
MNAU
LACN
AKIM
IKJH
ILKC
JKBM
MUDH
ADIK
HUDM
Saída
1

(Senha: AKD)

Exemplo 2
Entrada
HJMI
OPJH
AJMO
MIUN
ABCI
IJKB
ONHK
LOUN
UODN   
Saída
0

(Senha: JI(O ou N))

Instrução para linguagem C++/Java/C#

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 à 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
{ "MNAU", "LACN", "AKIM" }, { "IKJH", "ILKC", "JKBM" },{ "MUDH", "ADIK", "HUDM" }
Retorno
true

(Senha: AKD)

Exemplo 2
Entrada
{ "HJMI", "OPJH", "AJMO" },{ "MIUN", "ABCI", "IJKB" },{ "ONHK", "LOUN", "UODN" };   
Retorno
false

(Senha: JI(O ou N))