1
resposta

[Projeto] Revelando mensagens

List<char> caracteres = new List<char> { 'o', 'd', 'n', 'u', 'm', ' ', 'á', 'l', 'o' };

caracteres.Reverse();

foreach (var item in caracteres)
{
    Console.WriteLine(item);
}
1 resposta

Olá, Eduardo. Como vai?

Excelente código! Sua resolução está corretíssima e demonstra que você compreendeu muito bem a mecânica do método Reverse(). Ao aplicar a inversão na lista de caracteres 'o', 'd', 'n', 'u', 'm', ' ', 'á', 'l', 'o', a coleção passa a ter o fluxo invertido de leitura, revelando perfeitamente a mensagem escondida "olá mundo".

Como o objetivo do seu código é exibir a mensagem na tela, separei duas dicas técnicas que vão te ajudar a melhorar o formato de saída do texto no console e a explorar novos recursos do C#:


1. Exibindo a mensagem em uma única linha

Do jeito que o código está estruturado com o Console.WriteLine(item), o terminal vai imprimir cada letra em uma linha diferente (verticalmente).

Para que o texto seja exibido de forma natural (horizontalmente) como uma frase completa, você tem duas opções simples:

  • Opção 1: Mudar de Console.WriteLine() para Console.Write(), que imprime os caracteres um ao lado do outro sem pular linha:
foreach (var item in caracteres)
{
    Console.Write(item);
}
  • Opção 2 (Mais elegante): Instanciar uma nova string passando a lista invertida direto no construtor. Isso converte a coleção de caracteres em um texto comum de forma direta e muito performática:
string mensagem = new string(caracteres.ToArray());
Console.WriteLine(mensagem); // Imprime: olá mundo

2. Alternativa com LINQ (AsEnumerable().Reverse())

Nos desafios anteriores, conversamos sobre como o método .Reverse() altera a lista original permanentemente (chamamos isso de operação in-place).

Se em um projeto real você precisasse descobrir a mensagem oculta, mas não pudesse modificar a ordem da lista original caracteres, você poderia usar o LINQ. O método .Reverse() do LINQ gera uma nova sequência invertida na memória sem mexer na estrutura inicial:

using System.Linq;

// Cria uma cópia invertida sem alterar a lista 'caracteres'
foreach (var item in caracteres.AsEnumerable().Reverse())
{
    Console.Write(item);
}

Parabéns por mais essa entrega prática e por dominar com tanta consistência a manipulação de coleções de dados no C#!

Espero que possa ter lhe ajudado!