Bühnenankündigung


Geschichte

Du bist Bühnenherold auf einer internationalen Konferenz. Deine Aufgabe ist es, die Vortragenden anzukündigen, sie zu erinnern, wenn ihre Zeit abgelaufen ist, und die Q&A-Session zu moderieren. Du bekommst im Voraus eine Liste der Vortragenden auf deiner Bühne und musst daraus Moderationskarten machen.

Da die Liste einem bestimmten Format folgt, beschließt du, ein kurzes Programm zu schreiben, das die Liste, die du bekommst, mit regulären Ausdrücken (Regex) parst und die Moderationskarten automatisch erzeugt.

Note

In dieser Übung geht es nicht darum, reguläre Ausdrücke zu lernen. Es geht darum, Regex in $lang zu verwenden. Die Hinweise enthalten einen regulären Ausdruck, den du verwenden kannst, wenn du keinen eigenen schreiben möchtest.

Die Liste, die du bekommst, enthält für jeden Vortrag die folgenden Informationen:

  • den Titel,
  • den Namen der Vortragenden,
  • ihre Pronomen (optional),
  • ihre Organisation (optional),
  • die Startzeit des Vortrags,
  • den Beginn der Q&A-Session (optional),
  • und die Endzeit des Vortrags.

Ein vollständiger Eintrag hat das folgende Format:

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

Hier ist der Titel Speedrunning 101, die Vortragende heißt Sasha Duda Krall, kommt von GDQU und verwendet die Pronomen they/them. Der Vortrag beginnt um 13:00, die Q&A-Session startet um 13:20, und die gesamte Session endet um 13:30.

Note

Da Namen normale Bindestriche - enthalten können, wird ein Halbgeviertstrich – verwendet, um den Namen der Vortragenden und den Vortragstitel zu trennen.

Die Moderationskarte, die dein Programm für diesen Vortrag erzeugen soll, sieht so aus:

- 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

Die gesamte Liste kann so aussehen:

»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

Die zugehörigen Karten sehen so aus:

- 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

Ein paar Dinge, die du beachten solltest:

  • Wenn für eine Vortragende keine Organisation angegeben ist, lass sie in der Moderationskarte weg.
  • Wenn keine Zeit für die Q&A-Session angegeben ist, hat die Vortragende darauf verzichtet, Fragen zu beantworten.
  • Wenn die Vortragende keine Pronomen angibt, verwende stattdessen ihren Vornamen. Beachte, dass es nicht immer angemessen ist, den Namen einer Person so abzukürzen, z. B. lassen sich viele chinesische Namen besser abkürzen, indem man den Nachnamen behält. Für alle, die auf dieser Bühne sprechen, funktioniert die Regel, auf den Vornamen abzukürzen, allerdings gut.

Aufgaben

1. Schreibe eine Regex, die die Informationen erfasst, die du zum Erzeugen der Karten brauchst

Am einfachsten verwendest du dafür ein Regex-Builder-Tool wie regex101 oder RegExr.

!!! warning Achte darauf, dass du als Regex-Engine bzw. -Flavor $CHANGE_ME einstellst.

Wenn du neu bei Regex bist oder Schwierigkeiten hast, einen Ausdruck zu erstellen, der alle benötigten Informationen auf einmal erfasst, kannst du auch mehrere kleinere Ausdrücke definieren, die jeweils Teile der Informationen erfassen -

2. Schreibe eine Funktion, die eine Zeile entgegennimmt und die erzeugte Moderationskarte zurückgibt

Verwende den Ausdruck aus dem ersten Teil und implementiere eine Funktion, die eine Zeile als Eingabe entgegennimmt, die Informationen daraus erfasst und die erzeugte Moderationskarte gemäß der obigen Spezifikation zurückgibt.

Testfälle

Mögliche zukünftige Testfälle sollten die folgenden Richtlinien erfüllen:

  • Die Trennzeichen müssen eindeutig sein. Ein Vortragstitel sollte zum Beispiel keine »« enthalten, ein Name keine Kommas.
  • Die Testfälle sollten danach geordnet sein, welche Informationen optional sind. Der erste Fall sollte alle möglichen Informationen enthalten, der nächste Fall eine erfassbare Information auslassen, und so weiter.
  • Lösungen, die für Name, Titel oder Organisation [a-zA-Z] oder Ähnliches verwenden, sollten die Tests nicht bestehen können.

Implementierungen

  • Julia (Referenzimplementierung)