Apenas pessoas ligadas à universidade poderão concorrer (alunos, bolseiros, etc). Não é permitido qualquer tipo de ataque de negação de serviço, vulgo DoS. Não é permitido o acesso físico ao servidor (onde quer que esteja). Não é permitido, após aceder ao servidor, efetuar ataques a outros servidores. Não é permitido desligar o servidor ou impedir que outras equipas lá acedam.
E como não podia deixar de ser, temos não 1, não mais 2, mas sim 5!
5 desafios algorítmicos para ti durante esta semana. Usa a linguagem em que te sentes mais confortável e resolve os problemas.
Obtém o máximo de pontuação nos cinco problemas e obtém o teclado que tu precisas para aquelas noites duras de programação.
Podes já começar a trabalhar nas tuas soluções! As plataformas de submissão estão prestes a arrancar!!
Relembramos ainda que o primeiro desafio é o que contém o maior peso avaliativo!
Este é o desafio que te vai dar mais trabalho, podes até ter de suar um pouco, mas vai valer a pena! Este desafio pode te até valer 30 pontos!
Método de classificação - tempo de cpu, desempate por rapidez de submissão
O teu amigo do curso de electrónica está a montar um circuito e precisa da tua ajuda. O circuito que ele está a montar é constituido por fios e portas lógicas.
Cada fio tem um identificador (string de letras minúsculas) e recebe sinais representados por um inteiro sem sinal de 16 bits (número de 0 a 65535).
O sinal que chega a cada fio pode ser o output de uma porta lógica, o sinal de outro fio ou um valor inteiro passado directamente.
As portas lógicas apenas produzem output caso todos os seus inputs tenham um sinal.
O teu amigo deu-te as instruções de montagem do circuito e precisa da tua ajuda para descobrir qual o sinal que chega ao fio identificado pela string a.
Acede a pagina de submissões para mais informações.
Este desafio é um pouco mais simples e temos a certeza que qualquer um o poderá resolver, agora a melhor resposta....isso já é diferente, tenta a tua sorte! Este desafio pode te valer 10 pontos!
Método de avaliação - menor código possível (Code Golf), desempate por rapidez de submissão.
O C9-Beta é um robot em desenvolvimento.
Embora os seus criadores tenham muitas funcionalidades planeadas, a única coisa que este robot sabe fazer actualmente é mover-se para cima, para baixo, para a esquerda e para a direita.
Para testar a inteligência artificial do robot, foram feitos testes em que o robot era comandado a ir de um ponto A para um ponto B, sendo a inteligência artifical do robot responsável pelo conjunto de movimentos necessários para que isso aconteça.
Os testes foram um sucesso, o C9-Beta foi capaz de realizar os movimentos necessários para chegar de A a B em todas as experiências realizadas.
No entanto, a equipa responsável pelo robot notou que muitas das vezes o C9-Beta não escolhia o caminho óptimo para a sua rota.
Por exemplo, se imaginarmos que o robot se move numa matriz de pontos e que começa no ponto (0,0) e pretende chegar ao ponto imediatamente acima dele (0,1) o robot muitas vezes ia para a direita primeiro ficando no ponto (1,0), depois para cima (1,1), e depois para a esquerda onde chegava ao destino (0,1). Neste exemplo o robot gastou 3 movimentos, quando na verdade apenas precisava de ter gasto 1 (ir para cima directamente!).
Acede a pagina de submissões para mais informações.
Este desafio pode te dar 10 pontos!
Método de avaliação - menor código possivel (Code Golf), desempate por rapidez de submissão.
Na remota vila de Pelican é organizada anualmente uma corrida de resistência na qual todos os habitantes da vila podem participar.
Ao contrário de uma corrida habitual, não existe uma meta. Em vez disso, a corrida tem a duração de 30 minutos e o vencedor é aquele que nesse tempo tiver percorrido a maior distância.
Além disso, os habitantes da vila cansam-se rapidamente e por isso não podem passar os 30 minutos seguidos a correr!
Por exemplo, Abigail, a vencedora do ano passado é uma excelente corredora que consegue correr a uns impressionantes 3 m/s durante 40 segundos, mas ao fim desse tempo tem que parar completamente para descansar por 20 segundos. Ao fim desses 20 segundos pode voltar a corrar durante mais 40 segundos até ter que parar novamente.
Acede a pagina de submissões para mais informações.
Este desafio pode te dar 10 pontos!
Método de avaliação - menor código possível (Code Golf), desempate por rapidez de submissão.
Apesar de terem uma definição matemática formal, as sequências Look-and-say são interessantes pela forma informal como os seus números podem ser gerados.
Neste tipo de sequência, dado um número, o número seguinte na sequência é obtido pela forma como se diz o número actual da sequência.
Por exemplo, se considerarmos o número 112, facilmente se percebe que neste número há 2 ocorrências do número 1 e 1 ocorrência do número 2.
Ou seja podemos dizer que "há 2 uns e 1 dois" e portanto o número seguinte a 112 na sequência fica 2112 ("2 uns e 1 dois").
Para obter o número seguinte da sequência aplica-se o mesmo processo agora ao número 2112. Um aspecto a notar desta sequência é que o tamanho dos elementos(número de digitos) tende a crescer.
Por exemplo, se partindo do número 112 repetirmos o processo de look-and-say 40 vezes o número resultante tem 100.230 dígitos!
Acede a pagina de submissões para mais informações.
Este desafio pode te dar 10 pontos!
Método de avaliação - menor código possível (Code Golf), desempate por rapidez de submissão.
O algoritmo MD5 é geralmente usado como função de hash que pega num determinado conjunto de dados e devolve um digest de 32 caracteres.
Este algoritmo é usado geralmente para verificar a integridade de ficheiros. No entanto, muitas vezes é usado por alguns sites para armazenar passwords, embora tal prática seja altamente desaconselhada.
Estes sites em geral pegam na password que o utilizador indica no registo e em vez de guardarem a password directamente na base de dados guardam o digest MD5 da password.
Por exemplo, se um utilizador tiver como password a string 'password123', na base de dados é guardada a string '482c811da5d5b4bc6d497ffa98491e38', que corresponde ao digest MD5 da password do utilizador que neste caso é a string 'password123'.
Acede a pagina de submissões para mais informações.Um amigo teu administra um site que guarda as passwords usando MD5. Ele deu-te uma lista de passwords que muitas pessoas usam e que por isso são consideradas inseguras. Deu-te ainda acesso aos digest MD5 das passwords dos utilizadores do site. O que ele pretende saber é quantos utilizadores do site dele usam passwords consideradas inseguras.