اعلام مرحله


داستان

شما در یک کنفرانس بین‌المللی «منادی صحنه» هستید. کار شما این است که سخنرانان را اعلام کنید، وقتی زمان‌شان به پایان رسید به آن‌ها یادآوری کنید و جلسه‌ی پرسش و پاسخ را مدیریت کنید. فهرستی از سخنرانان صحنه‌تان از پیش در اختیار شما قرار می‌گیرد و باید آن‌ها را به «کارت مدیریت» تبدیل کنید.

Note

این تمرین نه درباره‌ی یادگیری عبارات باقاعده است. بلکه درباره‌ی یادگیری استفاده از regex در $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

چند نکته را باید در اینجا در نظر گرفت:

  • اگر سازمانی برای سخنران ذکر نشده باشد، آن را در کارت مدیریت حذف کنید.
  • اگر زمانی برای جلسه‌ی پرسش و پاسخ ذکر نشده باشد، سخنران تصمیم گرفته است به پرسش‌ها پاسخ ندهد.
  • اگر سخنران ضمیرهایش را مشخص نکرده باشد، به جای آن از اسم کوچک سخنران استفاده کنید. توجه داشته باشید که کوتاه کردن اسم افراد به این شکل همیشه مناسب نیست؛ برای مثال، کوتاه کردن بسیاری از اسم‌های چینی با نگه داشتن اسم خانوادگی بهتر نتیجه می‌دهد. با این حال، قاعده‌ی کوتاه کردن به اسم کوچک برای همه‌ی سخنرانان این صحنه به‌خوبی جواب می‌دهد.

کارها

۱. یک regex بنویسید که اطلاعات مورد نیاز برای ساختن کارت‌ها را استخراج کند

برای این کار ساده‌ترین راه استفاده از ابزاری برای ساختن regex مانند regex101 یا RegExr است.

!!! warning مطمئن شوید که موتور/نوع regex را روی $CHANGE_ME تنظیم کرده‌اید.

اگر با regex تازه آشنا شده‌اید یا ساختن عبارتی که همه‌ی اطلاعات لازم را یک‌جا استخراج کند برایتان دشوار است، می‌توانید چند عبارت کوچک‌تر هم تعریف کنید که هرکدام بخشی از اطلاعات را استخراج می‌کنند.

۲. تابعی بنویسید که یک خط را می‌گیرد و کارت مدیریت ساخته‌شده را برمی‌گرداند

از عبارت بخش اول استفاده کنید و تابعی پیاده‌سازی کنید که یک خط را به‌عنوان ورودی می‌گیرد، اطلاعات را از آن استخراج می‌کند و کارت مدیریت ساخته‌شده را مطابق مشخصات بالا برمی‌گرداند.

موارد Test

موارد Test بالقوه در آینده باید از رهنمودهای زیر پیروی کنند:

  • جداکننده‌ها باید بدون ابهام باشند. برای مثال، عنوان یک سخنرانی نباید »« داشته باشد و یک اسم نباید ویرگول داشته باشد.
  • موارد Test باید بر اساس اختیاری بودن برخی اطلاعات مرتب شوند. اولین مورد باید همه‌ی اطلاعات ممکن را داشته باشد، مورد بعدی باید یکی از اطلاعات قابل استخراج را نداشته باشد و به همین ترتیب.
  • راه‌حل‌هایی که برای اسم، عنوان یا سازمان از [a-zA-Z] یا مشابه آن استفاده می‌کنند، نباید بتوانند Testها را پاس کنند.

پیاده‌سازی

  • Julia (پیاده‌سازی مرجع)