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

مجموعة التجزئة تحفظ كل قيمة مرة واحدة

collections/set.sn
// مجموعة التجزئة تحفظ كل قيمة مرة واحدة.
استورد std.io.println;
استورد std.text.number;
استورد std.collections.set;

عرف هاش_عدد(القيمة: &عدد): طبيعي { أرجع ((*القيمة) مثل طبيعي) * 2654435761; }
عرف عددان_متساويان(اليسار: &عدد, اليمين: &عدد): منطقي { أرجع *اليسار == *اليمين; }

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

التشغيل

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

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

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

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

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