ENIGMA-0x03 (2025) - A3 Ο επεξεργαστής κειμένου eVIgma
View as PDFΟ επεξεργαστής κειμένου eVIgma

Για να μην γράφουμε μόνο κώδικα για προβλήματα, αποφασίσαμε να γράψουμε έναν πλήρως λειτουργικό επεξεργαστή κειμένου, τον e-VI-gma! Για κάθε feature που υλοποιείτε θα παίρνετε έξτρα βαθμούς, οι οποίοι θα κυμαίνονται ανάλογα με το πόσο αποδοτικά λειτουργεί το feature.
Πρώτο feature: γραφομηχανή
Αρχικά, μπορούμε μόνο να εισάγουμε χαρακτήρες στο τέλος του κειμένου και να διαγράφουμε τον τελευταίο χαρακτήρα. Επειδή όμως δεν έχουμε πλήρη εικόνα του κειμένου που γράφουμε, μπορούμε να ζητήσουμε να εκτυπώσουμε τον -οστό χαρακτήρα του κειμένου.
Δεύτερο feature: αντίγραφα ασφαλείας
Πλέον, πέρα από εισαγωγές και διαγραφές μπορούμε να δημιουργούμε αντίγραφα της δουλειάς μας. Τα αντίγραφα είναι μεταβλητά· δλδ. κάθε εισαγωγή / διαγραφή μπορεί να γίνει στο τέλος κάθε αντιγράφου του κειμένου που έχουμε.
Τρίτο feature: επιτέλους έχουμε βελάκια!
Η γραφομηχανή εκσυγχρονίστηκε και μας επιτρέπει να κινούμαστε στο αρχείο για να κάνουμε εισαγωγές και διαγραφές παντού! Δυστυχώς το σύστημα αντιγράφων έπαψε να λειτουργεί, οπότε όσο προσπαθούμε να το επισκευάσουμε, αρκεί να προγραμματίσουμε εισαγωγές και διαγραφές σε οποιοδήποτε σημείο του αρχείου
Τέταρτο feature: φτιάξαμε τα αντίγραφα!
Φτιάξαμε τα πάντα! Μπορούμε να γράψουμε και διαγράψουμε σε οποιοδήποτε σημείο οποιουδήποτε αντιγράφου του αρχείου.
Μορφή εισόδου (STDIN)
Αρχικά δίνεται αριθμός : το πλήθος των κινήσεων που θα κάνουμε στο αρχείο. Ακολουθούν
γραμμές, με την καθεμία να εξηγεί από μία πράξη:
INSERT i s: εισάγει την συμβολοσειράsστην θέσητου τρέχοντος αντιγράφου (αρχικά βρισκόμαστε στο αντίγραφο υπ' αριθμόν 1) (π.χ. για τα πρώτα 2 fetures, το
θα ισούται πάντα με
, όπου
το τρέχον μέγεθος του αντγράφου).
ERASE i k: διαγράφειχαρακτήρες από την θέση
του τρέχοντος αντιγράφου
GET i v: εκτυπώνει τον-οστό χαρακτήρα (αρίθμηση από 1) του αντιγράφου υπ' αριθμόν
SNAP: δημιουργεί ένα νέο αντίγραφο του τρέχοντος, με αριθμό \(\hbox{|current versions|} + 1\)VERSION v: ορίζουμε το αντίγραφο υπ' αριθμόνως τρέχον.
Μορφή εξόδου (STDOUT)
Στην έξοδο να εκτυπώσετε μία γραμμή με χαρακτήρες: για κάθε ερώτημα τύπου GET τον χαρακτήρα που αντιστοιχεί
Περιορισμοί
- Για
των αρχείων ελέγχου,
- Για το υπόλοιπο
,
- Για
των αρχείων ελέγχου, το μέγιστο μέγεθος συμβολοσειράς θα είναι
- Για το υπόλοιπο
,
Παράδειγμα
Είσοδος:
5
INSERT 1 abcde
SNAP
ERASE 3 2
GET 3 1
GET 3 2
Έξοδος:
ec
Comments