مسیرها
/
F#
F#
/
تمرین‌ها
/
اعتبارسنج ISBN
اعتبارسنج ISBN

اعتبارسنج ISBN

متوسط

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

از فرایند اعتبارسنجی ISBN-10 برای اعتبارسنجی شماره‌های شناسایی کتاب استفاده می‌شود. این شماره‌ها معمولاً خط تیره دارند و به این شکل‌اند: 3-598-21508-8

ISBN

قالب ISBN-10 شامل ۹ رقم (از ۰ تا ۹) به‌علاوه یک نویسه‌ی کنترلی است (که تنها یک رقم یا یک X است). اگر نویسه‌ی کنترلی X باشد، این نویسه نشان‌دهنده‌ی مقدار «۱۰» است. این شماره‌ها ممکن است با خط تیره یا بدون آن نوشته شوند و می‌توان اعتبارشان را با فرمول زیر بررسی کرد:

(d₁ * 10 + d₂ * 9 + d₃ * 8 + d₄ * 7 + d₅ * 6 + d₆ * 5 + d₇ * 4 + d₈ * 3 + d₉ * 2 + d₁₀ * 1) mod 11 == 0

اگر نتیجه ۰ باشد، ISBN-10 معتبر است؛ در غیر این صورت نامعتبر است.

مثال

بیایید ISBN-10 یعنی 3-598-21508-8 را در نظر بگیریم. آن را در فرمول جای می‌گذاریم و به این نتیجه می‌رسیم:

(3 * 10 + 5 * 9 + 9 * 8 + 8 * 7 + 2 * 6 + 1 * 5 + 5 * 4 + 0 * 3 + 8 * 2 + 8 * 1) mod 11 == 0

چون نتیجه ۰ است، این نشان می‌دهد که ISBN ما معتبر است.

وظیفه

برنامه با گرفتن یک رشته باید بررسی کند که آیا رشته‌ی داده‌شده یک ISBN-10 معتبر است یا نه. پیاده‌سازی این کار نیازمند کمی تأمل درباره‌ی پیش‌پردازش و تجزیه‌ی رشته پیش از محاسبه‌ی رقم کنترلی ISBN است.

برنامه باید بتواند ISBN-10 را هم با خط تیره‌های جداکننده و هم بدون آن‌ها بررسی کند.

نکات

تبدیل رشته به عدد در برخی زبان‌ها می‌تواند دشوار باشد. حالا این کار حتی دشوارتر هم شده است، چون رقم کنترلی یک ISBN-10 ممکن است X باشد (که نشان‌دهنده‌ی ۱۰ است). برای نمونه 3-598-21507-X یک ISBN-10 معتبر است.

ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
F# Exercism

آماده‌اید اعتبارسنج ISBN را شروع کنید؟

در Exercism ثبت‌نام کنید تا F# را همراه با 18 مفهوم148 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.