Recomendações Importantes
Parabéns! Você foi selecionado para trabalhar com engenheiro de segurança da ENCOM, maior império tecnológico atual. Entretanto a única vaga disponível é dentro do Grid, onde apenas os melhores programadores são convidadosa a entrar. Para alcançar essa honra, foi dado a você um desafio: criar um algoritmo de criptografia (T) que gere um código de acesso a partir de uma entrada N (0<N<128), e segue a seguinte formula, que mistura números primos com recursividade:
T(0) = 1;
T(N) = (N + (N-Ésimo Primo))*T(N-1);
“-s” encerra o programa.
Exemplo de entrada e saída:
1 // Entrada do usuárioCÓDIGO: 3.0 // Saída2 // Entrada do usuárioCÓDIGO: 15.0 // Saída5 // Entrada do usuárioCÓDIGO: 21120.0 // Saída10 // Entrada do usuárioCÓDIGO: 3.2451674112E11 // Saída50 // Entrada do usuárioCÓDIGO: 9.76519608045486E96 // Saída127 // Entrada do usuárioCÓDIGO: 6.058242152838519E306 // Saída-s// Entrada do usuário// Fim do programaExemplo de entrada e saída:
Player One name:FlynnPlayer Two name:CluGrid size:6B..................................OPlayer One turn (w,a,s,d): sB.....B............................OPlayer Two turn (w,a,s,d): wB.....B......................O.....OPlayer One turn (w,a,s,d): dB.....BB.....................O.....OPlayer Two turn (w,a,s,d): wB.....BB...............O.....O.....OPlayer One turn (w,a,s,d):Questão 3 - Users and programs
Após sua incrível vitória na batalha de Light Bikes, você finalmente foi reconhecido como um usuário e selecionado para criar um sistema de gerenciamento para o GRID.
Dentro do grid, todos são entidades, com identidade digital única, que por sua vez são classificados em: usuários e programas. Os usuários são humanos materializados dentro do Grid e possuem nome, login e senha. Programas possuem funções e são divididos dentre neutros, ISOs e bugs. Estes dois ultimos possuem Nivel de impacto N (0>N<=1).
O seu programa deve ser capaz de:
BEM VINDO AO GRID!1. GERENCIAMENTO DE ENTIDADES2. GERAR RELATORIO GRID0. SAIR1 // Entrada do usuárioGERENCIAMENTO DE ENTIDADES! // Saída1. ADICONAR2. BUSCAR3. EXCLUIR0. VOLTAR1// Entrada do usuárioDIGITE A IDENTIDADE DIGITAL: // Saída123 // Entrada do usuárioDEFINA O TIPO DA ENTIDADE: // Saída1. USUARIO2. PROGRAMA1 // Entrada do usuárioNOME: // SaídaLeonardo // Entrada do usuárioLOGIN: // Saídalas3 // Entrada do usuárioSENHA: // SaídaPsswrd // Entrada do usuárioCADASTRO EFEITUADO COM SUCESSO! // SaídaGERENCIAMENTO DE ENTIDADES!1. ADICONAR2. BUSCAR3. EXCLUIR0. VOLTAR1 // Entrada do usuárioDIGITE A IDENTIDADE DIGITAL: // Saída1234 // Entrada do usuárioDEFINA O TIPO DA ENTIDADE: // Saída1. USUARIO2. PROGRAMA2 // Entrada do usuárioCLASSE DO PROGRAMA: // Saída1. NEUTRO2. ISO3. BUG2 // Entrada do usuárioDEFINA A FUNÇÃO: // Saídair além // Entrada do usuárioDEFINA O NIVEL DE IMPACTO: // Saída1 // Entrada do usuárioCADASTRO EFEITUADO COM SUCESSO! // SaídaGERENCIAMENTO DE ENTIDADES!1. ADICONAR2. BUSCAR3. EXCLUIR0. VOLTAR1 // Entrada do usuárioDIGITE A IDENTIDADE DIGITAL: // Saída12345 // Entrada do usuárioDEFINA O TIPO DA ENTIDADE: // Saída1. USUARIO2. PROGRAMA2 // Entrada do usuárioCLASSE DO PROGRAMA: // Saída1. NEUTRO2. ISO3. BUG3DEFINA A FUNÇÃO: // Saídadar trabalho // Entrada do usuárioDEFINA O NIVEL DE IMPACTO: // Saída0,5 // Entrada do usuárioCADASTRO EFEITUADO COM SUCESSO! // SaídaGERENCIAMENTO DE ENTIDADES!1. ADICONAR2. BUSCAR3. EXCLUIR0. VOLTAR0 // Entrada do usuárioBEM VINDO AO GRID! // Saída1. GERENCIAMENTO DE ENTIDADES2. GERAR RELATORIO GRID0. SAIR2 // Entrada do usuárioRELATORIO GRID: // SaídaNIVEL DE ARMONIA: 50.5ENTIDADES:IDENTIDADE DIGITAL: 123NOME: LeonardoLOGIN: las3SENHA: psswrdSTATUS: ATIVOIDENTIDADE DIGITAL: 1234FUNCAO: ir alemNIVEL DE IMPACTO: 1.0IDENTIDADE DIGITAL: 12345FUNCAO: dar trabalhoNIVEL DE IMPACTO: 0.5BEM VINDO AO GRID!1. GERENCIAMENTO DE ENTIDADES2. GERAR RELATORIO GRID0. SAIR0// Entrada do usuário// Fim do programaQuestão 4 – Have you met MCP?
Os engenheiros de software da ENCOM estão preocupados com a segurança do seu servidor devido ao crescente número de tentativas de invasões que recebem diariamente, por este motivo eles decidiram que precisam otimizar o Programa de Controle Mestre (MCP) e por você ter acesso direto ao Grid (Afinal, você está dentro dele), você foi o escolhido.
Sua tarefa será criar um programa gerenciador de banco de ameaças, este programa deverá ter as seguintes funções.
1. Cadastrar uma nova ameaça.
2. Encerrar: deve exibir todas ameaças que foram cadastradas de acordo com a sua classificação e encerrar o programa.
Uma ameaça contém nívelPericulosidade, dataCriacao, nome e descricao.
Obs.: dataCriacao é do tipo Data que deve ser criado por você e contém dia, mês, ano e um método compareTo cujo retorno deve funcionar analogamente ao compareTo da classe String (Ler documentação).
A classificação de uma ameaça é dada pelos seguintes critérios(em caso de empate em um critério deve-se avaliar o critério seguinte)
1. nívelPericulosidade, ameaças mais perigosas são listadas antes.
2. dataCriacao, vírus mais novos são mais perigosos, ou seja, caso o nivelPericulosidade seja o mesmo, será exibido antes o que for mais recente.
3. Se mesmo após comparar as datas ainda persistir o empate, será exibido antes aquela cujo nome vier antes, lexicograficamente falando.
4. Se ainda tivermos um empate, será exibido aquela cuja descrição vier antes, lexicograficamente falando.
5. Tanto faz, eles são iguais, mas não precisa se dar ao trabalho de remover.
Facilitamos o seu trabalho e já encontramos a primeira ameaça, ela deve ser inserida no banco assim que o gerenciador for executado.
Nome: Regresso do monitorDescrição: Este ser passou um tempo longe, mas agora voltou para causar o caos novamente, tretas S2.Periculosidade: 8000Data: 20 / 08 / 2015Observações: seus amiguinhos de trabalho não gostam muito de você (recalcados por não terem conseguido entrar no Grid) e farão de tudo para fazer seu programa parar de funcionar, logo trate todos os possível erros que possam acontecer, caso o usuário tente digitar algum valor inválido, solicite que o mesmo digite o valor solicitado novamente.
O nível de periculosidade deve ser um inteiro positivo.
Trate todas as inconsistencias de data.
Bem vindo ao gerenciador de ameaçasEscolha a opção que deseja utilizar.1 - Cadastrar nova ameaça2 - Exibir ameaças e sair1Digite o nome da ameaça:RickDigite a descrição desta ameaça:Adepto ao tretismo.Digite o nível de periculosidade da ameaça:100Digite o dia em que a ameaça foi descoberta:25/08/2013Entrada invalida, digite um valor númerico:25Digite o mês em que a ameaça foi descoberta:08Digite o ano em que a ameaça foi descoberta:2015Ameaça cadastrada com sucesso!Escolha a opção que deseja utilizar.1 - Cadastrar nova ameaça2 - Exibir ameaças e sair1Digite o nome da ameaça:TigerDigite a descrição desta ameaça:CACiano do CInDigite o nível de periculosidade da ameaça:100Digite o dia em que a ameaça foi descoberta:32/08/2012Entrada invalida, digite um valor númerico:31Digite o mês em que a ameaça foi descoberta:08Digite o ano em que a ameaça foi descoberta:2013Ameaça cadastrada com sucesso!Escolha a opção que deseja utilizar.1 - Cadastrar nova ameaça2 - Exibir ameaças e sair1Digite o nome da ameaça:RossiDigite a descrição desta ameaça:MonizueiroDigite o nível de periculosidade da ameaça:-1O nível da ameaça deve ser um inteiro positivo.1Digite o dia em que a ameaça foi descoberta:32Digite o mês em que a ameaça foi descoberta:09Digite o ano em que a ameaça foi descoberta:2015A data esta incorreta!Digite o dia em que a ameaça foi descoberta:23Digite o mês em que a ameaça foi descoberta:09Digite o ano em que a ameaça foi descoberta:2015Ameaça cadastrada com sucesso!Escolha a opção que deseja utilizar.1 - Cadastrar nova ameaça2 - Exibir ameaças e sair2Regresso do monitor800024/8/2015Este ser passou um tempo longe, mas agora voltou para causar o caos novamente, tretas S2.Rick10025/8/2015Adepto ao tretismo.Tiger10031/8/2013CACiano do CInRossi123/9/2015MonizueiroQuestão 5 - Codified Likeness Utility
Kevin Flynn tentou invadir o servidor da ENCOM com seu alias CLU para encontrar provas da sabotagem que Dillinger armou para cima dele. Entretanto, CLU foi detectado pelo MCP e a tentativa falhou miseravelmente. Estudando os motivos de sua falha, Flynn viu que para obter sucesso na sua invasão CLU precisará de um upgrade. Como ele não tem tempo para implementar as novas funções chamou você, que já se tornou uma lenda dentro do Grid, para codificar essa melhoria.
Implemente as seguintes funções para tornar CLU capaz de executar a sua tarefa:
"$cat str str" -> concatena duas strings.
"$minus str str" -> retira, da primeira String do comando, os caracteres presentes na segunda String, caso existam.
"$plus str str" -> adicionam, logo após a ocorrência do caracter, na primeira String do comando a quantidade de vezes que esse caracter aparece na segunda String, caso existam.
"$invert str" -> inverte a String.
":$insert str ch" -> insere um caracter numa String, alternando os caracteres originais com os inseridos.
"$quit" -> encerra o programa
OBS: O reconhecimento de Strings é feito encontrando caracteres de aspas duplas ("), e o de caracteres por aspas simples (')
$cat "lalau" "10" // Entrada do usuário"lalau10" // Saída$minus "parede" "pipa" // Entrada do usuário"rede" // Saída$plus "parede" "pipa" // Entrada do usuário"pppaarede" // Saída$invert "pipa" // Entrada do usuário"apip" // Saída$nsert "parede" '*' // Entrada do usuário"p*a*r*e*d*e" // Saída$quit // Entrada do usuário// Fim do programaPerigo! Perigo!
As ameaças estão conseguindo migrar do mundo virtual para o mundo real e estão tentando acabar com a nossa comunicação, dando início ao que podemos chamar de terceira guerra mundial, desta vez entre máquinas e humanos, mas nós temos algo que elas não tem, você!
Para nossa sorte, alguns de nossos maiores especialistas conseguiram identificar seu algoritmo de locomoção, porém como ainda não sabemos como destruí-los, iremos apenas por algumas barreiras para atrasá-los.
É ai que você entra, você deve escrever um programa que diga onde cada barreira deve ficar.
Entrada: a primeira linha consistirá de um número(p) que será a quantidade de pontos, as próximas p linhas conterão cada uma dois valores(x, y) separados por um espaço em que representam as coordenadas do ponto em questão e uma última linha que será o coeficiente de variação(t).
1 < p <= 170
0 < x, y < 100
0 < t < 1
Saída: Uma única linha que contém dois valores correspondentes as coordenadas do ponto em que a barreira deve estar localizada.
Ah, quase esqueci, para saber calcular onde colocar este ponto use essa formula.
Onde:
n = número de pontos - 1
t = coeficiente de variação
Bi = Coordenada do i-ésimo ponto.
= n! / ( i! * ( n-i )! )
Observações:
Por causa da crise mundial, estamos com recursos limitados, logo você só poderá utilizar 1 laço no seu código que será para ler as entradas, em todo resto do programa deve-se usar recursão.
O programa será utilizado por usuários amigáveis, ou seja, todas entradas serão dadas no formato explicitado não precisando de validação de entrada.
Exemplo 1://entrada22 35 50,5//Saida3.54.0Exemplo 2://entrada22 35 50,7//saida4.14.4Exemplo 3://entrada52 220 3030 20100 34 2000,7//saida51.586656.83099999999999Exemplo 4://entrada103 7200 20050 151 125 3564 1099 6433 3369 96500 6000,3//saida56.0974638179999843.94346725499998Exemplo 5://entrada103 7200 20050 151 125 3564 1099 6433 3369 96500 6000,9//saida231.04095029400006278.287311265