Színpadi hírnökölés


Történet

Színpadi konferanszié vagy egy nemzetközi konferencián. A feladatod, hogy bekonferáld az előadókat, emlékeztesd őket, amikor lejár az idejük, és moderáld a kérdés-felelet szakaszt. Előre megkapod a színpadod előadóinak listáját, és moderációs kártyákká kell alakítanod őket.

Mivel a lista egy meghatározott formátumot követ, úgy döntesz, hogy írsz egy rövid programot, amely reguláris kifejezésekkel (regex) dolgozza fel a kapott listát, és automatikusan legyártja a moderációs kártyákat.

Note

Ez a feladat nem arról szól, hogy megtanuld a reguláris kifejezéseket. Arról szól, hogy megtanuld használni a regexet $lang nyelven. A tippek között találsz egy reguláris kifejezést, amelyet használhatsz, ha nem szeretnél magad írni egyet.

A kapott lista minden előadáshoz a következő adatokat tartalmazza:

  • az előadás címét,
  • az előadó nevét,
  • a névmásait (nem kötelező),
  • a szervezetét (nem kötelező),
  • az előadás kezdési időpontját,
  • a kérdés-felelet szakasz kezdetét (nem kötelező),
  • és az előadás befejezési időpontját.

Egy teljes bejegyzés így néz ki:

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

Itt a cím a Speedrunning 101, az előadó neve Sasha Duda Krall, a GDQU szervezettől, a névmásai pedig they/them. Az előadás 13:00-kor kezdődik, 13:20-kor egy kérdés-felelet szakasz veszi kezdetét, és a teljes alkalom 13:30-kor ér véget.

Note

Mivel a nevek tartalmazhatnak sima kötőjelet (-), az előadó és az előadás címe elválasztására gondolatjel () szolgál.

A moderációs kártya, amelyet a programnak az adott előadáshoz generálnia kell, így néz ki:

- 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

A teljes lista így nézhet ki:

»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

A hozzájuk tartozó kártyák:

- 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

Néhány dolog, amire érdemes figyelni:

  • Ha egy előadóhoz nincs megadva szervezet, hagyd ki a moderációs kártyából.
  • Ha nincs megadva időpont a kérdés-felelet szakaszhoz, az előadó úgy döntött, nem válaszol kérdésekre.
  • Ha az előadó nem ad meg névmásokat, használd helyettük az előadó keresztnevét. Ne feledd, hogy nem mindig szerencsés így rövidíteni valaki nevét; például sok kínai nevet jobb a vezetéknév megtartásával rövidíteni. Ezen a színpadon viszont minden előadónál jól működik a keresztnévre rövidítés szabálya.

Feladatok

1. Írj egy regexet, amely rögzíti a kártyák elkészítéséhez szükséges adatokat

Ehhez a legegyszerűbb egy regex-építő eszköz, például a regex101 vagy a RegExr használata.

!!! warning Ügyelj rá, hogy a regex motorját vagy írásmódját $CHANGE_ME értékre állítsd.

Ha még új vagy a regexek világában, vagy nehezen boldogulsz egyetlen olyan kifejezés megírásával, amely egyszerre rögzíti az összes szükséges adatot, akkor definiálhatsz több kisebb kifejezést is, amelyek az információ egy-egy részét kapják el-

2. Írj egy függvényt, amely egy sort kap, és visszaadja a generált moderációs kártyát

Használd az első részben írt kifejezést, és valósíts meg egy függvényt, amely bemenetként egy sort kap, rögzíti belőle az adatokat, és a fenti leírásnak megfelelően visszaadja a generált moderációs kártyát.

Tesztesetek

A jövőbeli lehetséges teszteseteknek a következő irányelveknek kell megfelelniük:

  • Az elválasztójeleknek egyértelműnek kell lenniük. Például egy előadás címe ne tartalmazzon »« jelet, egy név pedig ne tartalmazzon vesszőt.
  • A teszteseteket az egyes adatok elhagyhatósága alapján érdemes sorrendbe állítani. Az első eset tartalmazza az összes lehetséges adatot, a következő egy rögzíthető adatot hagyjon ki, és így tovább.
  • A névhez, címhez vagy szervezethez [a-zA-Z]-hoz hasonló mintát használó megoldások ne tudják teljesíteni a teszteket.

Implementációk

  • Julia (referenciaimplementáció)