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

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

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

Εισαγωγή

Ο τύπος char της F# είναι μια τιμή 16 bit που αναπαριστά τα μικρότερα διευθυνσιοδοτήσιμα components του κειμένου και είναι αμετάβλητος εξ ορισμού.

Τα char ορίζονται ως κυριολεκτικά με μονά εισαγωγικά:

let ch = 'A'
// => val ch: char = 'A'

Οι συμβολοσειρές είναι μια ακολουθία από χαρακτήρες.

Μπορείς να πάρεις έναν μεμονωμένο char από μια συμβολοσειρά με θέσεις (μηδενικής βάσης):

"Exercism"[4] //  =>  'c'

Η επανάληψη πάνω σε μια συμβολοσειρά επιστρέφει ένα char σε κάθε βήμα.

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

Seq.map (fun c -> c, int c) "F#"  //  =>  [('F', 70); ('#', 35)]

Όπως φαίνεται παραπάνω, ένα char μπορεί να μετατραπεί στην int τιμή του. Αυτό λειτουργεί επίσης (τουλάχιστον μερικές φορές) και για άλλα συστήματα γραφής:

Seq.map (fun c -> c, int c) "東京"  //  =>  [('東', 26481); ('京', 20140)]

Το υποκείμενο Int16 χρησιμοποιείται όταν συγκρίνεις χαρακτήρες:

'A' < 'D'  // =>  true

Επίσης, ένα int μπορεί να μετατραπεί σε char:

char 77  // => 'M'

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

'a' |> System.Char.ToUpper  // =>  'A'

'Q' |> System.Char.ToLower  // =>  'q'

Οδηγίες

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

Στις 6 εργασίες θα χτίσεις σταδιακά τις συναρτήσεις transform, που μετατρέπει μεμονωμένους χαρακτήρες, και clean, που μετατρέπει συμβολοσειρές.

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

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

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

Υλοποίησε τη συνάρτηση transform ώστε να αντικαθιστά κάθε παύλα με κάτω παύλα.

transform '-'  // => "_"

2. Αφαίρεσε όλα τα κενά διαστήματα

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

transform ' '  // => ""

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

Τροποποίησε τη συνάρτηση transform ώστε να μετατρέπει το camelCase σε kebab-case

transform 'D'  // => "-d"

4. Παράλειψε τους χαρακτήρες που είναι ψηφία

Τροποποίησε τη συνάρτηση transform ώστε να παραλείπει κάθε χαρακτήρα που είναι αριθμητικός.

transform '7'  // => ""

5. Αντικατέστησε τα ελληνικά πεζά γράμματα με ερωτηματικά

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

transform 'β' // => "?"

6. Συνδύασε αυτές τις πράξεις για να δουλέψεις σε μια συμβολοσειρά

Υλοποίησε τη συνάρτηση clean ώστε να εφαρμόζει αυτές τις πράξεις σε ολόκληρη τη συμβολοσειρά.

Οι χαρακτήρες που βρίσκονται έξω από τους κανόνες θα πρέπει να περνούν αναλλοίωτοι.

clean "  a2b Cd-ω😀  " //  => "ab-cd_?😀"

Συναρμολόγηση μιας συμβολοσειράς από χαρακτήρες

Αυτό το θέμα θα καλυφθεί αναλυτικά αργότερα στο πρόγραμμα σπουδών.

Για την ώρα, μπορεί να σου φανεί χρήσιμο να ξέρεις ότι υπάρχει μια συνάρτηση υψηλότερης τάξης που ονομάζεται String.collect και μετατρέπει μια συλλογή από chars σε συμβολοσειρά, χρησιμοποιώντας μια συνάρτηση που δίνεις εσύ.

let transform ch = $"{ch}_"
String.collect transform "abc"  // =>  "a_b_c_"
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
F# Exercism

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

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