MC102 - Algoritmos e Programação de Computadores
MC102 Horários Plano de
desenvolvimento
Cronograma Oferecimentos
anteriores

Amigos em comum

Submissões no período de 06 a 12 de julho só serão computadas para alun*s em recuperação de Média dos Laboratórios.


Você certamente já recebeu recomendação de novos amigos em redes sociais. A implementação desta funcionalidade muitas vezes estará baseada na suposição de que se dois usuários têm um ou mais amigos em comum em alguma rede, eles provavelmente também se conhecem pessoalmente ou via outras plataformas.

Nesta tarefa, iremos usar dicionários e os outros conceitos aprendidos na disciplina para, a partir de uma lista de usuários e amizades, calcularmos os amigos em comum para todos os pares de usuários na rede.

Descrição da entrada

A primeira parte da entrada conterá os nomes dos usuários, com um nome por linha. Esta lista será encerrada pelos caracteres --.

Gabriel
Beatriz
Guilherme
--

A segunda parte da entrada conterá pares de nomes que indicarão as relações de amizade. Note que um par <usuarioa> <usuariob> indica que <usuarioa> é amigo de <usuariob> e que <usuariob> é amigo de <usuarioa>, não sendo necessário registrar a amizade duas vezes. A lista de pares também será encerrada pelos caracteres --.

Gabriel Beatriz
Beatriz Guilherme
--

Você pode supor que não haverá repetição nos nomes na primeira parte da entrada e nem nas amizades. Além disso, todos os nomes que aparecem nas amizades foram apresentados na lista de usuários.

Apesar de a saída ter regras bem definidas de ordenação, os nomes dos usuários e as amizades na entrada não se encontram ordenados.

Descrição da saída

Para cada par de usuários na rede será apresentada a lista de amigos em comum entre eles no seguinte formato:

<usuarioa1> <usuariob1> : <amigo1>, <amigo2>, ..., <amigon>

Os pares serão listados em ordem alfabética de <usuarioai>. Além disso, para todo par <usuarioai> <usuariobi>, <usuarioai> deve preceder <usuariobi> na ordem alfabética. Finalmente, a lista de amigos em comum também deve estar em ordem alfabética.

Para o exemplo da seção anterior, a saída será:

Beatriz Gabriel :
Beatriz Guilherme :
Gabriel Guilherme : Beatriz

Note que quando a lista de amigos em comum for vazia a linha a ser impressa deve terminar pelo sinal :, sem espaços em branco extras.

Beatriz Gabriel :
Beatriz Guilherme :
Gabriel Guilherme : Beatriz

Testes com o SuSy

Esta tarefa terá 8 testes abertos e 2 testes fechados. Veja na tabela abaixo os testes 02, 03 e 05 e seus respectivos resultados. Consulte os outros testes e resultados no link Testes para a tarefa 11 de mc102 ou no arquivo aux11.zip

arq02.in arq02.res
Maria
Jacqueline
Caio
--
Maria Caio
Jacqueline Caio
Maria Jacqueline
--
Caio Jacqueline : Maria
Caio Maria : Jacqueline
Jacqueline Maria : Caio
arq03.in arq03.res
Luana
Arley
Gilberto
Rafaela
--
Luana Rafaela
Gilberto Rafaela
--
Arley Gilberto :
Arley Luana :
Arley Rafaela :
Gilberto Luana : Rafaela
Gilberto Rafaela :
Luana Rafaela :
arq05.in arq05.res
Rute
Jorge
Alice
Pedro
--
Rute Alice
Rute Pedro
Jorge Alice
Rute Jorge
Alice Pedro
--
Alice Jorge : Rute
Alice Pedro : Rute
Alice Rute : Jorge, Pedro
Jorge Pedro : Alice, Rute
Jorge Rute : Alice
Pedro Rute : Alice

Releia, se necessário, as instruções para fazer os testes em Testes com o SuSy.

Dicas de Python3 para esta tarefa

Orientações para submissão

Veja aqui a página de submissão da tarefa. O arquivo a ser submetido deve se chamar lab11.py. No link Arquivos auxiliares há um arquivo aux11.zip que contém todos os arquivos de testes abertos e seus respectivos resultados compactados.

O limite máximo será de 30 submissões. Serão considerados os resultados da última submissão.

O peso desta tarefa é 4.

O prazo final para submissão é 28/06/2020.

A nota desta tarefa é proporcional ao número de testes que executaram corretamente, desde que o código esteja coerente com o enunciado. A submissão de um código que não implementa o algoritmo requisitado, mas que exibe as saídas esperadas dos testes abertos a partir da comparação de trechos da entrada será considerada fraude e acarretará a atribuição de nota zero à média final da disciplina.


Os nomes utilizados nos exemplos foram selecionados aleatoriamente dentre os nomes não acentuados da lista de alunos matriculados nas turmas de MC102. Qualquer semelhança com amizades reais terá sido mera coincidência.

A imagem que ilustra esta tarefa foi obtida em kindpng.