Αναγγελία σκηνής


Ιστορία

Είσαι κήρυκας σκηνής σε ένα διεθνές συνέδριο. Η δουλειά σου είναι να ανακοινώνεις τους ομιλητές, να τους υπενθυμίζεις πότε τελειώνει ο χρόνος τους και να συντονίζεις τη συνεδρία ερωτήσεων και απαντήσεων. Σου δίνεται εκ των προτέρων μια λίστα με τους ομιλητές της σκηνής σου και πρέπει να τους μετατρέψεις σε κάρτες συντονισμού.

Επειδή η λίστα ακολουθεί μια συγκεκριμένη μορφοποίηση, αποφασίζεις να γράψεις ένα σύντομο πρόγραμμα που αναλύει τη λίστα που σου δίνεται χρησιμοποιώντας κανονικές εκφράσεις (regex) και δημιουργεί αυτόματα τις κάρτες συντονισμού.

Note

Αυτή η άσκηση δεν αφορά την εκμάθηση κανονικών εκφράσεων. Αφορά την εκμάθηση της χρήσης regex στη γλώσσα $lang. Οι υποδείξεις περιέχουν μια κανονική έκφραση που μπορείς να χρησιμοποιήσεις αν δεν θέλεις να γράψεις μία μόνος σου.

Η λίστα που σου δίνεται περιέχει τις ακόλουθες πληροφορίες για κάθε ομιλία:

  • τον τίτλο της,
  • το όνομα του ομιλητή,
  • τις αντωνυμίες του (προαιρετικά),
  • τον οργανισμό του (προαιρετικά),
  • την ώρα έναρξης της ομιλίας,
  • την ώρα έναρξης της συνεδρίας ερωτήσεων και απαντήσεων (προαιρετικά),
  • και την ώρα λήξης της ομιλίας.

Μια πλήρης καταχώριση έχει την ακόλουθη μορφή:

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

Εδώ, ο τίτλος είναι Speedrunning 101, ο ομιλητής ονομάζεται Sasha Duda Krall, κατάγεται από GDQU και χρησιμοποιεί τις αντωνυμίες they/them. Η ομιλία ξεκινά στις 13:00, θα υπάρξει μια συνεδρία ερωτήσεων και απαντήσεων που ξεκινά στις 13:20, και ολόκληρη η συνεδρία τελειώνει στις 13:30.

Note

Επειδή τα ονόματα μπορεί να περιέχουν κανονικές παύλες -, χρησιμοποιείται μια παύλα en – για να χωρίζει τον ομιλητή από τον τίτλο της ομιλίας.

Η κάρτα συντονισμού που πρέπει να δημιουργήσει το πρόγραμμά σου για αυτή την ομιλία μοιάζει κάπως έτσι:

- 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

Ολόκληρη η λίστα μπορεί να μοιάζει κάπως έτσι:

»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

Οι αντίστοιχες κάρτες είναι:

- 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

Μερικά πράγματα που αξίζει να προσέξεις εδώ:

  • Αν δεν δίνεται οργανισμός για έναν ομιλητή, παράλειψέ τον στην κάρτα συντονισμού.
  • Αν δεν δίνεται ώρα για τη συνεδρία ερωτήσεων και απαντήσεων, ο ομιλητής επέλεξε να μην απαντήσει σε ερωτήσεις.
  • Αν ο ομιλητής δεν προσδιορίζει αντωνυμίες, χρησιμοποίησε το μικρό του όνομα αντ' αυτού. Πρόσεξε ότι δεν είναι πάντα κατάλληλο να συντομεύεις έτσι το όνομα κάποιου, π.χ. πολλά κινεζικά ονόματα συντομεύονται καλύτερα κρατώντας το επώνυμο. Ωστόσο, ο κανόνας της σύντμησης στο μικρό όνομα τυχαίνει να λειτουργεί μια χαρά για όλους όσους μιλούν σε αυτή τη σκηνή.

Εργασίες

1. Γράψε μια κανονική έκφραση που συλλαμβάνει τις πληροφορίες που χρειάζεσαι για να δημιουργήσεις τις κάρτες

Ο πιο εύκολος τρόπος είναι να χρησιμοποιήσεις ένα εργαλείο κατασκευής κανονικών εκφράσεων όπως το regex101 ή το RegExr.

!!! warning Βεβαιώσου ότι έχεις ορίσει τη μηχανή ή την παραλλαγή regex σε $CHANGE_ME.

Αν είσαι νέος στις κανονικές εκφράσεις ή δυσκολεύεσαι να δημιουργήσεις μια έκφραση που συλλαμβάνει όλες τις απαιτούμενες πληροφορίες ταυτόχρονα, μπορείς επίσης να ορίσεις πολλές μικρότερες εκφράσεις που συλλαμβάνουν μέρη των πληροφοριών.

2. Γράψε μια συνάρτηση που παίρνει μια γραμμή και επιστρέφει την κάρτα συντονισμού που δημιουργήθηκε

Χρησιμοποίησε την έκφραση από το πρώτο μέρος και υλοποίησε μια συνάρτηση που παίρνει μια γραμμή ως είσοδο, συλλαμβάνει τις πληροφορίες από αυτήν και επιστρέφει την κάρτα συντονισμού που δημιουργήθηκε σύμφωνα με τις προδιαγραφές παραπάνω.

Περιπτώσεις δοκιμών

Οι πιθανές μελλοντικές περιπτώσεις δοκιμών πρέπει να συμμορφώνονται με τις ακόλουθες οδηγίες:

  • Οι διαχωριστές πρέπει να είναι σαφείς. Για παράδειγμα, ο τίτλος μιας ομιλίας δεν πρέπει να περιέχει »«, ένα όνομα δεν πρέπει να περιέχει κόμματα.
  • Οι περιπτώσεις δοκιμών πρέπει να ταξινομούνται με βάση την προαιρετικότητα ορισμένων πληροφοριών. Η πρώτη περίπτωση πρέπει να περιέχει όλες τις πιθανές πληροφορίες, η επόμενη περίπτωση πρέπει να αποκλείει ένα στοιχείο καταγραφής πληροφοριών κ.ο.κ.
  • Οι λύσεις που χρησιμοποιούν [a-zA-Z] ή παρόμοια για το όνομα, τον τίτλο ή τον οργανισμό δεν πρέπει να μπορούν να περάσουν τις δοκιμές.

Υλοποιήσεις

  • Julia (υλοποίηση αναφοράς)