Volver a los desafíos
Fácil 0 resueltos 0% de aceptación

Una configuración compartida

Simula un objeto de configuración singleton: cada parte del programa lee y escribe la misma instancia.

Lo que aprenderás

  • Compartir un solo objeto en todo el programa
  • Crear la instancia en el primer uso
  • Leer y actualizar ajustes desde un único lugar

Problema

Ver original (inglés)

El patrón singleton asegura que una clase tenga exactamente una instancia que todos comparten, una elección común para la configuración de una aplicación.

Simula una configuración compartida que empieza vacía. Procesa las operaciones en orden:

  • set <key> <value>: guarda el valor para la clave (reemplazando cualquier valor anterior).
  • get <key>: lee el valor actual de la clave, o missing si nunca se estableció.

Como cada llamada usa la misma instancia, un valor establecido por una operación es visible para cualquier get posterior.

Implementa shared_configuration(operations).

Input

operations: Cadenas en las dos formas anteriores. Las claves y los valores no contienen espacios.

Output

Devuelve los resultados de las operaciones get, en orden.

Restricciones

1 ≤ número de operaciones ≤ 10,000

Las claves y los valores tienen de 1 a 20 caracteres

Ejemplos

Ejemplo 1
Entrada:
operations = ["set theme dark", "get theme", "get language"]

Salida esperada:
expected = ["dark", "missing"]
Entrada:
std::vector<std::string> operations = {"set theme dark", "get theme", "get language"};

Salida esperada:
std::vector<std::string> expected = {"dark", "missing"};
Entrada:
string[] operations = new string[] {"set theme dark", "get theme", "get language"};

Salida esperada:
string[] expected = new string[] {"dark", "missing"};

Explicación

theme se configuró como dark; language nunca se configuró, así que es missing: ["dark", "missing"].

Ejemplo 2
Entrada:
operations = ["set lang en", "set lang vi", "get lang"]

Salida esperada:
expected = ["vi"]
Entrada:
std::vector<std::string> operations = {"set lang en", "set lang vi", "get lang"};

Salida esperada:
std::vector<std::string> expected = {"vi"};
Entrada:
string[] operations = new string[] {"set lang en", "set lang vi", "get lang"};

Salida esperada:
string[] expected = new string[] {"vi"};

Explicación

El segundo set reemplaza el primer valor en la misma instancia compartida: ["vi"].

Cómo abordarlo

Inténtalo primero por tu cuenta y luego abre las pistas una a una.

Pista 1

Todas las operaciones leen y escriben el mismo objeto único.

Pista 2

Un diccionario de clave a valor basta para guardar los ajustes.

Pista 3

Una clave que nunca se configuró debe devolver el texto missing.

Complejidad esperada

tiempo O(número de operaciones), espacio extra O(número de claves)

Referencias

Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.

Aprende de otros

Soluciones de la comunidad

Aún no hay soluciones publicadas. Resuelve este reto para compartir la primera.