Διαδρομές
/
Factor
Factor
/
Ασκήσεις
/
Μελέτη χαρακτήρων
Μελέτη χαρακτήρων

Μελέτη χαρακτήρων

Άσκηση εκμάθησης

Εισαγωγή

Οι χαρακτήρες στη Factor είναι ακέραιοι, δηλαδή σημεία κώδικα Unicode, οπότε οι αριθμητικοί τελεστές <, >, = σου δίνουν απευθείας διάταξη με διάκριση πεζών-κεφαλαίων. Το λεξιλόγιο unicode προσθέτει κατηγορήματα με επίγνωση του Unicode και μετατροπή πεζών και κεφαλαίων ενός μεμονωμένου χαρακτήρα.

Κατηγορήματα χαρακτήρων

LETTER?  ( c -- ? )    ! uppercase letter
letter?  ( c -- ? )    ! lowercase letter
Letter?  ( c -- ? )    ! letter, either case
digit?   ( c -- ? )    ! decimal digit
digit>   ( c -- n )    ! the integer value of a digit char
blank?   ( c -- ? )    ! whitespace
USING: unicode ;

CHAR: A LETTER? .    ! => t
CHAR: a letter? .    ! => t
CHAR: 7 digit?  .    ! => t
CHAR: 7 digit>  .    ! => 7

Μετατροπή πεζών και κεφαλαίων

Τα ch>upper και ch>lower μετατρέπουν τα πεζά/κεφαλαία ενός μεμονωμένου χαρακτήρα. Τα >upper και >lower σε επίπεδο συμβολοσειράς τα εφαρμόζουν σε κάθε χαρακτήρα μιας συμβολοσειράς.

CHAR: a ch>upper .   ! => 65   (which is CHAR: A)
"Hello" >upper .     ! => "HELLO"

Το capitalize μετατρέπει ολόκληρη τη συμβολοσειρά σε πεζά και στη συνέχεια κάνει κεφαλαίο τον πρώτο της χαρακτήρα, δηλαδή τη μορφή τίτλου μιας μόνο λέξης:

"hELLO" capitalize .   ! => "Hello"

Κυριολεκτικά χαρακτήρων

Το CHAR: A αναλύεται στο ακέραιο σημείο κώδικα του A. Για ονομασμένους χαρακτήρες, χρησιμοποίησε τα ονόματα space, tab, \n, κ.λπ.:

CHAR: A .        ! => 65
CHAR: space .    ! => 32
CHAR: \n .       ! => 10

Σύμβολα

Όταν μια λέξη χρειάζεται να επιστρέψει μια ετικέτα αντί για μια τιμή (για παράδειγμα, yes/no/maybe αντί για ένα Boolean), δήλωσε κάθε ετικέτα ως σύμβολο. Ένα σύμβολο είναι μια λέξη που ωθεί τον εαυτό της στη στοίβα όταν καλείται, και δύο σύμβολα συγκρίνονται ως ίσα μόνο όταν έχουν το ίδιο όνομα.

USING: kernel ;

SYMBOLS: yes no maybe ;

yes .    ! => yes
yes yes = .    ! => t
yes no = .     ! => f

Το SYMBOL: name δηλώνει ένα σύμβολο· το SYMBOLS: a b c ; δηλώνει πολλά.

Οδηγίες

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

1. Σύγκρινε δύο χαρακτήρες

Όρισε τη compare-chars ώστε να δέχεται δύο χαρακτήρες και να επιστρέφει το σύμβολο less, greater ή equal, ανάλογα με το αν ο πρώτος είναι μικρότερος, μεγαλύτερος ή ίσος με τον δεύτερο. Σύγκρινε με διάκριση πεζών-κεφαλαίων.

CHAR: A CHAR: B compare-chars .   ! => less
CHAR: B CHAR: A compare-chars .   ! => greater
CHAR: A CHAR: A compare-chars .   ! => equal
CHAR: A CHAR: a compare-chars .   ! => less

2. Προσδιόρισε το μέγεθος ενός χαρακτήρα

Η Heidi χρειάζεται να ξέρει αν ένας χαρακτήρας είναι "big" (κεφαλαίος), "small" (πεζός) ή δεν έχει μέγεθος. Όρισε τη size-of-char ώστε να επιστρέφει big, small ή no-size.

CHAR: A size-of-char .       ! => big
CHAR: a size-of-char .       ! => small
CHAR: 5 size-of-char .       ! => no-size
CHAR: space size-of-char .   ! => no-size

3. Άλλαξε το μέγεθος ενός χαρακτήρα

Η Heidi μερικές φορές χρειάζεται να αλλάξει το μέγεθος ενός χαρακτήρα σε ένα άλλο. Όρισε τη change-size-of-char ώστε να δέχεται έναν χαρακτήρα και ένα επιθυμητό μέγεθος (big ή small) και να επιστρέφει τον χαρακτήρα στην αντίστοιχη πεζή ή κεφαλαία μορφή.

CHAR: a big change-size-of-char .     ! => 65   (CHAR: A)
CHAR: A small change-size-of-char .   ! => 97   (CHAR: a)

4. Προσδιόρισε τον τύπο ενός χαρακτήρα

Η Heidi χρειάζεται επίσης να ξέρει τι είδος χαρακτήρα είναι. Όρισε τη type-of-char ώστε να επιστρέφει:

  • alpha για οποιοδήποτε γράμμα (κεφαλαίο ή πεζό)
  • numeric για ένα δεκαδικό ψηφίο
  • space για τον χαρακτήρα διαστήματος
  • newline για τον χαρακτήρα αλλαγής γραμμής
  • unknown διαφορετικά
CHAR: A type-of-char .       ! => alpha
CHAR: 5 type-of-char .       ! => numeric
CHAR: space type-of-char .   ! => space
CHAR: \n type-of-char .      ! => newline
CHAR: ! type-of-char .       ! => unknown
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Factor Exercism

Έτοιμος να ξεκινήσεις την άσκηση Μελέτη χαρακτήρων;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις Factor με 47 έννοιες163 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.