Uma equipe de uma biblioteca digital precisa reunir os resultados de K consultas já ordenadas. Cada consulta…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Reconhecer o conceito de metaprogramação como uma forma de generalização na construção de programas, permitindo que algoritmos sejam entrada ou saída para outros algoritmos.
Fonte: Base Nacional Comum Curricular (MEC).Questão
Uma equipe de uma biblioteca digital precisa reunir os resultados de K consultas já ordenadas. Cada consulta fornece uma lista de registros do tipo Registro, e as listas podem ter tamanhos diferentes. Para manter o programa reutilizável, a função deve receber um parâmetro comparador. Esse comparador recebe dois registros e retorna um número inteiro: valor negativo quando o primeiro deve aparecer antes do segundo, zero quando são equivalentes quanto à ordenação e valor positivo quando o segundo deve aparecer antes do primeiro. A função deve preservar essa ordem e produzir uma única lista com todos os registros. Com base no contrato descrito, qual assinatura representa corretamente uma função genérica que recebe K listas ordenadas de Registro e um comparador, mescla os elementos e devolve uma única lista ordenada?
- A) mergeK(listas: List<List<Registro>>, comparador: (Registro, Registro)->int) -> List<Registro>
- B) mergeK(listas: List<List<Registro>>, comparador: (Registro, Registro)->int) -> List<List<Registro>>
- C) mergeK(listas: List<List<Registro>>, comparador: (Registro)->int) -> List<Registro>
- D) mergeK(listas: List<List<Registro>>, comparador: int) -> List<Registro>
- E) mergeK(listas: List<Registro>, comparador: (Registro, Registro)->int) -> List<Registro>
✅ Resposta correta: alternativa A
Resolução passo a passo
- Identifique os requisitos do contrato: a função recebe K listas ordenadas de Registro (ou seja, uma lista de listas de Registro), recebe um comparador que compara dois registros e retorna um inteiro, e deve devolver uma única lista com todos os registros, ordenada.
- Verifique a entrada. O primeiro parâmetro precisa ser List<List<Registro>>, pois representa as K listas. A alternativa A declara exatamente isso.
- Verifique o comparador. Ele recebe dois registros e retorna int, o que corresponde à assinatura (Registro, Registro)->int. A alternativa A também está correta nesse ponto.
- Verifique o retorno. A função deve produzir uma única lista de registros, ou seja, List<Registro>. A alternativa A devolve List<Registro>, o que atende ao contrato.
- Conclusão. A alternativa A é a única que combina os três elementos corretamente. Por que as outras estão erradas: a B retorna uma lista de listas, quando o contrato pede uma única lista; a C define o comparador com um só parâmetro, enquanto a comparação exige dois registros; a D recebe um int no lugar do comparador; a E recebe uma lista de registros em vez de uma lista de listas, de modo que não representa K listas.
💡 Dica: Considere a estrutura de dados e a lógica de mesclagem.
Alternativa por alternativa
A entrada listas deve ser uma coleção de listas de Registro, pois a função mescla K listas. O comparador deve receber dois registros para decidir a ordem entre eles e retornar um inteiro com os três resultados previstos no contrato: negativo, zero ou positivo. A saída deve ser uma única List<Registro>, contendo os elementos das listas de entrada em ordem.
O aluno acredita que, por a entrada ser uma lista de listas, a saída também deve manter essa estrutura, sem perceber que o enunciado pede uma única lista com todos os registros.
Por que engana: Confundir o tipo de retorno da função, escolhendo uma alternativa que não devolve uma lista ordenada.
O aluno entende que o comparador precisa de apenas um parâmetro, talvez pensando em uma chave de ordenação, e não na comparação entre dois registros descrita no enunciado.
O aluno confunde o comparador, que é uma função que compara dois registros, com um valor inteiro, possivelmente imaginando que basta passar um número de referência para a ordenação.
O aluno lê K listas como uma única lista de registros, esquecendo que cada consulta fornece sua própria lista, o que exige um tipo de dois níveis.
Raio-X da questão
mesclagem de listas ordenadas
avaliacao
funções e parâmetros em programação · listas e estruturas de dados
Revisar algoritmos de mesclagem e estruturas de dados.
Confundir o tipo de retorno da função, escolhendo uma alternativa que não devolve uma lista ordenada.
ciencia_tecnologia
pensamento_critico
abstrato
Questões parecidas com resolução
- Em um projeto de monitoramento de rios, uma boia computacional organiza leituras de sensores antes de enviá-las por…
- Uma biblioteca escolar recebeu caixas de livros doados para uma feira de troca. Para registrar os exemplares, a equipe…
- Um centro cultural público oferece inscrições on-line para atividades com critérios variados. Na oficina de teatro…
- Uma escola está testando dois protótipos de aplicativo para que estudantes consultem mudanças de sala, horários e…
- Uma secretaria municipal de educação está digitalizando pedidos de transporte escolar e de atendimento em contraturno…
- — O cartaz não pode sair duas vezes, pois a feira começa em uma hora — alertou a coordenadora do centro cultural. No…
🔎 Procurar outra questão
Procure no banco do GeraProva pelo tema ou por um trecho do enunciado. Cada questão já vem com resolução comentada e a análise de cada alternativa.
Professor: monte a prova com questões como esta, com gabarito e folha de respostas, em 30 segundos. Ver planos · Blog
