AED 2021/2022 (L.EIC011)

Mooshak #03 - Listas Pilhas e Filas
(semana de 22/11 a 26/11)


Nota Inicial

Os exercício do Mooshak desta aula não contam para nota e são completamente opcionais (a vossa prioridade deve ser primeiro completar os exercícios base das aulas práticas). Os exercícios aqui colocados destinam-se a quem quer ir mais além do que requisitos mínimos e quiser ter uma camada de submissão com avaliação automática, sendo que todas as semanas iremos colocar disponíveis novos problemas.

Para tornar tudo um pouco mais interessante, eu (Pedro Ribeiro) deixo desde já prometido que irei pagar uma refeição na minha companhia (uma francesinha no Capa Negra II) a três estudantes desta UC:

Espero para ver os vosses "dotes" algorítmicos ao longo destas semanas! :)


Problemas para submissão


Nesta unidade curricular vamos usar o sistema Mooshak como uma maneira opcional e adicional para avaliar automaticamente código.

Nesta aula foram disponibilizados os seguintes problemas:


Exercício 1) Um problema simples com listas

O primeiro problema é semelhante ao pedido na 5ª aula prática e envolve o conhecido jogo do "Pim Pam Pam" (Eeny, meeny, miny, moe, em inglês).


Exercício 2) Um problema com pilhas

O segundo problema é semelhante ao que foi explicado nas aulas téoricas e pede para implementarem um pequeno interpretador de RPN - Reverse Polish Notation)


Exercício 3) Um problema com filas um "pouco" mais complicado (mas não muito)


Exercício de Desafio

Para esta semana o desafio tem a ver com a eficiência algorítmica. Deve tentar resolver o seguinte problema, que está disponível para submissão no Mooshak (enunciado em inglês):

Este problema é semelhante ao [AED 09] Pim, Pam, Pum, mas com uma grande diferença que o torna (muito) mais complicado: o tamanho do círculo com pessoas a eliminar chega a 10 milhões, pelo que uma solução "bruta", que simule todos os passos, não irá ser suficientemente eficiente (passaria nos testes "pequenos", mas excederia o limite de tempo nos testes "grandes").

A Maratona Inter-Universitária de Programação (MIUP) é um concurso de programação universitário. A edição deste problema, a de 2015, foi ganha por uma equipa de alunos do DCC treinados pelo Prof. Pedro Ribeiro. A edição deste ano (2021) foi também ganha por alunos treinados pelo Prof. Pedro Ribeiro :)

Para este problema, vou apenas dizer que este estilo de "eliminação" é conhecida como Josephus problem. Se precisarem de mais dicas avisem. Fico à espera de ver os vossos programas :)