Σκακιέρα

Σκακιέρα

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

Εισαγωγή

Ας υποθέσουμε ότι θέλεις όλους τους μη αρνητικούς ακέραιους μέχρι το 1000. Θα ήταν γελοίο αν έπρεπε να τους πληκτρολογήσεις σε έναν πίνακα.

Για αυτό έχουμε τον τύπο range:

julia> 0:1000
0:1000

julia> typeof(0:1000)
UnitRange{Int64}

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

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

Αν χρειάζεσαι ένα εύρος ως διάνυσμα, χρησιμοποίησε τη συνάρτηση collect() για μετατροπή:

julia> collect(0:5)
6-element Vector{Int64}:
 0
 1
 2
 3
 4
 5

Το βήμα μπορεί να οριστεί, στην περίπτωση αυτή 0.3:

julia>  collect(1.0:0.3:2.0)
4-element Vector{Float64}:
 1.0
 1.3
 1.6
 1.9

Άρα η σύνταξη είναι start:stepsize:stop. Και τα δύο ακραία όρια περιλαμβάνονται, όπως φαίνεται στο παράδειγμα με τους ακέραιους. Αν το βήμα δεν διαιρεί ακριβώς το stop - start, το τελευταίο στοιχείο θα αποφύγει να ξεπεράσει το stop.

Εύρη χαρακτήρων

Μη αριθμητικές ακολουθίες μπορούν επίσης να χρησιμοποιηθούν σε εύρη. Το πιο απλό παράδειγμα είναι τα γράμματα ASCII:

julia> 'a':'d'
'a':1:'d'

julia> typeof('a':'d')
StepRange{Char, Int64}

julia> collect('a':'d')
4-element Vector{Char}:
 'a': ASCII/Unicode U+0061 (category Ll: Letter, lowercase)
 'b': ASCII/Unicode U+0062 (category Ll: Letter, lowercase)
 'c': ASCII/Unicode U+0063 (category Ll: Letter, lowercase)
 'd': ASCII/Unicode U+0064 (category Ll: Letter, lowercase)

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

Συναρτήσεις και τελεστές για εύρη

Έλεγξε τα όρια ενός εύρους με τις first() και last().

 r = 1:10  # => 1:10
 first(r)  # => 1
 last(r)   # => 10

Περισσότερα για την ευρετηρίαση διανυσμάτων

Εύρη ακεραίων και διανύσματα μπορούν να χρησιμοποιηθούν στην ευρετηρίαση διανυσμάτων:

nums = collect(10.0:50.0)
nums[3:2:7]  # gives [12.0, 14.0, 16.0]
nums[ [3, 5, 7] ] # also gives [12.0, 14.0, 16.0]

Οδηγίες

Ως λάτρης του σκακιού, θα ήθελες να γράψεις τη δική σου εκδοχή του παιχνιδιού. Ναι, μπορεί να υπάρχουν ήδη πολλές υλοποιήσεις σκακιού διαθέσιμες στο διαδίκτυο, αλλά η δική σου θα είναι μοναδική!

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

Κάθε τετράγωνο της σκακιέρας προσδιορίζεται από ένα ζεύγος γράμματος-αριθμού. Οι κάθετες στήλες των τετραγώνων, που ονομάζονται στήλες, επισημαίνονται από το A έως το H. Οι οριζόντιες σειρές των τετραγώνων, που ονομάζονται γραμμές, αριθμούνται από το 1 έως το 8.

1. Όρισε το εύρος των γραμμών

Υλοποίησε τη συνάρτηση rank_range(). Θα πρέπει να επιστρέφει ένα εύρος ακεραίων, από το 1 έως το 8.

julia> rank_range()
# output omitted

2. Όρισε το εύρος των στηλών

Υλοποίησε τη συνάρτηση file_range(). Θα πρέπει να επιστρέφει ένα εύρος χαρακτήρων, από το κεφαλαίο γράμμα A έως το κεφαλαίο γράμμα H.

julia> file_range()
# output omitted

3. Μετέτρεψε το εύρος των γραμμών σε διάνυσμα γραμμών

Υλοποίησε τη συνάρτηση ranks(). Θα πρέπει να επιστρέφει ένα διάνυσμα ακεραίων, από το 1 έως το 8. Μη γράψεις το διάνυσμα με το χέρι, δημιούργησέ το από το εύρος που επιστρέφει η συνάρτηση rank_range().

julia> ranks()
[1, 2, 3, 4, 5, 6, 7, 8]

4. Μετέτρεψε το εύρος των στηλών σε διάνυσμα στηλών

Υλοποίησε τη συνάρτηση files. Θα πρέπει να επιστρέφει ένα διάνυσμα χαρακτήρων, από το 'A' έως το 'H'. Μη γράψεις το διάνυσμα με το χέρι, δημιούργησέ το από το εύρος που επιστρέφει η συνάρτηση file_range().

julia> files()
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Julia Exercism

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

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