Кожен із нас успадковує від своїх біологічних батьків набір хімічних вказівок, відомий як ДНК, що впливає на те, як побудоване наше тіло. Усе відоме життя залежить від ДНК!
Примітка: щоб виконати цю вправу, не потрібно розуміти нічого про нуклеотиди чи ДНК.
ДНК - це довгий ланцюг інших хімічних речовин, найважливіші з яких - чотири нуклеотиди: аденін, цитозин, гуанін і тимін. Один ланцюг ДНК може містити мільярди цих чотирьох нуклеотидів, і порядок, у якому вони розташовані, має значення! Порядок цих нуклеотидів у певній ділянці ДНК ми називаємо «послідовністю ДНК».
Ми подаємо послідовність ДНК як упорядкований набір із цих чотирьох нуклеотидів, а поширений спосіб зробити це - записати рядок тексту (англ. string), наприклад «ATTACG» для послідовності ДНК із 6 нуклеотидів. «A» означає аденін, «C» - цитозин, «G» - гуанін, «T» - тимін.
Дано рядок тексту, що задає послідовність ДНК: порахуйте, скільки є кожного з нуклеотидів. Якщо рядок тексту містить символи, які не є A, C, G або T, тоді він неправильний, і слід повідомити про помилку.
Наприклад:
"GATTACA" -> 'A': 3, 'C': 1, 'G': 1, 'T': 2
"INVALID" -> error
Трапляються випадки, коли потрібно впоратися з непередбаченими проблемами, які виникають під час виконання коду. У Dart для цього можна використовувати винятки.
Щоб викинути виняток у Dart, використайте ключове слово throw, за яким іде примірник конкретного винятку, який потрібно згенерувати.
Наприклад, throw Exception() викидає примірник базового типу Exception.
У цій вправі потрібно визначити власний виняток із назвою InvalidNucleotideException.
Цей виняток слід викидати, коли трапляється некоректний нуклеотид.
Набір тестів перевіряє лише те, що передано примірник InvalidNucleotideException, тож реалізувати його можна на власний розсуд, аби лише його було правильно викинуто.
Докладніше про винятки в Dart читайте в документації про винятки. Власні винятки можна створити, реалізувавши інтерфейс Exception.