Треки
/
Julia
Julia
/
Вправи
/
Імʼя робота
Імʼя робота

Імʼя робота

Середня

Вказівки

Керуйте фабричними налаштуваннями робота.

Коли робот сходить з конвеєра фабрики, у нього немає імені.

Коли ми вперше вмикаємо робота, генерується випадкове імʼя у форматі двох великих літер, за якими йдуть три цифри, наприклад RX837 або BC811.

Час від часу нам потрібно скинути робота до фабричних налаштувань, а це означає, що його імʼя стирається. Наступного разу, коли ми запитаємо, робот відповість новим випадковим іменем.

Імена мають бути випадковими: вони не повинні йти у передбачуваній послідовності. Використання випадкових імен означає ризик збігів. Ваше рішення має гарантувати, що кожен наявний робот має унікальне імʼя.

Набір тестів стандартно генерує лише ~100 імен. Дійсних імен існує близько 700 тис., тож імовірність колізій невелика. Спробуйте перевірити своє рішення на колізії ще в якийсь спосіб, на додачу до набору тестів.

Ця вправа продовжує наше дослідження системи типів Julia, цього разу зі змінними типами, і знайомить нас із генерацією випадкових чисел.

Уявімо, що скидання робота до заводських налаштувань схоже на операцію: вона вносить зміни в пацієнта, але не замінює його. Ми могли б також змоделювати задачу так, що скидання робота створює нового робота, але не кожну задачу можна змоделювати самими лише незмінними структурами даних (навіть суто функціональні мови мають справу зі змінністю всередині своїх середовищ виконання!).

У Julia функції, які змінюють свої аргументи, за домовленістю мають суфікс !. Тож наш метод для цього буде називатися reset!.

Це лише домовленість, але майже весь опублікований код на Julia її дотримується, і ми можемо зрештою погодитися, що вона дуже корисна!

Підказки

Нам потрібно буде визначити метод для генерації унікальних імен, структуру для опису роботів, метод для скидання робота і метод для отримання імені робота.

Можливо, нам буде корисно спершу спроєктувати програму так, щоб вона просто видавала випадкове імʼя для робота (не переймаючись колізіями), а вже потім подумати над схемою, яка дозволить ніколи не видавати однакових імен. Під час проєктування варто поміркувати, як змінюється час виконання генерації імен у міру того, як імена вичерпуються. Які гарантії варто дати тому, хто викликає?


Джерело

Сеанс налагодження з Paul Blackwell у gSchool.
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Julia Exercism

Час розпочати Імʼя робота?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Julia, а також 35 концепцій128 вправ та справжнє наставництво від людей, і все це безкоштовно.