Problema
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, omissingsi 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
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"].
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.