مسیرها
/
Rust
Rust
/
تمرین‌ها
/
اعتبارسنج 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 این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Rust Exercism

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

در Exercism ثبت‌نام کنید تا Rust را همراه با 99 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.