السلطان
  1. الرئيسية
  2. الأمثلة
  3. المجموعات

عد الكلمات بخريطة تجزئة مفاتيحها نصوص

collections/word_count.sn
// عد الكلمات بخريطة تجزئة مفاتيحها نصوص.
استورد std.io.println;
استورد std.text.number;
استورد std.text.transform;
استورد std.collections.text_index_map;

عرف الرئيسية(): عدد {
    دع الجملة: نص = "رأيت قطا ثم رأيت كلبا ثم رأيت عصفورا";
    دع الفاصل: نص = " ";
    دع الكلمات: متجه نص = قسم_النص(&الجملة, &الفاصل);
    دع التكرارات: متغير خريطة_نص_فهرس = أنشئ_خريطة_نص_فهرس();
    دع ف: متغير طبيعي = 0;
    طالما (ف < (الطول(الكلمات) مثل طبيعي)) {
        دع المرات: متغير طبيعي = 0;
        طابق ابحث_في_خريطة_نص_فهرس(&التكرارات, &الكلمات[ف]) مع
        | اختياري.موجود(حتى_الآن) -> { المرات := حتى_الآن; }
        | اختياري.لا_شيء -> { };
        طابق أدرج_في_خريطة_نص_فهرس(&متغير التكرارات, استنسخ(&الكلمات[ف]), المرات + 1) مع
        | نتيجة.نجح(_) -> { }
        | نتيجة.خطأ(_) -> { أرجع 1; };
        ف := ف + 1;
    }
    دع الكلمة_المطلوبة: نص = "رأيت";
    طابق ابحث_في_خريطة_نص_فهرس(&التكرارات, &الكلمة_المطلوبة) مع
    | اختياري.موجود(حتى_الآن) -> { اطبع_سطر(طبيعي_إلى_نص(حتى_الآن)); }
    | اختياري.لا_شيء -> { اطبع_سطر("0"); };
    اطبع_سطر(طبيعي_إلى_نص(طول_خريطة_نص_فهرس(&التكرارات)));
    أرجع 0;
}

التشغيل

بالمفسر، دون ترجمة:

./build/sultanc run examples/ar/collections/word_count.sn

أو ترجمه إلى ملف تنفيذي:

./build/sultanc examples/ar/collections/word_count.sn -o build/example && ./build/example

المصدر على GitHub   كل الأمثلة