Difference between revisions of "Problema do decifrador de senhas"
(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...) |
(→Instrução para linguagem C) |
||
| (6 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 | + | == 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
Contents
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))