К списку задач
Легко Решено: 0 Процент решений: 0%

Одна общая конфигурация

Смоделировать объект настроек в стиле singleton: каждая часть программы читает и записывает один и тот же экземпляр.

Чему вы научитесь

  • Использовать один объект во всей программе
  • Создавать экземпляр при первом обращении
  • Читать и менять настройки в одном месте

Условие

Паттерн singleton гарантирует, что у класса есть ровно один экземпляр, которым все пользуются; это распространённый выбор для настроек приложения.

Смоделируйте одну общую конфигурацию, которая изначально пуста. Обрабатывайте операции по порядку:

  • set <key> <value>: сохраните значение для ключа (заменяя любое старое значение).
  • get <key>: прочитайте текущее значение ключа или missing, если оно никогда не было задано.

Поскольку каждый вызывающий использует один и тот же экземпляр, значение, заданное одной операцией, видно во всех последующих get.

Реализуйте shared_configuration(operations).

Input

operations: Строки в двух формах выше. Ключи и значения не содержат пробелов.

Output

Верните результаты операций get в порядке их выполнения.

Ограничения

1 ≤ число операций ≤ 10,000

Ключи и значения длиной от 1 до 20 символов

Примеры

Пример 1
Ввод:
operations = ["set theme dark", "get theme", "get language"]

Ожидаемый вывод:
expected = ["dark", "missing"]
Ввод:
std::vector<std::string> operations = {"set theme dark", "get theme", "get language"};

Ожидаемый вывод:
std::vector<std::string> expected = {"dark", "missing"};
Ввод:
string[] operations = new string[] {"set theme dark", "get theme", "get language"};

Ожидаемый вывод:
string[] expected = new string[] {"dark", "missing"};

Пояснение

theme задан как dark; language не задавался, поэтому missing: ["dark", "missing"].

Пример 2
Ввод:
operations = ["set lang en", "set lang vi", "get lang"]

Ожидаемый вывод:
expected = ["vi"]
Ввод:
std::vector<std::string> operations = {"set lang en", "set lang vi", "get lang"};

Ожидаемый вывод:
std::vector<std::string> expected = {"vi"};
Ввод:
string[] operations = new string[] {"set lang en", "set lang vi", "get lang"};

Ожидаемый вывод:
string[] expected = new string[] {"vi"};

Пояснение

Второй set заменяет первое значение в том же общем экземпляре: ["vi"].

Как подступиться

Сначала попробуйте сами, затем открывайте подсказки по одной.

Подсказка 1

Все операции читают и пишут один и тот же объект.

Подсказка 2

Для настроек достаточно словаря из ключа в значение.

Подсказка 3

Для ключа, который ни разу не задавался, нужно вернуть текст missing.

Ожидаемая сложность

время O(число операций), доп. память O(число ключей)

Ссылки

Это задание адаптировано для CodeUtility. Следуйте условию и ограничениям выше.

Учитесь у других

Решения сообщества

Пока нет опубликованных решений. Решите задание, чтобы поделиться первым.