Додайте початкові вправи


Коли вправу hello-world уже реалізовано, наступне завдання - реалізувати ще 20+ інших вправ.

Типи вправ

Існує два типи вправ, які можна реалізувати:

  • Концептуальні вправи: вони призначені навчати студента однієї або кількох концепцій. Перегляньте документацію, щоб дізнатися більше.
  • Практичні вправи: вони призначені для відпрацювання вивчених концепцій. Перегляньте документацію, щоб дізнатися більше.

Загалом новим трекам ми радимо починати з практичних вправ, бо їх простіше реалізувати і вони вимагають менше попередніх роздумів. Концептуальні вправи завжди можна додати пізніше, коли трек уже повноцінно працює.

Обираємо вправи

Щоб допомогти трекам реалізовувати практичні вправи, ми створили репозиторій exercism/problem-specifications. Цей репозиторій містить метадані для понад 100 практичних вправ, які різні треки можуть використовувати, щоб реалізувати власні версії цих вправ. Саме тому ті самі вправи трапляються в багатьох різних треках.

То як вибрати ті 20+ із цього списку з понад 100 вправ? Ось кілька порад.

Обираємо вправи, у яких студенти відпрацьовують найрізноманітніші концепції

У понад 100 вправах використовується дуже багато різних концепцій. Варто прагнути реалізовувати вправи, у яких студенти відпрацьовують найрізноманітніші концепції. Тож замість того, щоб реалізувати 20 вправ про рядки тексту, спробуймо реалізувати вправи на різні концепції.

Ось кілька концепцій із прикладами вправ:

Концепції Вправи
Побітові операції allergies, secret-handshake
Булеві значення (англ. Boolean) leap
Класи circular-buffer, robot-name
Конкурентність bank-account
Умовні конструкції raindrops
Дати й час gigasecond, meetup
Рівність clock
Числа з плаваючою комою darts, space-age
Лінивість alphametics, zebra-puzzle
Масиви resistor-color, spiral-matrix
Цикли collatz-conjecture, protein-translation
Словники nucleotide-count
Числа leap, grains
Випадковість dnd-character, robot-name
Рядки тексту (англ. string) bob, isogram,
Дерева binary-search-tree, pov

Обираємо вправи різного рівня складності

Деякі вправи реалізувати складніше, ніж інші. Варто реалізовувати вправи різного рівня складності: кілька легких, кілька середніх і кілька складних.

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

Ось кілька рівнів складності з прикладами вправ:

Складність Вправи
Легка darts, gigasecond, isogram, leap, resistor-color, space-age
Середня allergies, bob, meetup, protein-translation, raindrops, secret-handshake
Складна alphametics, forth, react, pov, zebra-puzzle, zipper

Обираємо вправи, що підходять для треку

Не всі вправи можуть підходити для треку. Варто обирати лише ті вправи, що підходять для треку: краще не реалізувати вправу, ніж реалізувати ту, яка не має сенсу. Наприклад, у вправі lens-person студент працює з лінзами, які підтримують не всі мови.

Якщо трапиться вправа, яка не підходить для треку, її слаг можна додати до масиву exercises.foregone у файлі config.json треку. Тоді інструментарій ігноруватиме цю вправу.

Приклад навчальної програми

Щоб усе це стало конкретнішим, ось як може мати вигляд приклад добірки початкових вправ:

Вправа Складність Концепції
hello-world Легка Немає (початкова вправа)
leap Легка Числа, булеві значення
gigasecond Легка Дати й час
isogram Легка Рядки тексту
resistor-color Легка Масиви
nucleotide-count Легка Словники
collatz-conjecture Легка Цикли
darts Легка Числа з плаваючою комою
two-fer Легка Форматування рядків тексту, необовʼязкові аргументи
high-scores Легка Опрацювання колекцій
raindrops Середня Умовні конструкції
bob Середня Рядки тексту
allergies Середня Побітові операції
series Середня Винятки
circular-buffer Середня Класи
meetup Середня Дати й час
yacht Середня Масиви
dominoes Складна Кортежі, лінивість
diamond Складна Форматування рядків тексту
alphametics Складна Лінивість
forth Складна Розбір

Реалізуємо вправи

Коли вправи, які хочеться включити до треку, вибрано, наступний крок - реалізувати їх. У документації про додавання практичної вправи докладно описано, як додати практичну вправу.