একটি সিকোয়েন্স দেওয়া থাকলে, সেটি ISBN নম্বর কিনা তা চিহ্নিত করতে হবে।
ISBN নম্বর কী?
ISBN মানে International Standard Book Number। ডিসেম্বর ২০০৬ পর্যন্ত এটি ১০ অঙ্কের ছিল এবং ১ জানুয়ারি ২০০৭ থেকে এটি ১৩ অঙ্কের করা হয়েছে। নিচে ১০ অঙ্কের ISBN-এর ইমপ্লিমেন্টেশন দেওয়া হলো।
ISBN ডিজিটের একটি প্যাটার্ন থাকে:
- শুরুয়ের ৯ অঙ্ক বইয়ের টাইটেল, পাব্লিশার এবং গ্রুপ প্রতিনিধিত্ব করে। প্রথম ৯ অঙ্কের মান ০-৯ এর মধ্যে হতে পারে
- শেষ ১ অঙ্ক ISBN সঠিক কিনা তা চেক করে। শেষ অঙ্কের মান ১০ হতে পারে এবং এটিকে 'X' চিহ্ন দিয়ে প্রকাশ করা হয়
কিভাবে চেক করবেন যে দেওয়া ১০ অঙ্কের নম্বর ISBN কিনা?
- সিকোয়েন্সের প্রথম ডিজিট থেকে শুরু করে ১০ দিয়ে গুণ করুন (কারণ ISBN ১০ অঙ্কের)
- পরবর্তী ডিজিটে যাওয়ার সাথে সাথে গুণক ১ কমিয়ে দিন
- সব গুণফল যোগ করুন
- ফলাফলকে ১১ দিয়ে ভাগ করুন
- ISBN চেক করার শর্ত
- যদি ফলাফল ১১ দিয়ে বিভাজ্য হয় (অর্থাৎ রিমেইন্ডার ০), তবে নম্বরটি ISBN
- যদি বিভাজ্য না হয় (রিমেইন্ডার ০ নয়), তবে ISBN নয়
উদাহরণ
Input: 002442142X Output: Not ISBN Input: 007462542X Output: it's ISBN
আলগরিদম
Start
Step 1 -> declare function to check for ISBN
bool isvalid(string &isbn_number)
set int n = isbn_number.length()
IF (n != 10)
return false
End
Set int sum = 0
Loop For int i = 0 and i < 9 and i++
Set int value = isbn_number[i] - '0'
If (0 > value || 9 < value)
return false
End
Set sum += (value * (10 - i))
End
Set char last_val = isbn_number[9]
IF (last_val != 'X' && (last_val < '0' || last_val > '9'))
return false
End
Set sum += ((last_val == 'X') ? 10 : (last_val - '0'))
return (sum % 11 == 0)
step 2 -> In main()
set string isbn_number = "002442142X"
IF (isvalid(isbn_number))
Print " is Valid"
End
Else
Print " is invalid"
End
Stop
C++ প্রোগ্রাম উদাহরণ
#include <bits/stdc++.h>
using namespace std;
//check whether its a valid ISBN or not
bool isvalid(string &isbn_number) {
int n = isbn_number.length();
if (n != 10)
return false;
int sum = 0;
for (int i = 0; i < 9; i++) {
int value = isbn_number[i] - '0';
if (0 > value || 9 < value)
return false;
sum += (value * (10 - i));
}
char last_val = isbn_number[9];
if (last_val != 'X' && (last_val < '0' || last_val > '9'))
return false;
sum += ((last_val == 'X') ? 10 : (last_val - '0'));
return (sum % 11 == 0);
}
int main() {
string isbn_number = "002442142X";
if (isvalid(isbn_number))
cout<
আউটপুট
002442142X is invalid