Menu
CoddyTech

Añadir a una lista: insert

Parte de la sección Lógica y Flujo del Journey de Dart de Coddy. Lección 4 de 65.

Cuando necesitas añadir un elemento en una posición específica de una lista, el método insert() te permite controlar con precisión dónde se coloca el nuevo elemento. A diferencia del método add(), que siempre añade elementos al final de una lista, insert() te permite colocar un elemento en cualquier posición que elijas.

El método insert() toma dos parámetros: la posición del índice donde quieres insertar el elemento y el elemento en sí. Cuando insertas un elemento, todos los elementos existentes en esa posición y más allá se desplazan una posición hacia la derecha.

List<String> tasks = ['Buy groceries', 'Walk the dog', 'Read a book'];

// Inserta una nueva tarea al principio (índice 0)
tasks.insert(0, 'Check emails');

print(tasks);  // ['Check emails', 'Buy groceries', 'Walk the dog', 'Read a book']

Este método es especialmente útil cuando importa el orden de los elementos, como en listas de prioridades, horarios o cualquier situación en la que necesites mantener una secuencia específica. La posibilidad de insertar en cualquier posición convierte a insert() en una herramienta potente para gestionar colecciones ordenadas.

challenge icon

Desafío

Fácil

Crea un programa que gestione un sistema de tareas prioritarias insertando tareas urgentes en posiciones específicas de una lista de tareas existente. Tu programa debe:

  1. Leer una entrada de cadena que represente el nombre de la lista de tareas
  2. Leer varias entradas de cadena que representen las tareas existentes (la entrada terminará cuando recibas una cadena vacía)
  3. Leer una entrada de cadena que represente una tarea urgente que se va a insertar
  4. Leer una entrada de número entero que represente la posición en la que se debe insertar la tarea urgente
  5. Usar el método insert() para agregar la tarea urgente en la posición especificada
  6. Imprimir la lista de tareas actualizada en el formato exacto que se muestra a continuación

Por ejemplo, si el nombre de la lista de tareas es "Work Schedule", las tareas existentes son "Review documents", "Team meeting", "Submit report", la tarea urgente es "Client call" y la posición es 1, tu programa debería mostrar:

Task List: Work Schedule
Original tasks: [Review documents, Team meeting, Submit report]
Inserted: Client call at position 1
Updated tasks: [Review documents, Client call, Team meeting, Submit report]
Total tasks: 4

Si el nombre de la lista de tareas es "Daily Goals", las tareas existentes son "Exercise", "Read book", la tarea urgente es "Buy groceries" y la posición es 0, tu programa debería mostrar:

Task List: Daily Goals
Original tasks: [Exercise, Read book]
Inserted: Buy groceries at position 0
Updated tasks: [Buy groceries, Exercise, Read book]
Total tasks: 3

Tu programa debe usar el método insert() para agregar la tarea urgente en la posición especificada. La posición ingresada siempre será un índice válido (entre 0 y la longitud de la lista de tareas existente).

FORMATO DE SALIDA REQUERIDO:

Pruébalo tú mismo

import 'dart:io';

void main() {
  // Lee el nombre de la lista de tareas
  String? taskListName = stdin.readLineSync();
  
  // Lee las tareas existentes hasta encontrar una cadena vacía
  List<String> tasks = [];
  while (true) {
    String? task = stdin.readLineSync();
    if (task == null || task.isEmpty) {
      break;
    }
    tasks.add(task);
  }
  
  // Lee la tarea urgente y la posición
  String? urgentTask = stdin.readLineSync();
  int position = int.parse(stdin.readLineSync()!);
  
  // Guarda las tareas originales antes de la inserción
  String originalTasks = tasks.toString();
  
  // TODO: Escribe tu código a continuación
  // Usa el método insert() para añadir la tarea urgente en la posición especificada
  
  // Imprime los resultados en el formato requerido
  print('Task List: $taskListName');
  print('Original tasks: $originalTasks');
  print('Inserted: $urgentTask at position $position');
  // Imprime las tareas actualizadas y el número total
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y Flujo

Practica por tu cuenta: Compilador de Dart online