Sei un araldo di palco a una conferenza internazionale. Il tuo compito è annunciare i relatori, avvisarli quando è scaduto il loro tempo e moderare la sessione di domande e risposte. Ricevi in anticipo un elenco dei relatori sul tuo palco e devi trasformarli in schede di moderazione.
Dato che l'elenco segue una formattazione particolare, decidi di scrivere un breve programma che analizzi l'elenco ricevuto usando le espressioni regolari (regex) e generi automaticamente le schede di moderazione.
Questo esercizio non riguarda l'imparare le espressioni regolari. Riguarda l'imparare a usare le regex in $lang. I suggerimenti contengono un'espressione regolare che puoi usare se non vuoi scriverne una tu.
L'elenco che ricevi contiene le seguenti informazioni per ogni intervento:
Una voce completa ha il seguente formato:
»Speedrunning 101« – Sasha Duda Krall (they/them), from GDQU. Start: 13:00, Q&A: 13:20, End: 13:30
Qui il titolo è Speedrunning 101, il relatore si chiama Sasha Duda Krall, viene da GDQU e usa i pronomi they/them.
L'intervento inizia alle 13:00, alle 13:20 inizierà la sessione di domande e risposte e l'intera sessione finisce alle 13:30.
Dato che i nomi possono contenere trattini normali -, per separare il relatore dal nome dell'intervento si usa un trattino en –.
La scheda di moderazione che il tuo programma dovrebbe generare per quell'intervento è questa:
- 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
L'elenco completo potrebbe essere così:
»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
Le schede corrispondenti sono:
- 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
Alcune cose da notare:
Per farlo, è più semplice usare uno strumento per costruire regex come regex101 o RegExr.
!!! warning Assicurati di impostare il motore/la variante delle regex su $CHANGE_ME.
Se sei alle prime armi con le regex o fai fatica a creare un'espressione che catturi tutte le informazioni richieste in una volta sola, puoi anche definire diverse espressioni più piccole che catturano parti delle informazioni.
Usa l'espressione della prima parte e implementa una funzione che prende in input una riga, ne cattura le informazioni e restituisce la scheda di moderazione generata secondo le specifiche precedenti.
I potenziali casi di test futuri dovrebbero rispettare le seguenti linee guida:
»« e un nome non dovrebbe contenere virgole.[a-zA-Z] o simili per il nome, il titolo o l'organizzazione non dovrebbero riuscire a superare i test.