// عد الكلمات بخريطة تجزئة مفاتيحها نصوص.
استورد std.io.println;
استورد std.text.number;
استورد std.text.transform;
استورد std.collections.text_index_map;
عرف الرئيسية(): عدد {
دع الجملة: نص = "رأيت قطا ثم رأيت كلبا ثم رأيت عصفورا";
دع الفاصل: نص = " ";
دع الكلمات: متجه نص = قسم_النص(&الجملة, &الفاصل);
دع التكرارات: متغير خريطة_نص_فهرس = أنشئ_خريطة_نص_فهرس();
دع ف: متغير طبيعي = 0;
طالما (ف < (الطول(الكلمات) مثل طبيعي)) {
دع المرات: متغير طبيعي = 0;
طابق ابحث_في_خريطة_نص_فهرس(&التكرارات, &الكلمات[ف]) مع
| اختياري.موجود(حتى_الآن) -> { المرات := حتى_الآن; }
| اختياري.لا_شيء -> { };
طابق أدرج_في_خريطة_نص_فهرس(&متغير التكرارات, استنسخ(&الكلمات[ف]), المرات + 1) مع
| نتيجة.نجح(_) -> { }
| نتيجة.خطأ(_) -> { أرجع 1; };
ف := ف + 1;
}
دع الكلمة_المطلوبة: نص = "رأيت";
طابق ابحث_في_خريطة_نص_فهرس(&التكرارات, &الكلمة_المطلوبة) مع
| اختياري.موجود(حتى_الآن) -> { اطبع_سطر(طبيعي_إلى_نص(حتى_الآن)); }
| اختياري.لا_شيء -> { اطبع_سطر("0"); };
اطبع_سطر(طبيعي_إلى_نص(طول_خريطة_نص_فهرس(&التكرارات)));
أرجع 0;
}// Counting words with a text-keyed hash map.
import std.io.println;
import std.text.number;
import std.text.transform;
import std.collections.text_index_map;
def main(): int {
let sentence: string = "the cat saw the dog and the bird";
let separator: string = " ";
let words: vector string = split(&sentence, &separator);
let counts: mutable text_index_map = new_text_index_map();
let i: mutable uint = 0;
while (i < (length(words) as uint)) {
let seen: mutable uint = 0;
match text_index_map_get(&counts, &words[i]) with
| option.some(so_far) -> { seen := so_far; }
| option.none -> { };
match text_index_map_insert(&mutable counts, clone(&words[i]), seen + 1) with
| result.ok(_) -> { }
| result.err(_) -> { return 1; };
i := i + 1;
}
let the_word: string = "the";
match text_index_map_get(&counts, &the_word) with
| option.some(so_far) -> { println(uint_to_text(so_far)); }
| option.none -> { println("0"); };
println(uint_to_text(text_index_map_length(&counts)));
return 0;
}
التشغيل
بالمفسر، دون ترجمة:
./build/sultanc run examples/ar/collections/word_count.snأو ترجمه إلى ملف تنفيذي:
./build/sultanc examples/ar/collections/word_count.sn -o build/example && ./build/example