المسارات
/
Julia
Julia
/
التمارين
/
تسلّل أنالين
تسلّل أنالين

تسلّل أنالين

تمرين تعلّمي

مقدمة

القيم المنطقية في Julia

تُمثَّل القيم التي تكون إما صحيح أو خطأ بنوع Bool. وهو يحتوي على قيمتين فقط: true و false.

julia> true
true

julia> false
false

العوامل المنطقية

توجد ثلاثة عوامل منطقية في Julia.

&& هو العامل المنطقي «و». وتكون قيمته true إذا كان التعبيران على كلا جانبي && يساويان true.

julia> true && true
true

julia> true && false
false

|| هو العامل المنطقي «أو». وتكون قيمته true إذا كان أحد التعبيرين على أحد جانبي || يساوي true.

julia> true || true
true

julia> false || true
true

! هو العامل المنطقي «ليس». وهو يبدّل القيمتين true و false.

julia> !true
false

julia> !false
true

للتعبيرات الأطول والأكثر تعقيدًا، من الأفضل استخدام الأقواس الهلالية لتوضيح قصدك.

julia> (true || false) && (false && true)
false

التعليمات

في هذا التمرين، ستكتب بعض المنطق البرمجي للعبة فيديو يطوّرها أحد أصدقائك. الشخصية الرئيسية في اللعبة هي أنالين، فتاة شجاعة لديها كلب أليف شرس ومخلص. وللأسف، تقع الكارثة عندما تُختطف صديقتها المقرّبة بينما كانت تبحث عن التوت في الغابة. ستحاول أنالين العثور على صديقتها وتحريرها، ويمكنها أن تأخذ كلبها معها في هذه المهمة.

تجد أنالين في النهاية المخيم الذي تُحتجز فيه صديقتها، وتبيّن أن هناك خاطفَين: فارسًا جبارًا وراميًا ماكرًا.

تُعرض على اللاعب بعض الخيارات لما يمكن فعله بعد ذلك. ولكل خيار من الخيارات الأربعة الممكنة، عليك كتابة دالة تخبر اللعبة ما إذا كان ينبغي إظهار ذلك الخيار أم لا.

1. التحقق مما إذا كان ينبغي إظهار خيار 'Fast Attack'

إذا كان الفارس نائمًا، فستتمكن أنالين من شن هجوم سريع على المخيم قبل أن يستيقظ تمامًا ويرتدي درعه.

نفّذ دالة باسم can_do_fast_attack تأخذ قيمة منطقية تشير إلى ما إذا كان الفارس مستيقظًا. تُرجع هذه الدالة true إذا كان إجراء 'Fast Attack' متاحًا بناءً على حالة الشخصية، وإلا فتُرجع false:

julia> knight_awake = true

julia> can_do_fast_attack(knight_awake)
false

2. التحقق مما إذا كان ينبغي إظهار خيار 'Spy'

يمكن التجسس على المجموعة إذا كان أحد أفرادها مستيقظًا على الأقل. وإلا فالتجسس مضيعة للوقت.

نفّذ دالة باسم can_spy تأخذ ثلاث قيم منطقية تشير، على الترتيب، إلى ما إذا كان الفارس والرامي والسجينة مستيقظين. تُرجع الدالة true إذا كان إجراء 'Spy' متاحًا بناءً على حالة الشخصيات، وإلا فتُرجع false:

# Output suppressed from the next 3 lines
julia> knight_awake = false
julia> archer_awake = true
julia> prisoner_awake = false

julia> can_spy(knight_awake, archer_awake, prisoner_awake)
true

3. التحقق مما إذا كان ينبغي إظهار خيار 'Signal Prisoner'

يمكن إعطاء السجينة إشارة بأصوات الطيور إذا كانت مستيقظة والرامي نائم. أما إذا كان الرامي مستيقظًا، فلا يمكن إعطاؤها إشارة بأمان لأن الرامي مدرّب أيضًا على إشارات الطيور.

نفّذ دالة باسم can_signal_prisoner تأخذ قيمتين منطقيتين تشير، على الترتيب، إلى ما إذا كان الرامي والسجينة مستيقظين. تُرجع الدالة true إذا كان إجراء 'Signal Prisoner' متاحًا بناءً على حالة الشخصيات، وإلا فتُرجع false:

julia> archer_awake = false
julia> prisoner_awake = true

julia> can_signal_prisoner(archer_awake, prisoner_awake)
true

4. التحقق مما إذا كان ينبغي إظهار خيار 'Free Prisoner'

يمكن لأنالين أن تحاول التسلل إلى المخيم لتحرير صديقتها. هذا أمر محفوف بالمخاطر، ولا يمكن أن ينجح إلا في إحدى الحالتين:

  • إذا كان كلب أنالين الأليف معها، فيمكنها إنقاذ السجينة إذا كان الرامي نائمًا. الفارس يخاف من الكلب، ولن يكون لدى الرامي وقت للاستعداد قبل أن تتمكن أنالين وصديقتها من الهرب.

  • إذا لم يكن الكلب مع أنالين، فعليها هي والسجينة أن تتسللا بحذر شديد! تستطيع أنالين تحرير السجينة إذا كانت مستيقظة وكان الفارس والرامي نائمين معًا، لكن إذا كانت السجينة نائمة فلا يمكن إنقاذها: إذ ستفزع من ظهور أنالين المفاجئ وتوقظ الفارس والرامي.

نفّذ دالة باسم can_free_prisoner تأخذ أربع قيم منطقية. تشير المعاملات الثلاثة الأولى، على الترتيب، إلى ما إذا كان الفارس والرامي والسجينة مستيقظين. ويشير المعامل الأخير إلى ما إذا كان كلب أنالين الأليف موجودًا. تُرجع الدالة true إذا كان إجراء 'Free Prisoner' متاحًا بناءً على حالة الشخصيات، وإلا فتُرجع false:

julia> knight_awake = false
julia> archer_awake = true
julia> prisoner_awake = false
julia> dog_present = false

julia> can_free_prisoner(knight_awake, archer_awake, prisoner_awake, dog_present)
false
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Julia Exercism

مستعد لبدء تسلّل أنالين؟

سجّل في Exercism لتتعلّم وتتقن Julia عبر 35 مفهومًا128 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.