Menu
Coddy logo textTech

Invertendo uma Lista

Parte da seção Lógica & Fluxo do Journey de Dart da Coddy — lição 3 de 65.

Às vezes, você precisa visualizar os elementos de uma lista em ordem inversa. O Dart fornece a propriedade .reversed que cria uma visualização invertida da sua lista sem alterar a lista original.

A propriedade .reversed retorna um iterável que apresenta os elementos da lista em ordem inversa. Isso significa que o último elemento aparece primeiro, o penúltimo aparece em segundo e assim por diante.

List<int> numbers = [1, 2, 3, 4, 5];

var reversedNumbers = numbers.reversed;
print(reversedNumbers);  // (5, 4, 3, 2, 1)

// A lista original permanece inalterada
print(numbers);  // [1, 2, 3, 4, 5]

Um detalhe importante é que .reversed retorna um iterável, não uma lista. Se você precisar trabalhar com ele como uma lista, você pode convertê-lo usando .toList(). Esta propriedade é particularmente útil quando você precisa processar dados em ordem inversa enquanto mantém sua lista original intacta.

challenge icon

Desafio

Fácil

Crie um programa que analise uma lista de leitura exibindo os livros tanto na ordem original quanto na ordem invertida. Seu programa deve:

  1. Ler uma entrada de string representando o título da lista de leitura
  2. Ler múltiplas entradas de string representando títulos de livros (a entrada terminará quando você receber uma string vazia)
  3. Usar a propriedade .reversed para criar uma visualização invertida da lista de livros
  4. Imprimir a análise da lista de leitura no formato exato mostrado abaixo

Por exemplo, se o título da lista de leitura for "Summer Reading" e os livros forem "1984", "To Kill a Mockingbird", "The Great Gatsby", seu programa deve exibir:

Reading List: Summer Reading
Books in original order: (1984, To Kill a Mockingbird, The Great Gatsby)
Books in reversed order: (To Kill a Mockingbird, The Great Gatsby, 1984)
Total books: 3

Se o título da lista de leitura for "Quick Reads" e apenas um livro "Animal Farm" for fornecido, seu programa deve exibir:

Reading List: Quick Reads
Books in original order: (Animal Farm)
Books in reversed order: (Animal Farm)
Total books: 1

Seu programa deve usar a propriedade .reversed para exibir os livros em ordem inversa. Lembre-se que .reversed retorna um iterável, portanto, quando você o imprimir, ele será exibido com parênteses em vez de colchetes.

Folha de consulta

Use a propriedade .reversed para visualizar os elementos da lista em ordem inversa sem modificar a lista original:

List<int> numbers = [1, 2, 3, 4, 5];

var reversedNumbers = numbers.reversed;
print(reversedNumbers);  // (5, 4, 3, 2, 1)

// A lista original permanece inalterada
print(numbers);  // [1, 2, 3, 4, 5]

A propriedade .reversed retorna um iterável, não uma lista. Para convertê-la de volta para uma lista, use .toList().

Experimente você mesmo

import 'dart:io';

void main() {
  // Leia o título da lista de leitura
  String? title = stdin.readLineSync();
  
  // Leia os títulos dos livros até encontrar uma string vazia
  List<String> books = [];
  String? book;
  while ((book = stdin.readLineSync()) != null && book!.isNotEmpty) {
    books.add(book);
  }
  
  // TODO: Escreva seu código aqui
  // Use a propriedade .reversed para criar uma visualização invertida da lista de livros
  // Imprima a saída no formato exigido
  
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica & Fluxo