إعلان المرحلة


القصة

أنت منادي مسرح في مؤتمر دولي. مهمتك أن تُعلن عن المتحدثين، وتذكّرهم عندما ينتهي وقتهم، وتدير جلسة الأسئلة والأجوبة. تُعطى قائمة بالمتحدثين على مسرحك مسبقًا، وعليك تحويلهم إلى بطاقات إدارة.

بما أن القائمة تتبع تنسيقًا معينًا، تقرر كتابة برنامج قصير يحلّل القائمة التي تُعطى لك باستخدام التعبيرات النمطية (regex) ويولّد بطاقات الإدارة تلقائيًا.

Note

هذا التمرين ليس عن تعلّم التعبيرات النمطية. بل عن تعلّم استخدام التعبيرات النمطية داخل $lang. تحتوي التلميحات على تعبير نمطي يمكنك استخدامه إن كنت لا تريد كتابة واحد بنفسك.

تحتوي القائمة التي تُعطى لك على المعلومات التالية عن كل حديث:

  • عنوانه،
  • اسم المتحدث،
  • ضمائره (اختياري)،
  • منظمته (اختياري)،
  • وقت بدء الحديث،
  • بدء جلسة الأسئلة والأجوبة (اختياري)،
  • ووقت انتهاء الحديث.

المدخل الكامل بهذا الشكل:

»Speedrunning 101« – Sasha Duda Krall (they/them), from GDQU. Start: 13:00, Q&A: 13:20, End: 13:30

هنا العنوان Speedrunning 101، والمتحدث يُدعى Sasha Duda Krall، من GDQU، ويستخدم الضمائر they/them. يبدأ الحديث في 13:00، وستكون هناك جلسة أسئلة وأجوبة تبدأ في 13:20، وتنتهي الجلسة كاملة في 13:30.

Note

بما أن الأسماء قد تحتوي على شُرَط عادية -، تُستخدم شُرطة مُطوَّلة – للفصل بين المتحدث واسم الحديث.

بطاقة الإدارة التي يجب أن يولّدها برنامجك لهذا الحديث تبدو هكذا:

- Our next speaker is Sasha Duda Krall, from GDQU
- Their talk is called »Speedrunning 101«
- They will answer your questions in the Q&A session at the end of the talk, starting at 13:20

13:00 - 13:20 - 13:30

قد تبدو القائمة كاملة هكذا:

»Speedrunning 101« – Sasha Duda Krall (they/them), from GDQU. Start: 13:00, Q&A: 13:20, End: 13:30
»How I learned to say Farewell« – Madeline (she/her). Start: 13:40, Q&A: 14:00, End: 14:05
»How To Find a Good Title For Your Conference Talk« – Vítězslav Kruse (he/him). Start: 14:15, End: 14:40
»Why Emoji Matter❣« – Ash van Amelsvoort, from the University of 🧬🧪⚛. Start: 14:50, Q&A: 15:05, End: 15:10
»Can dogs look up?« – Kira "k1ralli" Sørensen. Start: 20:50, Q&A: 21:05, End: 21:10

والبطاقات المقابلة هي:

- Our next speaker is Madeline
- Her talk is called »How I learned to say Farewell«
- She will answer your questions in the Q&A session at the end of the talk, starting at 14:00

13:40 - 14:00 - 14:05
- Our next speaker is Vítězslav Kruse
- His talk is called »How To Find a Good Title For Your Conference Talk«
- There will not be a Q&A session

14:15 - NO Q&A - 14:40
- Our next speaker is Ash van Amelsvoort, from the University of 🧬🧪⚛
- Ash's talk is called »Why Emoji Matter❣«
- Ash will answer your questions in the Q&A session at the end of the talk, starting at 15:05

14:50 - 15:05 - 15:10
- Our next speaker is Kira "k1ralli" Sørensen
- Kira's talk is called »Can dogs look up?«
- Kira will answer your questions in the Q&A session at the end of the talk, starting at 21:05

20:50 - 21:05 - 21:10

إليك بعض الأمور الجديرة بالملاحظة هنا:

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

المهام

1. اكتب تعبيرًا نمطيًا يلتقط المعلومات التي تحتاجها لتوليد البطاقات

أسهل طريقة لفعل ذلك هي استخدام أداة لبناء التعبيرات النمطية مثل regex101 أو RegExr.

!!! warning تأكد من ضبط محرك التعبيرات النمطية/صيغته على $CHANGE_ME.

إن كنت جديدًا على التعبيرات النمطية أو تجد صعوبة في إنشاء تعبير يلتقط كل المعلومات المطلوبة دفعة واحدة، يمكنك أيضًا تعريف عدة تعبيرات أصغر تلتقط أجزاء من المعلومات.

2. اكتب دالة تأخذ سطرًا وتُرجع بطاقة الإدارة المولّدة

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

حالات الاختبار

ينبغي أن تتوافق حالات الاختبار المستقبلية المحتملة مع الإرشادات التالية:

  • يجب أن تكون المحددات واضحة لا لبس فيها. فمثلًا، يجب ألا يحتوي عنوان الحديث على »«، ولا يحتوي الاسم على فواصل.
  • ينبغي ترتيب حالات الاختبار وفق اختيارية بعض المعلومات. فالحالة الأولى يجب أن تحتوي كل المعلومات الممكنة، والحالة التالية تستبعد معلومة واحدة قابلة للالتقاط، وهكذا.
  • يجب ألا تتمكن الحلول التي تستخدم [a-zA-Z] أو ما شابه ذلك للاسم أو العنوان أو المنظمة من اجتياز الاختبارات.

التطبيقات

  • Julia (تنفيذ مرجعي)