Hamming

Hamming

آسان

مقدمه

بدن شما از سلول‌هایی تشکیل شده است که در خود DNA دارند. این سلول‌ها به‌طور منظم فرسوده می‌شوند و باید جایگزین شوند، و این کار را با تقسیم شدن به سلول‌های دختر انجام می‌دهند. در واقع، بدن یک انسان معمولی در طول عمرش حدود ۱۰ کوادریلیون تقسیم سلولی را تجربه می‌کند!

وقتی سلول‌ها تقسیم می‌شوند، DNA آن‌ها هم همانندسازی می‌کند. گاهی در این فرایند اشتباهاتی رخ می‌دهد و تکه‌های منفرد DNA با اطلاعات نادرست رمزگذاری می‌شوند. اگر دو رشته‌ی DNA را با هم مقایسه کنیم و تفاوت‌های میان‌شان را بشماریم، می‌توانیم ببینیم چند اشتباه رخ داده است. به این کار «فاصله‌ی همینگ» می‌گویند.

فاصله‌ی همینگ در بسیاری از حوزه‌های علوم، نه فقط زیست‌شناسی، کاربرد دارد؛ پس عبارت جالبی است که با آن آشنا باشید :)

دستورالعمل‌ها

فاصله‌ی همینگ میان دو رشته‌ی DNA را محاسبه کنید.

DNA را با حروف C، A، G و T می‌خوانیم. دو رشته ممکن است به این شکل باشند:

GAGCCTACTAACGGGAT
CATCGTAATGACGGCCT
^ ^ ^  ^ ^    ^^

این دو رشته ۷ تفاوت دارند و بنابراین فاصله‌ی همینگ برابر ۷ است.

نکته‌های پیاده‌سازی

فاصله‌ی همینگ فقط برای دنباله‌هایی با طول برابر تعریف می‌شود؛ پس تلاش برای محاسبه‌ی آن میان دنباله‌هایی با طول متفاوت نباید کار کند.

پیام‌های استثنا

گاهی لازم است یک استثنا ایجاد کنید. وقتی این کار را می‌کنید، باید همیشه یک پیام خطای معنادار هم بیاورید تا نشان دهید منشأ خطا چیست. این کار خوانایی code شما را بیشتر می‌کند و کمک چشمگیری به debugging می‌کند. در مواردی که می‌دانید منشأ خطا نوع مشخصی خواهد بود، می‌توانید یکی از انواع خطای داخلی را ایجاد کنید، اما باز هم باید پیام معناداری بیاورید.

این تمرین خاص می‌خواهد که با دستور raise وقتی رشته‌های در حال بررسی طول یکسانی ندارند، یک ValueError را «پرتاب» کنید. tests تنها زمانی قبول می‌شوند که هم exception را raise کنید و هم پیامی همراه آن بیاورید.

برای اینکه یک ValueError را همراه با پیام ایجاد کنید، پیام را به‌عنوان آرگومان به نوع exception بنویسید:

# When the sequences being passed are not the same length.
raise ValueError("Strands must be of equal length.")
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Python Exercism

آماده‌اید Hamming را شروع کنید؟

در Exercism ثبت‌نام کنید تا Python را همراه با 17 مفهوم146 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.