هر یک از ما از والدین زیستی خود مجموعهای از دستورالعملهای شیمیایی را به ارث میبریم که با نام DNA شناخته میشوند و بر نحوهی ساخت بدن ما تأثیر میگذارند. همهی حیات شناختهشده به DNA وابسته است!
نکته: برای انجام این تمرین نیازی نیست چیزی دربارهی نوکلئوتیدها یا DNA بدانید.
DNA زنجیرهای بلند از مواد شیمیایی دیگر است و مهمترین آنها چهار نوکلئوتید هستند: آدنین، سیتوزین، گوانین و تیمین. یک زنجیرهی DNA میتواند میلیاردها عدد از این چهار نوکلئوتید را در خود داشته باشد و ترتیبی که این نوکلئوتیدها در آن ظاهر میشوند مهم است! ما به ترتیب این نوکلئوتیدها در بخشی از DNA، «توالی DNA» میگوییم.
یک توالی DNA را به صورت مجموعهای مرتب از این چهار نوکلئوتید نمایش میدهیم و روشی رایج برای این کار، استفاده از رشتهای از کاراکترها است؛ مثلاً «ATTACG» برای یک توالی DNA با ۶ نوکلئوتید. «A» برای آدنین، «C» برای سیتوزین، «G» برای گوانین و «T» برای تیمین.
با داشتن رشتهای که یک توالی DNA را نمایش میدهد، بشمارید که از هر نوکلئوتید چند تا موجود است. اگر رشته شامل کاراکترهایی باشد که 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 ساخت.