مدقق خوارزمية لوهن
اعرف فورًا إن كانت سلسلة الأرقام تجتاز اختبار لوهن القائم على باقي القسمة على 10: الرقم 79927398713 يجتازه. يكشف أي رقم مكتوب خطأً ومعظم حالات تبديل رقمين متجاورين، دون أن يؤكد وجود الرقم فعلًا. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
يتحقق مدقق خوارزمية لوهن من توافق سلسلة رقمية مع صيغة المجموع الاختباري الشائعة بترديد 10. أرسلوا الأرقام كما تظهر تماماً، بما فيها الأصفار البادئة، لتحصلوا على نتيجة بسيطة توضح الصلاحية. لا تفحص هذه الإمكانية سوى المجموع الاختباري؛ فهي لا تحدد الجهة المصدرة، ولا تؤكد وجود حساب، ولا تتصل بأي خدمة خارجية. وترفض صراحةً أي مدخل يحتوي على محارف غير رقمية بدلاً من تنظيفه بصمت، مما يجعل الأتمتة قابلة للتوقع ويساعد على كشف أخطاء التنسيق قبل انتقالها إلى نظام آخر.
ما الذي تعنيه نتيجة لوهن فعلياً
يمثل مجموع لوهن الاختباري قاعدة موجزة لاكتشاف الأخطاء في سلاسل الأرقام العشرية. بدءاً من اليمين، تُبقي الخوارزمية رقم التحقق كما هو، وتضاعف كل رقم ثانٍ، وتطرح تسعة عندما ينتج عن المضاعفة عدد من خانتين، ثم تجمع القيم الناتجة. تكون السلسلة صالحة عندما يقبل المجموع القسمة على عشرة.
تكشف هذه الطريقة كل تغيير عرضي في رقم واحد وكثيراً من حالات تبديل رقمين متجاورين، ولذلك تفيد في اكتشاف أخطاء الكتابة والنسخ المعتادة. لكن النتيجة الصالحة لا تثبت أن الرقم قد صدر فعلاً، أو أنه يعود إلى شخص ما، أو أنه نشط، أو أنه يصلح لإجراء معاملة. إنها تعني فقط أن السلسلة المقدمة متوافقة داخلياً مع صيغة لوهن.
وهذا الفرق مهم في الواجهات ومسارات البيانات: اعرضوا النتيجة على أنها صلاحية للمجموع الاختباري، لا تحققاً من الهوية أو الحساب. يحافظ المدقق على تمثيل السلسلة، بما في ذلك الأصفار البادئة، ولا يحولها أبداً إلى رقم JavaScript؛ لذلك تظل المعرفات الطويلة دقيقة ولا تفقد خاناتها بسبب حدود الدقة العددية.
إعداد المدخل وفهم الأخطاء
أرسلوا القيمة في الحقل <code>number</code> كسلسلة غير فارغة لا تحتوي إلا على المحارف من صفر إلى تسعة. تُرفض المسافات والشرطات وعلامات الجمع والفواصل العشرية وفواصل الأسطر والحروف بوصفها مدخلاً غير صالح. هذا السلوك الصارم مقصود؛ فإزالة علامات التنسيق بصمت قد تخفي عيباً سابقاً في المصدر، أو تغير معنى بيانات منسوخة، أو توهم بتطابق نظامين رغم تلقيهما نصين مختلفين.
إذا عرض المصدر قيماً مجمعة، فطبّعوا التنسيق عمداً ضمن مساركم قبل استدعاء هذه الإمكانية، واحتفظوا بالقيمة الأصلية عندما يكون سجل التدقيق مهماً. لا تحولوا السلسلة إلى عدد صحيح أولاً، لأن ذلك قد يحذف الأصفار البادئة ويقرب القيم الطويلة. يعيد الاستدعاء الناجح دائماً كائناً يحوي حقلاً منطقياً اسمه <code>valid</code>.
تعني <code>true</code> أن المجموع يقبل القسمة على عشرة، بينما تعني <code>false</code> أن المدخل صحيح نحوياً لكنه أخفق في المجموع الاختباري. يختلف خطأ المدخل عن نتيجة عدم الصلاحية، وينبغي عادةً أن يؤدي إلى التصحيح أو المراجعة بدلاً من معالجته كرقم غير صالح فحسب.
استخدام التحقق الحتمي في التطبيقات
استخدموا هذا المدقق عند الحدود التي تدخل منها السلاسل الرقمية إلى النظام، مثل إرسال النماذج والاستيراد على دفعات والترحيل وإنشاء بيانات الاختبار واختبارات التكامل. في النماذج التفاعلية، شغّلوا نسخة المتصفح بعد اكتمال إدخال القيمة، ووضحوا أن الفحص يكشف الأخطاء المحتملة لكنه لا يثبت وجود حساب. وفي الاستيراد، عاملوا أخطاء المحارف كسجلات سيئة التنسيق، والنتائج غير الصالحة كسجلات سليمة التنسيق لا يتطابق مجموعها الاختباري.
يؤدي فصل الحالتين إلى تقارير أفضل ويحافظ على معلومات تشخيصية مفيدة. الخوارزمية حتمية، ولا تستخدم الشبكة، ولا تقرأ الساعة، ولا تولد قيماً عشوائية؛ لذلك ينتج المدخل نفسه دائماً المخرج نفسه. كما أنها لا تفرض طولاً أو بادئة خاصة بجهة مصدرة، بل تطبق الحساب نفسه على كل سلسلة أرقام غير فارغة.
إذا كان مجالكم يفرض طولاً أو بادئة أو تحققاً من الملكية أو الحالة الفورية، فطبقوا تلك القواعد بصورة منفصلة.
حالات الاستخدام
اكتشاف أخطاء الإدخال
افحصوا السلسلة عند إرسال النموذج وميزوا بين عدم تطابق المجموع ومدخل يحتوي على حروف أو علامات.
التحقق من الاستيراد المجمع
طبقوا القاعدة الحتمية نفسها على كل سجل وارد قبل تمريره إلى مراحل المعالجة التالية.
إنشاء بيانات اختبار موثوقة
تأكدوا من ثبات سلوك السلاسل الصالحة وغير الصالحة في اختبارات التكامل من دون الاعتماد على الشبكة.
الأسئلة الشائعة
ماذا تعني النتيجة الصالحة؟
تعني أن السلسلة تحقق مجموع لوهن الاختباري بترديد 10، ولا تؤكد الإصدار أو الملكية أو حالة الحساب أو إمكان إجراء معاملة.
هل يمكن أن يتضمن المدخل مسافات أو شرطات؟
لا. يجب أن يقتصر المدخل على الأرقام. طبّعوا القيم المنسقة صراحةً قبل إرسالها.
هل تُحفظ الأصفار البادئة؟
نعم. يعامل المدخل كسلسلة ولا يُحول أبداً إلى نوع عددي.
هل يشترط المدقق طولاً محدداً؟
لا. فهو يقيّم أي سلسلة أرقام غير فارغة، ويجب تطبيق قواعد الطول الخاصة بالمجال بصورة منفصلة.
كيف يُحسب مجموع التحقق في خوارزمية لوهن؟
ابدأ من اليمين، واترك الرقم الأخير كما هو، وضاعف رقمًا من كل رقمين بعده. إذا أعطت المضاعفة عددًا من رقمين فاطرح منه 9. ثم اجمع الكل: تكون السلسلة صالحة إذا قبل المجموع القسمة على 10.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/math/luhn \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"number":"79927398713"}'const res = await fetch("https://api.kit.forhosting.com/math/luhn", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"number": "79927398713"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/luhn",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"number": "79927398713"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/luhn", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"number":"79927398713"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"number":"79927398713"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/luhn", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"number": "79927398713"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.luhn",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
وتناسب العملية الحتمية الفحص اليدوي السريع وبيانات الاختبار والتحقق من عمليات الاستيراد ومسارات API القابلة للتكرار.
استخدام التحقق الحتمي في التطبيقات
تستخدم استدعاءات API السعر الأساسي المنشور وقدره $0.002.
أسئلة تقنية
ما تكلفة استدعاء API؟
يستخدم كل طلب السعر الأساسي المنشور وقدره $0.002. ويمكن لتجربة المتصفح تشغيل المنطق الحتمي نفسه محلياً.