Керуйте фабричними налаштуваннями робота.
Коли робот сходить з конвеєра фабрики, у нього немає імені.
Коли ми вперше вмикаємо робота, генерується випадкове імʼя у форматі двох великих літер, за якими йдуть три цифри, наприклад RX837 або BC811.
Час від часу нам потрібно скинути робота до фабричних налаштувань, а це означає, що його імʼя стирається. Наступного разу, коли ми запитаємо, робот відповість новим випадковим іменем.
Імена мають бути випадковими: вони не повинні йти у передбачуваній послідовності. Використання випадкових імен означає ризик збігів. Ваше рішення має гарантувати, що кожен наявний робот має унікальне імʼя.
Імена роботів можуть закінчитися. Коли всі можливі імена роботів уже розподілено, потрібно повернути помилку.
Коли go test почне проходити, ми побачимо, що в наборі тестів є тест із назвою TestCollisions, який типово пропущено, бо він може виконуватися довго.
Цей тест створює нових роботів, доки не залишиться нових імен, які можна присвоїти роботу.
Щоб тест запустився, видаліть цей рядок:
t.Skip("skipping test as it can take a long time to run if solution is sub-optimal.")
Щоб цей тест пройшов, потрібно подбати про те, щоб імʼя робота раніше не використовувалося, і про те, щоб імена розподілялися ефективно.
Зареєструйтеся на Exercism, щоб вивчати й опановувати Go, а також 34 концепції165 вправ та справжнє наставництво від людей, і все це безкоштовно.