ترميز فيبوناتشي (Zeckendorf)
اكتب أي عدد صحيح موجب برمز فيبوناتشي: العدد 6 هو 5 + 1، فيصبح 10011، وكل رمز ينتهي بـ 11 فيمكن تمييزه داخل تدفق من البيانات دون ذكر طوله. ويعمل الفك في الاتجاه المعاكس. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- القيمة
- 6
- وضع الحساب
- Encode
- المُدخَل
- 6
- الرمز
- 10011
- البتات
- 10011
- الطول
- 5
ترميز فيبوناتشي، ويُسمّى أيضًا ترميز Zeckendorf، يكتب كل عدد صحيح موجب كمجموع فريد من أعداد فيبوناتشي غير المتتالية ويحزم ذلك المجموع في سلسلة بتات ذاتية التحديد تنتهي دائمًا بالمُنهي 11. يحتاج الطلاب الذين يلتقون الرموز الشاملة لأول مرة، والمعلّمون الذين يبنون أوراكل للاختبارات، والمهندسون الذين يقارنون رموز Elias gamma وGolomb وفيبوناتشي إلى نفس الخريطة الحتمية في الاتجاهين: من العدد إلى البتات ومن البتات إلى العدد، مع فشل صريح عندما يكون الإدخال صفرًا أو سالبًا أو غير ثنائي أو ليس تخطيط Zeckendorf القانوني.
معنى تمثيل Zeckendorf وترميز فيبوناتشي
تنص مبرهنة Zeckendorf على أن لكل عدد صحيح موجب تمثيلًا فريدًا كمجموع أعداد فيبوناتشي لا يكون فيها حدّان متتاليين في المتتالية. تبدأ اتفاقية الترميز المعتادة المتتالية القابلة للاستخدام عند F2 يساوي 1 وF3 يساوي 2 وF4 يساوي 3 وF5 يساوي 5 وهكذا، مع تخطّي F1 المكرر يساوي 1 عمدًا حتى تكون الفرادة بلا لبس. لترميز n تختار بجشع أكبر عدد فيبوناتشي لا يتجاوز الباقي، ثم تتخطى الجار الأدنى التالي، وتكرر حتى يصبح الباقي صفرًا.
رمز فيبوناتشي هو إذن قناع البتات لتلك الحدود من F2 حتى أكبر حد مستخدم، مكتوبًا من الفهرس المنخفض إلى العالي، زائد 1 مُنهي إضافي. تثبت القيم الصغيرة الكلاسيكية النموذج الذهني: 1 يُرمَّز 11، و2 كـ 011، و3 كـ 0011، و4 كـ 1011، و5 كـ 00011، و6 كـ 10011.
أين يفيد ترميز فيبوناتشي عمليًا
تستخدم الفصول ومنصات MOOC حاسبة ترميز فيبوناتشي ليتحقق المتعلمون من واجبات Zeckendorf دون مسح جداول طويلة يدويًا ودون الخلط بين الرمز وأدوات math.fibonacci المنفصلة للحد النوني. تحتاج دورات البرمجة التنافسية ونظرية المعلومات إلى أوراكل ثنائي الاتجاه ينتج كلمة الرمز ويرفض السلاسل غير القانونية، بما يوافق مصححي المسابقات الذين يعدّون أي ترميز غير قانوني أو بحدود متتالية خطأ. يمكن لمهام جودة البيانات تخزين بادئات أعداد صحيحة مضغوطة ذاتية التحديد والتحقق منها لاحقًا بالفك وإعادة الترميز.
تستفيد مواقع التوثيق التي تستهدف ترتيبًا لترميز فيبوناتشي أو تمثيل Zeckendorf من ودجت حي يطابق مساره المجاني الأتمتة المدفوعة بايتًا ببايت. في كل سير عمل عامل الرمز الصالح كتغليف عدد صحيح حسن التكوين فقط، لا كمصادقة أو سرّية: ترميز فيبوناتشي رمز شامل شفاف وليس تشفيرًا. أبقِ القيم ضمن نطاق الأعداد الصحيحة الآمنة لهذا العامل من الطبقة A، وثبّت سلاسل الرمز المتوقعة في الاختبارات، فتحصل على encode وdecode حتميين للتعليم والتصحيح والأدوات الخفيفة دون بناء مكدس جبر حاسوبي خاص.
حالات الاستخدام
عروض ودفاتر للرموز الشاملة
قارن أطوال رمز فيبوناتشي مع بادئات Elias أو الأحادية لنفس الأعداد الصحيحة الموجبة في دفاتر تعليمية دون إعادة تنفيذ المسار الجشع في كل مرة.
بادئات أعداد صحيحة ذاتية التحديد
رمّز معرّفات موجبة صغيرة كسلاسل بتات فيبوناتشي تنتهي بـ 11، ثم فكّ وأعد الترميز في الأنابيب لضمان بقاء البادئات المخزّنة قانونية.
الأسئلة الشائعة
كيف أرمّز عددًا بترميز فيبوناتشي؟
اضبط mode على encode وvalue على عدد صحيح موجب.
كيف أفك رمز فيبوناتشي؟
اضبط mode على decode وvalue على سلسلة بتات 0/1 تنتهي بـ 11.
لماذا يجب أن تنتهي الرموز بـ 11؟
تضيف رموز فيبوناتشي 1 مُنهيًا بعد قناع بتات Zeckendorf؛ وأعلى حد مستخدم هو دائمًا 1، لذا تنتهي كل كلمة رمز صالحة بـ 11 وتكون ذاتية التحديد في تدفّق بتات.
لماذا لا يمكن ترميز الصفر بترميز فيبوناتشي؟
قاعدة زيكندورف تشمل الأعداد الصحيحة الموجبة فقط، والصفر ليس له مجموع من أعداد فيبوناتشي يُكتب. لذلك يُرفض الصفر والأعداد السالبة برسالة واضحة بدل إنتاج رمز مختلق.
لماذا يُرفض رمز فيه بتّان بقيمة 1 متتاليان قبل نهايته؟
البتّان المتجاوران بقيمة 1 يعنيان عددين متتاليين من أعداد فيبوناتشي، وهذا ما لا تستخدمه صيغة زيكندورف أبدًا. فهذه السلسلة ليست الرمز الصحيح لعددها، ولذلك يرفضها الفك بدل التخمين.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/enc/fibonacci-coding \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"mode":"encode","value":"6"}'const res = await fetch("https://api.kit.forhosting.com/enc/fibonacci-coding", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"mode": "encode",
"value": "6"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/fibonacci-coding",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"mode": "encode",
"value": "6"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/fibonacci-coding", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"mode":"encode","value":"6"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"mode":"encode","value":"6"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/fibonacci-coding", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"mode": "encode",
"value": "6"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.fibonacci_coding",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
تنفّذ هذه القدرة المسار القياسي F2=1 وF3=2 وF4=3 كمنطق parse نقي مشترك بين أداة المتصفح المجانية وواجهة KIT API، حتى لا تختلف فحوصات الواجبات وإضافات LMS وخطوط الإنتاج على كلمة رمز. تستهلك استدعاءات API الناجحة الرصيد المدفوع مسبقًا بالسعر الأساسي المنشور $0.002؛ ولا تُفوتر المدخلات غير الصالحة.
معنى تمثيل Zeckendorf وترميز فيبوناتشي
ولأن أعلى حد مستخدم يساهم دائمًا بـ 1 نهائي في الحمولة، ينتهي كل رمز صالح بالنمط ذي البتتين 11، فيصبح الرمز ذاتي التحديد في تدفّق بلا حقل طول منفصل. يعكس الفك المسار: أزل بت المُنهي الأخير، واجمع F2 وF3… حيث بتات الحمولة 1، ويمكن إعادة الترميز لإثبات أن السلسلة كانت تخطيط Zeckendorf القانوني لا مجموعًا بديلًا يستخدم أعداد فيبوناتشي متتالية. هذه الفرادة هي سبب شعبية ترميز فيبوناتشي في تعليم الرموز الشاملة وفي التصاميم التي تحتاج بادئات أعداد صحيحة متغيرة الطول بلا قاموس.
عقد الإدخال وشكل الاستجابة وأخطاء التحقق
يجب أن يكون mode هو encode أو decode (تُقبل الأسماء المستعارة op وaction وdirection). وmode decode وvalue 10011 يعطي value 6 بنفس التفكيك. التحقق الفاشل لا يستهلك الرصيد المدفوع مسبقًا. أرسل JSON عبر POST بحقلين إلزاميين. قيمة value للترميز عدد صحيح موجب كرقم JSON أو سلسلة أرقام فقط ضمن نطاق الأعداد الصحيحة الآمنة في JavaScript حتى 9007199254740991؛ يفشل الصفر والسوالب والكسور والأصفار البادئة في السلاسل متعددة الأرقام والنص غير الرقمي بـ invalid_input مع تسمية المشكلة. قيمة value للفك سلسلة بتات من الحرفين 0 و1 تنتهي بـ 11؛ تُزال المسافات أو الشرطات السفلية الاختيارية، لكن أي حرف آخر أو سلسلة فارغة أو رمز أطول من اللازم أو حمولة ببتات 1 متتالية أو تخطيط ليس إعادة الترميز القانونية للعدد المفكوك يُرفض. عند النجاح يعيد كلا الوضعَين mode والمدخل المُعاد وvalue كعدد صحيح وcode وbits كسلسلة فيبوناتشي وlength وzeckendorf كحدود من الأعلى إلى الأدنى وzeckendorf_sum كسلسلة عرض مثل 5+1 وfibonacci_indices كفهرس F لكل حد وalgorithm مضبوطًا على fibonacci_coding وrepresentation على Zeckendorf. مثال: mode encode وvalue 6 يعطي code 10011 مع zeckendorf 5 زائد 1.
أين يفيد ترميز فيبوناتشي عمليًا
غالبًا ما تقارن مسودات الضغط والترميز رموز فيبوناتشي مع Elias gamma والأحادي لأعداد صحيحة موجبة صغيرة؛ وواجهة API صغيرة تعيد الطول والحدود تجعل تجارب الدفاتر والعروض قابلة لإعادة الإنتاج.
حالات التكامل
فحوصات Zeckendorf للواجبات والامتحانات
يرسل الطلاب عددًا صحيحًا أو سلسلة بتات مرشحة؛ وتعيد API رمز فيبوناتشي القانوني والحدود، أو invalid_input عندما تكسر بتات 1 المتتالية قواعد Zeckendorf.
أسئلة تقنية
ما المدخلات المرفوضة؟
الصفر والسوالب وغير الأعداد الصحيحة وسلاسل الفك غير الثنائية والرموز بلا المُنهي 11 والحمولات ببتات 1 متتالية والتخطيطات غير القانونية تفشل كلها بـ invalid_input ولا تُفوتر.
ما تكلفة ترميز فيبوناتشي Zeckendorf؟
أداة المتصفح مجانية. تستخدم طلبات API رصيد KIT المدفوع مسبقًا بسعر $0.002 لكل استدعاء ناجح؛ ولا يستهلك الإدخال غير الصالح الرصيد.