Anuncios del escenario


Historia

Eres el heraldo del escenario en una conferencia internacional. Tu trabajo es anunciar a los ponentes, recordarles cuándo se les acaba el tiempo y moderar la sesión de preguntas y respuestas. De antemano te dan una lista con los ponentes de tu escenario y tienes que convertirla en tarjetas de moderación.

Como la lista sigue un formato particular, decides escribir un programa corto que analice la lista que te dan usando expresiones regulares (regex) y genere automáticamente las tarjetas de moderación.

Note

Este ejercicio no se trata de aprender expresiones regulares. Se trata de aprender a usar regex dentro de $lang. Las pistas contienen una expresión regular que puedes usar si prefieres no escribir una propia.

La lista que te dan contiene la siguiente información de cada charla:

  • su título,
  • el nombre del ponente,
  • sus pronombres (opcional),
  • su organización (opcional),
  • la hora de inicio de la charla,
  • el inicio de la sesión de preguntas y respuestas (opcional),
  • y la hora de fin de la 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 empieza a las 13:20, y toda la sesión termina a las 13:30.

Note

Como los nombres pueden contener guiones normales -, se usa un guion medio – para separar el nombre del ponente y el de la charla.

La tarjeta de moderación que tu programa debería generar para esa charla se ve así:

- 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 verse así:

»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 a tener en cuenta:

  • Si no se da una organización para un ponente, omítela en la tarjeta de moderación.
  • Si no se da una hora para la sesión de preguntas y respuestas, el ponente prefirió no responder preguntas.
  • Si el ponente no especifica sus pronombres, usa en su lugar el primer nombre del ponente. Ten en cuenta que no siempre es apropiado abreviar el nombre de alguien así; por ejemplo, muchos nombres chinos se abrevian mejor conservando el apellido. Sin embargo, la regla de abreviar usando el primer nombre da buenos resultados con todos los que hablan en este escenario.

Tareas

1. Escribe una regex que capture la información que necesitas para generar las tarjetas

Lo más fácil es usar una herramienta para construir regex como regex101 o RegExr.

!!! warning Asegúrate de configurar el motor o sabor de regex en $CHANGE_ME.

Si las regex son nuevas para ti o te cuesta crear una expresión que capture toda la información requerida de una vez, también puedes definir varias expresiones más pequeñas que capturen partes de la información.

2. Escribe una función que tome una línea y devuelva la tarjeta de moderación generada

Usa la expresión de la primera parte e implementa una función que tome una línea como argumento, capture la información y devuelva la tarjeta de moderación generada según la especificación anterior.

Casos de prueba

Los posibles casos de prueba futuros deben cumplir con las siguientes pautas:

  • Los delimitadores deben ser inequívocos. Por ejemplo, el título de una charla no debe contener »«, y un nombre no debe contener comas.
  • Los casos de prueba deben ordenarse según qué información sea opcional. El primer caso debe contener toda la información posible, el siguiente debe excluir una pieza de información capturable, y así sucesivamente.
  • Las soluciones que usen [a-zA-Z] o similares para el nombre, el título o la organización no deberían poder pasar las pruebas.

Implementaciones

  • Julia (implementación de referencia)