Διαδρομές
/
Elm
Elm
/
Ασκήσεις
/
Πεντακάθαρος
Πεντακάθαρος

Πεντακάθαρος

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

Εισαγωγή

Συμβολοσειρές

Οι χαρακτήρες και οι συμβολοσειρές αποτελούν τη βάση για την αναπαράσταση κειμένου στην Elm. Οι συμβολοσειρές μπορούν να ιδωθούν ως λίστες χαρακτήρων και οι περισσότερες συναρτήσεις της List έχουν το αντίστοιχό τους στη μονάδα String.

Χαρακτήρες

Ο τύπος Char αναπαριστά έναν μόνο χαρακτήρα unicode με μονά εισαγωγικά, π.χ. 'a'. Η μονάδα Char παρέχει συναρτήσεις κατηγορήματος (Char -> Bool) για να ελέγχεις ιδιότητες ενός χαρακτήρα: isUpper, isLower, isAlpha και isAlphaNum Η μονάδα παρέχει επίσης συναρτήσεις για τη μετατροπή ενός χαρακτήρα toUpper, toLower, toLocaleUpper, toLocaleLower, καθώς και για τη μετατροπή από και προς την αριθμητική τιμή unicode (Int) με τις toCode και fromCode.

Συμβολοσειρές

Ο τύπος String παρέχει μια ενσωματωμένη αναπαράσταση για αποδοτικό χειρισμό συμβολοσειρών και μπορεί να αναπαραστήσει οποιαδήποτε ακολουθία χαρακτήρων unicode, π.χ. "this is an Elm string." Οι συμβολοσειρές πολλαπλών γραμμών αναπαρίστανται με τριπλά διπλά εισαγωγικά και μπορούν να περιέχουν εισαγωγικά και αλλαγές γραμμής χωρίς διαφυγή.

"""
    This is a multiline string.
All line-breaks and whitespace,
are preserved. 
"""

Συναρτήσεις συμβολοσειρών

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

cons : Char -> String -> String προσθέτει έναν χαρακτήρα στην αρχή μιας συμβολοσειράς.

cons 'T' "he truth is out there" 
    --> "The truth is out there"

(++): String -> String -> String προσθέτει δύο συμβολοσειρές στο τέλος.

"butter" ++ "fly" 
    --> "butterfly"

split : String -> String -> List String χωρίζει μια συμβολοσειρά σε λίστα συμβολοσειρών στο δεδομένο διαχωριστικό.

split ";" "cat;dog;cow" 
    --> ["cat", "dog", "cow"]

join : String -> List String -> String συνενώνει μια λίστα συμβολοσειρών με ένα δεδομένο διαχωριστικό.

join "a" ["H", "w", "ii", "n"] 
    --> "Hawaiian"

replace : String -> String -> String -> String αντικαθιστά όλες τις εμφανίσεις μιας δεδομένης υποσυμβολοσειράς.

replace "Hello" "Goodbye cruel" "Hello world." 
    --> "Goodbye cruel world."

length : String -> Int επιστρέφει τον αριθμό των χαρακτήρων σε μια συμβολοσειρά.

length "Hello world." 
    --> 12

toInt : String -> Maybe Int προσπαθεί να μετατρέψει μια συμβολοσειρά σε Just Int και επιστρέφει Nothing για συμβολοσειρές με λανθασμένη μορφή.

toInt "-42" 
    --> Just -42

contains : String -> String -> Bool ελέγχει αν η δεύτερη συμβολοσειρά περιέχει την πρώτη.

contains "the" "theory" 
    --> True

map : (Char -> Char) -> String -> String εφαρμόζει μια δεδομένη συνάρτηση σε κάθε Char της συμβολοσειράς. Σημείωσε ότι η συνάρτηση που παρέχεται πρέπει να είναι μια αντιστοίχιση από και προς Char.

map (\c -> if c == '/' then '.' else c) "a/b/c" 
    --> "a.b.c"

Όλες οι συναρτήσεις συμβολοσειρών:

Χειρισμός Υποσυμβολοσειρές Έλεγχος Μετατροπή Συναρτήσεις υψηλότερης τάξης
reverse slice length toInt map
repeat left isEmpty fromInt filter
replace right contains toFloat foldl
append dropLeft startsWith fromFloat foldr
concat dropRight indexes toList any
split fromList all
join fromChar
words
lines
cons
uncons

Οδηγίες

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

Στις 5 εργασίες θα χτίσεις σταδιακά τη συνάρτηση clean. Ένα έγκυρο αναγνωριστικό αποτελείται από μηδέν ή περισσότερα γράμματα και κάτω παύλες.

Αν δοθεί μια κενή συμβολοσειρά στη συνάρτηση clean, θα πρέπει να επιστραφεί μια κενή συμβολοσειρά.

1. Αντικατέστησε τα κενά με κάτω παύλες

Υλοποίησε τη συνάρτηση clean1 ώστε να αντικαθιστά κάθε κενό με κάτω παύλα. Αυτό ισχύει και για κενά στην αρχή και στο τέλος.

clean1 "my   Id"
    --> "my___Id"

2. Αντικατέστησε τους χαρακτήρες ελέγχου με τη συμβολοσειρά με κεφαλαία γράμματα "[CTRL]"

Υλοποίησε τη συνάρτηση clean2 ώστε να κάνει ό,τι κάνει η προηγούμενη συνάρτηση και να αντικαθιστά τους συνηθισμένους χαρακτήρες ελέγχου (\n, \t και \r ) με τη συμβολοσειρά "[CTRL]".

clean2 "my\nId"
    --> "my[CTRL]Id",

3. Μετέτρεψε το kebab-case σε camelCase

Υλοποίησε τη συνάρτηση clean3 ώστε να κάνει ό,τι κάνει η προηγούμενη συνάρτηση και να μετατρέπει το kebab-case σε camelCase.

clean3 "à-ḃç"
    --> "àḂç"

4. Παράλειψε τα ψηφία

Υλοποίησε τη συνάρτηση clean4 ώστε να κάνει ό,τι κάνει η προηγούμενη συνάρτηση και να παραλείπει όλα τα ψηφία.

clean4 "123"
    --> ""

5. Παράλειψε τα ελληνικά πεζά γράμματα

Τέλος, υλοποίησε τη συνάρτηση clean ώστε να κάνει ό,τι κάνει η προηγούμενη συνάρτηση και να παραλείπει οποιοδήποτε ελληνικό γράμμα στο εύρος από 'α' έως 'ω'.

clean "My Οβιεγτ Finder"
    --> "My_Ο_Finder"
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Elm Exercism

Έτοιμος να ξεκινήσεις την άσκηση Πεντακάθαρος;

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