Eres un heraldo del escenario en una conferencia internacional. Tu trabajo consiste en anunciar a los ponentes, avisarles cuando se les acaba el tiempo y moderar la sesión de preguntas y respuestas. Recibes de antemano una lista con los ponentes de tu escenario y tienes que convertirla en tarjetas de moderación.
Como la lista sigue un formato concreto, decides escribir un pequeño programa que analice la lista que recibes con expresiones regulares (regex) y genere las tarjetas de moderación automáticamente.
Este ejercicio no trata de aprender expresiones regulares. Trata de aprender a usar regex en $lang. Las pistas contienen una expresión regular que puedes usar si no quieres escribir una tú mismo.
La lista que recibes contiene la siguiente información sobre cada charla:
Una entrada completa tiene el siguiente formato:
»Speedrunning 101« – Sasha Duda Krall (they/them), from GDQU. Start: 13:00, Q&A: 13:20, End: 13:30
Aquí, el título es Speedrunning 101, el ponente se llama Sasha Duda Krall, es de GDQU y usa los pronombres they/them.
La charla empieza a las 13:00, habrá una sesión de preguntas y respuestas que comienza a las 13:20 y la sesión completa termina a las 13:30.
Como los nombres pueden contener guiones normales -, se usa un guion medio – para separar el nombre del ponente y el título de la charla.
La tarjeta de moderación que tu programa debería generar para esa charla tiene este aspecto:
- 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
La lista completa podría tener este aspecto:
»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
Las tarjetas correspondientes son:
- 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
Algunas cosas que conviene tener en cuenta:
Lo más fácil es usar una herramienta para construir expresiones regulares como regex101 o RegExr.
!!! warning Asegúrate de configurar el motor o la variante de regex a $CHANGE_ME.
Si eres nuevo en las regex o te cuesta crear una expresión que capture toda la información necesaria de una vez, también puedes definir varias expresiones más pequeñas que capturen partes de la información-
Usa la expresión de la primera parte e implementa una función que reciba una línea como entrada, capture la información que contiene y devuelva la tarjeta de moderación generada según las indicaciones anteriores.
Los posibles casos de prueba futuros deberían seguir estas pautas:
»« y un nombre no debe contener comas.[a-zA-Z] o similares para el nombre, el título o la organización no deben poder superar los tests.