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