// طابور ذو نهايتين: إضافة وأخذ من الطرفين.
استورد std.io.println;
استورد std.text.number;
استورد std.collections.deque;
عرف الرئيسية(): عدد {
دع السطر: متغير طابور_ذو_نهايتين<عدد> = أنشئ_طابور_ذو_نهايتين();
أضف_خلف_طابور_ذو_نهايتين(&متغير السطر, 2);
أضف_خلف_طابور_ذو_نهايتين(&متغير السطر, 3);
أضف_أمام_طابور_ذو_نهايتين(&متغير السطر, 1);
أضف_خلف_طابور_ذو_نهايتين(&متغير السطر, 4);
اطبع_سطر(طبيعي_إلى_نص(طول_طابور_ذو_نهايتين(&السطر)));
طابق خذ_من_أمام_طابور_ذو_نهايتين(&متغير السطر) مع
| اختياري.موجود(القيمة) -> { اطبع_سطر(عدد_إلى_نص(القيمة)); }
| اختياري.لا_شيء -> { };
طابق خذ_من_خلف_طابور_ذو_نهايتين(&متغير السطر) مع
| اختياري.موجود(القيمة) -> { اطبع_سطر(عدد_إلى_نص(القيمة)); }
| اختياري.لا_شيء -> { };
اطبع_سطر(طبيعي_إلى_نص(طول_طابور_ذو_نهايتين(&السطر)));
أرجع 0;
}// A double-ended queue: push and pop at both ends.
import std.io.println;
import std.text.number;
import std.collections.deque;
def main(): int {
let line: mutable deque<int> = new_deque();
deque_push_back(&mutable line, 2);
deque_push_back(&mutable line, 3);
deque_push_front(&mutable line, 1);
deque_push_back(&mutable line, 4);
println(uint_to_text(deque_length(&line)));
match deque_pop_front(&mutable line) with
| option.some(value) -> { println(int_to_text(value)); }
| option.none -> { };
match deque_pop_back(&mutable line) with
| option.some(value) -> { println(int_to_text(value)); }
| option.none -> { };
println(uint_to_text(deque_length(&line)));
return 0;
}
التشغيل
بالمفسر، دون ترجمة:
./build/sultanc run examples/ar/collections/deque.snأو ترجمه إلى ملف تنفيذي:
./build/sultanc examples/ar/collections/deque.sn -o build/example && ./build/example