Προσθήκη ετικετών σε λύσεις


Οι ετικέτες αναλυτή χρησιμοποιούνται για να προσδιορίσουν πώς έχει λυθεί μια λύση.

Στη συνέχεια, αυτές οι ετικέτες μπορούν να χρησιμοποιηθούν για:

  • Σύνδεση μιας λύσης με προσεγγίσεις
  • Σύνδεση μιας λύσης με έννοιες
  • Αναζήτηση λύσεων με συγκεκριμένες ετικέτες

Μορφή

Μια ετικέτα είναι μια συμβολοσειρά που έχει τη μορφή: <category>:<thing>.

Υποστηρίζουμε τέσσερις διαφορετικές κατηγορίες, από το υψηλότερο προς το χαμηλότερο επίπεδο:

Κατηγορία Περιγραφή Εξειδίκευση Παραδείγματα
paradigm Ένα παράδειγμα προγραμματισμού Πολύ υψηλού επιπέδου, δεν είναι ειδικό για κάθε track imperative, functional
technique Μια τεχνική που χρησιμοποιείται Υψηλού επιπέδου, οι περισσότερες δεν είναι ειδικές για κάθε track recursion, immutability
construct Μια δομή της γλώσσας Πολλές δεν είναι ειδικές για κάθε track bitwise-and, for-loop
uses Χρήση ειδική για τη γλώσσα, όπως τύποι ή μέθοδοι Χαμηλού επιπέδου, ειδική για κάθε track DateTime.add_seconds, IEnumerable

Μερικά παραδείγματα ετικετών:

  • paradigm:functional
  • technique:recursion
  • construct:bitwise-and
  • uses:DateTime.add_seconds

Συνήθως χρησιμοποιούμενες ετικέτες

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

Παράδειγμα

Ετικέτα Περιγραφή
paradigm:array χρησιμοποιεί προγραμματισμό με πίνακες.
paradigm:declarative χρησιμοποιεί δηλωτικό προγραμματισμό.
paradigm:functional χρησιμοποιεί συναρτησιακό προγραμματισμό.
paradigm:generic χρησιμοποιεί γενικευμένο προγραμματισμό.
paradigm:imperative χρησιμοποιεί προστακτικό προγραμματισμό.
paradigm:logic χρησιμοποιεί λογικό προγραμματισμό.
paradigm:meta χρησιμοποιεί μεταπρογραμματισμό.
paradigm:object-oriented χρησιμοποιεί αντικειμενοστρεφή προγραμματισμό.
paradigm:procedural χρησιμοποιεί διαδικασιακό προγραμματισμό.
paradigm:reflective χρησιμοποιεί ανακλαστικό προγραμματισμό.
paradigm:stack-oriented χρησιμοποιεί προγραμματισμό προσανατολισμένο στη στοίβα.

Τεχνικές

Ετικέτα Περιγραφή
technique:bit-manipulation χειρίζεται bit, συνήθως μέσω τελεστών bitwise (π.χ. AND, XOR ή ολίσθηση αριστερά)
technique:bit-shifting μετατοπίζει τα bit ενός αριθμού
technique:boolean-logic εκτελεί λογική Boolean (AND, OR, NOT)
technique:composition χρησιμοποιεί σύνθεση
technique:concurrency εκτελεί κώδικα ταυτόχρονα
technique:enumeration απαριθμεί τιμές
technique:error-handling χειρίζεται σφάλματα
technique:exceptions πιάνει ή πετάει εξαιρέσεις
technique:function-composition χρησιμοποιεί σύνθεση συναρτήσεων
technique:generator χρησιμοποιεί γεννήτρια
technique:higher-order-functions χρησιμοποιεί συναρτήσεις υψηλότερης τάξης
technique:immutability χρησιμοποιεί αμεταβλητότητα
technique:immutable-collection χρησιμοποιεί μια συλλογή της οποίας τα περιεχόμενα είναι αμετάβλητα
technique:inheritance χρησιμοποιεί κληρονομικότητα
technique:laziness παράγει τιμές τεμπέλικα, μόνο όταν χρειάζεται
technique:locks χρησιμοποιεί κλειδώματα για αποκλειστική πρόσβαση σε πόρους
technique:looping χρησιμοποιεί βρόχους
technique:math χρησιμοποιεί μαθηματικά
technique:memory-management διαχειρίζεται τη μνήμη
technique:ordering διατάσσει δεδομένα
technique:parallelism εκτελεί κώδικα παράλληλα
technique:parser αναλύει δεδομένα
technique:pointers χρησιμοποιεί δείκτες
technique:randomness χρησιμοποιεί τυχαιότητα
technique:recursion χρησιμοποιεί αναδρομή
technique:regular-expression χρησιμοποιεί κανονικές εκφράσεις
technique:short-circuiting χρησιμοποιεί βραχυκύκλωμα για να αποφύγει περιττές αξιολογήσεις
technique:sorted-collection χρησιμοποιεί μια συλλογή της οποίας τα στοιχεία είναι πάντα ταξινομημένα
technique:sorting ταξινομεί δεδομένα
technique:tail-call-optimization χρησιμοποιεί βελτιστοποίηση ουράς για αποδοτική αναδρομή
technique:type-conversion μετατρέπει τιμές από έναν τύπο σε άλλον τύπο
technique:unsafe χρησιμοποιεί μη ασφαλή κώδικα (για παράδειγμα αριθμητική δεικτών)

Δομές

Ετικέτα Περιγραφή
construct:abstract-class ορίζει μια αφηρημένη κλάση
construct:abstract-method ορίζει μια αφηρημένη μέθοδο
construct:add-assignment συνδυάζει πρόσθεση με ανάθεση
construct:add χρησιμοποιεί πρόσθεση
construct:array χρησιμοποιεί ή δηλώνει πίνακα
construct:assignment αναθέτει ή δεσμεύει μια τιμή σε μια μεταβλητή/όνομα
construct:async-await χρησιμοποιεί async/await
construct:attribute επισημαίνει ένα μέλος με μεταδεδομένα
construct:auto-implemented-property ορίζει μια αυτόματα υλοποιημένη ιδιότητα
construct:big-integer χρησιμοποιεί μεγάλο ακέραιο
construct:binary-number ορίζει έναν αριθμό σε δυαδικό συμβολισμό
construct:bit-array χρησιμοποιεί ή δηλώνει πίνακα bit
construct:bitwise-and-assignment συνδυάζει bitwise AND με ανάθεση
construct:bitwise-and εκτελεί bitwise AND
construct:bitwise-left-shift-assignment συνδυάζει bitwise ολίσθηση αριστερά με ανάθεση
construct:bitwise-left-shift εκτελεί bitwise ολίσθηση αριστερά
construct:bitwise-not εκτελεί bitwise NOT
construct:bitwise-or-assignment συνδυάζει bitwise OR με ανάθεση
construct:bitwise-or εκτελεί bitwise OR
construct:bitwise-right-shift-assignment συνδυάζει bitwise ολίσθηση δεξιά με ανάθεση
construct:bitwise-right-shift εκτελεί bitwise ολίσθηση δεξιά
construct:bitwise-xor-assignment συνδυάζει bitwise XOR με ανάθεση
construct:bitwise-xor εκτελεί bitwise XOR
construct:block ορίζει ένα μπλοκ που περιέχει μια λίστα εντολών
construct:boolean ορίζει ή χρησιμοποιεί μια τιμή Boolean
construct:boxing χρησιμοποιεί boxing
construct:break βγαίνει από έναν βρόχο
construct:byte χρησιμοποιεί έναν ανυπόγραφο ακέραιο 8 bit
construct:catch πιάνει μια εξαίρεση
construct:char χρησιμοποιεί έναν χαρακτήρα
construct:checked-arithmetic χρησιμοποιεί ελεγχόμενη αριθμητική (που προστατεύει από υπερχειλίσεις)
construct:class ορίζει μια κλάση
construct:collection-initializer ορίζει τις τιμές μιας συλλογής μέσω ενός αρχικοποιητή
construct:command ορίζει μια εντολή
construct:comment ορίζει ένα σχόλιο
construct:comparison-chaining αλυσιδώνει κλήσεις σύγκρισης
construct:comparison συγκρίνει δύο τιμές ως προς τη σχετική τους σειρά
construct:complex-number χρησιμοποιεί έναν μιγαδικό αριθμό
construct:computed-string ορίζει μια υπολογισμένη συμβολοσειρά
construct:concatenation συνενώνει τιμές
construct:conditional-access προσπελαύνει μια μέθοδο υπό συνθήκη
construct:conditional-operator χρησιμοποιεί έναν τριαδικό τελεστή συνθήκης
construct:conditional εκτελεί κώδικα υπό συνθήκη
construct:constant ορίζει μια σταθερή (αμετάβλητη) τιμή
construct:constructor ορίζει έναν κατασκευαστή
construct:continue συνεχίζει στην επόμενη επανάληψη ενός βρόχου
construct:conversion-operator ορίζει έναν τελεστή μετατροπής
construct:copy αντιγράφει μια τιμή
construct:coroutine ορίζει ή χρησιμοποιεί μια συνρουτίνα
construct:custom-attribute ορίζει ένα προσαρμοσμένο χαρακτηριστικό
construct:date-time χρησιμοποιεί μια τιμή που αντιπροσωπεύει συνδυασμό ημερομηνίας και ώρας
construct:date χρησιμοποιεί μια τιμή που αντιπροσωπεύει μια ημερομηνία (χωρίς ώρα)
construct:decimal χρησιμοποιεί έναν αριθμό κινητής υποδιαστολής 128 bit
construct:decrement μειώνει μια τιμή κατά ένα
construct:default-interface-implementation ορίζει προεπιλεγμένη υλοποίηση σε μια διεπαφή
construct:default ορίζει μια προεπιλεγμένη τιμή (π.χ. για μια παράμετρο)
construct:destructuring αποδομεί μια τιμή στα μέρη της
construct:dictionary-comprehension δημιουργεί ένα λεξικό μέσω μιας κατανόησης
construct:dictionary χρησιμοποιεί/ορίζει ένα λεξικό/map
construct:discard χρησιμοποιεί την ειδική τιμή απόρριψης
construct:divide-assignment συνδυάζει διαίρεση με ανάθεση
construct:divide χρησιμοποιεί διαίρεση
construct:do-while-loop χρησιμοποιεί έναν βρόχο do-while
construct:double χρησιμοποιεί έναν αριθμό κινητής υποδιαστολής 64 bit
construct:else ορίζει έναν κλάδο else
construct:enum ορίζει ή χρησιμοποιεί ένα enum (απαρίθμηση τιμών)
construct:equality συγκρίνει την ισότητα δύο τιμών
construct:error ορίζει ή χρησιμοποιεί ένα σφάλμα
construct:event ορίζει ή χρησιμοποιεί συμβάντα
construct:exception ορίζει ή χρησιμοποιεί εξαιρέσεις
construct:explicit-conversion μετατρέπει ρητά από έναν τύπο σε άλλον τύπο
construct:explicit-import εισάγει μόνο επιλεγμένη λειτουργικότητα
construct:exponentiation υπολογίζει τη δύναμη μιας τιμής
construct:expression-bodied-member ορίζει ένα μέλος με σώμα παράστασης
construct:extension-method ορίζει μια μέθοδο επέκτασης
construct:field-access προσπελαύνει ένα πεδίο
construct:field ορίζει ένα πεδίο
construct:finally χρησιμοποιεί το finally για να διασφαλίσει ότι ένα συγκεκριμένο μπλοκ κώδικα εκτελείται πάντα
construct:flags-enum ορίζει ή χρησιμοποιεί ένα enum με σημαίες
construct:float χρησιμοποιεί έναν αριθμό κινητής υποδιαστολής 32 bit
construct:floating-point-number χρησιμοποιεί έναν αριθμό κινητής υποδιαστολής
construct:for-loop χρησιμοποιεί έναν for βρόχο
construct:foreach χρησιμοποιεί έναν βρόχο foreach
construct:function-overloading χρησιμοποιεί υπερφόρτωση συναρτήσεων
construct:function ορίζει μια συνάρτηση
construct:generator ορίζει μια συνάρτηση ή μέθοδο γεννήτρια
construct:generic-function ορίζει μια συνάρτηση παραμετροποιημένη με έναν ή περισσότερους τύπους
construct:generic-method ορίζει μια μέθοδο παραμετροποιημένη με έναν ή περισσότερους τύπους
construct:generic-type ορίζει έναν τύπο παραμετροποιημένο με έναν ή περισσότερους τύπους
construct:getter ορίζει έναν getter
construct:global-function ορίζει μια συνάρτηση που είναι διαθέσιμη καθολικά
construct:global-variable ορίζει μια μεταβλητή που είναι διαθέσιμη καθολικά
construct:header ορίζει ένα αρχείο header
construct:hexadecimal-number ορίζει έναν αριθμό σε δεκαεξαδικό συμβολισμό
construct:if χρησιμοποιεί μια εντολή if
construct:implicit-conversion μετατρέπει σιωπηρά από έναν τύπο σε άλλον τύπο
construct:implicit-loop διατρέχει σιωπηρά μια συλλογή τιμών
construct:implicit-return επιστρέφει σιωπηρά μια τιμή
construct:import εισάγει λειτουργικότητα που υλοποιείται αλλού (π.χ. από ένα namespace/module)
construct:increment αυξάνει μια τιμή κατά ένα
construct:index-operator ορίζει έναν τελεστή για πρόσβαση σε ένα αντικείμενο με θέση
construct:indexer ορίζει ή χρησιμοποιεί έναν ευρετηριαστή
construct:indexing προσπελαύνει μια τιμή με βάση τη θέση της
construct:inequality συγκρίνει την ανισότητα δύο τιμών
construct:infix-operator ορίζει έναν τελεστή infix
construct:initialization αρχικοποιεί ένα αντικείμενο μετά τη δημιουργία του
construct:initializer-list αρχικοποιεί τις τιμές των πεδίων ενός αντικειμένου
construct:initializer αρχικοποιεί ένα αντικείμενο
construct:instance δημιουργεί ή χρησιμοποιεί ένα στιγμιότυπο ενός τύπου
construct:instantiation δημιουργεί ένα στιγμιότυπο ενός τύπου
construct:int χρησιμοποιεί έναν προσημασμένο ακέραιο 32 bit
construct:integral-number χρησιμοποιεί έναν ακέραιο αριθμό
construct:interface ορίζει μια διεπαφή
construct:invocation καλεί μια μέθοδο/συνάρτηση
construct:iterator ορίζει μια συνάρτηση ή μέθοδο που μπορεί να διατραπεί επαναληπτικά
construct:jagged-array χρησιμοποιεί έναν οδοντωτό πίνακα (έναν πίνακα από πίνακες)
construct:lambda ορίζει μια συνάρτηση λάμδα (γνωστή και ως "ανώνυμη συνάρτηση")
construct:linked-list χρησιμοποιεί μια συνδεδεμένη λίστα
construct:linq χρησιμοποιεί LINQ
construct:list-comprehension κατασκευάζει μια λίστα μέσω μιας κατανόησης
construct:list χρησιμοποιεί μια λίστα
construct:local-function ορίζει μια τοπική συνάρτηση
construct:local-variable ορίζει μια τοπική μεταβλητή
construct:lock χρησιμοποιεί ένα κλείδωμα
construct:logical-and εκτελεί λογικό AND
construct:logical-not εκτελεί λογικό NOT
construct:logical-or εκτελεί λογικό OR
construct:long χρησιμοποιεί έναν προσημασμένο ακέραιο 64 bit
construct:loop ορίζει έναν βρόχο
construct:macro ορίζει μια μακροεντολή
construct:membership-test ελέγχει αν μια τιμή ανήκει σε μια άλλη τιμή
construct:metatable ορίζει έναν μεταπίνακα
construct:method-chaining αλυσιδώνει πολλές κλήσεις μεθόδων
construct:method-overloading χρησιμοποιεί υπερφόρτωση μεθόδων
construct:method-override ορίζει μια μέθοδο που παρακάμπτεται
construct:method ορίζει μια μέθοδο
construct:module ορίζει ένα άρθρωμα (ομαδοποίηση κώδικα)
construct:modulo-assignment συνδυάζει το υπόλοιπο της διαίρεσης με ανάθεση
construct:modulo χρησιμοποιεί το υπόλοιπο της διαίρεσης
construct:multi-dimensional-array χρησιμοποιεί έναν πίνακα με πολλαπλές διαστάσεις
construct:multiline-string ορίζει μια συμβολοσειρά πολλαπλών γραμμών
construct:multiple-assignment αναθέτει πολλαπλές τιμές ταυτόχρονα
construct:multiple-dispatch χρησιμοποιεί πολλαπλή αποστολή
construct:multiply-assignment συνδυάζει πολλαπλασιασμό με ανάθεση
construct:multiply χρησιμοποιεί πολλαπλασιασμό
construct:named-argument περνάει ένα όρισμα με το όνομά του
construct:namespace ορίζει έναν χώρο ονομάτων (ομαδοποίηση κώδικα)
construct:nested-function ορίζει μια εμφωλευμένη συνάρτηση
construct:nested-type ορίζει έναν εμφωλευμένο τύπο
construct:nesting χρησιμοποιεί εμφώλευση
construct:nint χρησιμοποιεί έναν προσημασμένο ακέραιο ειδικό για την πλατφόρμα (32 ή 64 bit)
construct:nuint χρησιμοποιεί έναν ανυπόγραφο ακέραιο ειδικό για την πλατφόρμα (32 ή 64 bit)
construct:null χρησιμοποιεί null/nil για να αναπαραστήσει την απουσία μιας τιμής
construct:nullability χειρίζεται τιμές null/nil
construct:number χρησιμοποιεί έναν αριθμό (προσημασμένο ή μη)
construct:object-initializer ορίζει τις τιμές ενός αντικειμένου μέσω ενός αρχικοποιητή
construct:octal-number ορίζει έναν αριθμό σε οκταδικό συμβολισμό
construct:operator-overloading χρησιμοποιεί υπερφόρτωση τελεστών
construct:option χρησιμοποιεί έναν τύπο επιλογής
construct:optional-parameter ορίζει μια προαιρετική παράμετρο
construct:overflow χρησιμοποιεί αριθμητική υπερχείλιση
construct:parameter ορίζει μια παράμετρο
construct:parenthesized-expression περικλείει μια παράσταση σε παρενθέσεις
construct:pattern-matching χρησιμοποιεί αντιστοίχιση προτύπων
construct:pattern ορίζει ένα πρότυπο που χρησιμοποιείται στην αντιστοίχιση προτύπων
construct:pipe-backward χρησιμοποιεί σωλήνα προς τα πίσω
construct:pipe-forward χρησιμοποιεί σωλήνα προς τα εμπρός
construct:pipeline ορίζει ένα pipeline
construct:point-free ορίζει συναρτήσεις χωρίς τα ορίσματα στα οποία λειτουργούν
construct:pointer χρησιμοποιεί έναν δείκτη
construct:postfix-decrement μειώνει μια τιμή κατά ένα χρησιμοποιώντας συμβολισμό postfix
construct:postfix-increment αυξάνει μια τιμή κατά ένα χρησιμοποιώντας συμβολισμό postfix
construct:prefix-decrement μειώνει μια τιμή κατά ένα χρησιμοποιώντας συμβολισμό prefix
construct:prefix-increment αυξάνει μια τιμή κατά ένα χρησιμοποιώντας συμβολισμό prefix
construct:print εκτυπώνει μια τιμή στην κονσόλα
construct:property ορίζει μια ιδιότητα (getter/setter)
construct:query-expression υποβάλλει ερώτημα σε δεδομένα μέσω μιας παράστασης
construct:queue χρησιμοποιεί μια ουρά
construct:range ορίζει ένα εύρος
construct:read-only ορίζει μια τιμή μόνο για ανάγνωση
construct:record ορίζει μια καταγραφή
construct:regular-expression ορίζει ή χρησιμοποιεί μια κανονική έκφραση
construct:result χρησιμοποιεί έναν τύπο αποτελέσματος
construct:return-type ορίζει τον τύπο επιστροφής μιας συνάρτησης ή μεθόδου
construct:return επιστρέφει από μια συνάρτηση/μέθοδο
construct:sbyte χρησιμοποιεί έναν προσημασμένο ακέραιο 8 bit
construct:scientific-notation-number ορίζει έναν αριθμό σε επιστημονικό συμβολισμό
construct:set-comprehension δημιουργεί ένα σύνολο μέσω μιας κατανόησης
construct:set χρησιμοποιεί ένα σύνολο
construct:setter ορίζει έναν setter
construct:short χρησιμοποιεί έναν προσημασμένο ακέραιο 16 bit
construct:slice χρησιμοποιεί ένα τμήμα
construct:stack χρησιμοποιεί μια στοίβα
construct:static-field ορίζει ένα στατικό πεδίο
construct:static-method ορίζει μια στατική μέθοδο
construct:string-formatting κατασκευάζει μια συμβολοσειρά μέσω μιας συμβολοσειράς μορφοποίησης
construct:string-interpolation ορίζει μια συμβολοσειρά με παρεμβολή
construct:string ορίζει μια συμβολοσειρά
construct:struct ορίζει ένα struct
construct:subtract-assignment συνδυάζει αφαίρεση με ανάθεση
construct:subtract χρησιμοποιεί αφαίρεση
construct:sum-type ορίζει έναν τύπο αθροίσματος
construct:switch χρησιμοποιεί ένα switch
construct:table ορίζει ένα table
construct:template-alias ορίζει ένα ψευδώνυμο για ένα πρότυπο
construct:template-parameter ορίζει μια παράμετρο προτύπου
construct:template ορίζει ένα πρότυπο
construct:throw πετάει μια εξαίρεση
construct:time χρησιμοποιεί ένα αντικείμενο που αντιπροσωπεύει την ώρα
construct:try χειρίζεται ρητά μια εξαίρεση
construct:tuple χρησιμοποιεί μια πλειάδα
construct:type-alias ορίζει ένα ψευδώνυμο για έναν τύπο
construct:type-conversion μετατρέπει (κάνει cast) μια τιμή σε άλλον τύπο
construct:type-extension επεκτείνει έναν τύπο με νέα λειτουργικότητα
construct:type-inference συμπεραίνει αυτόματα τον τύπο μιας τιμής/συνάρτησης
construct:type-test ελέγχει αν μια τιμή έχει συγκεκριμένο τύπο
construct:uint χρησιμοποιεί έναν ανυπόγραφο ακέραιο 32 bit
construct:ulong χρησιμοποιεί έναν ανυπόγραφο ακέραιο 64 bit
construct:unary-minus χρησιμοποιεί μονομελές μείον
construct:unary-plus χρησιμοποιεί μονομελές συν
construct:underscored-number χρησιμοποιεί έναν αριθμό με κάτω παύλες ως διαχωριστικά ψηφίων
construct:union-type ορίζει έναν τύπο ένωσης
construct:user-defined-exception ορίζει μια προσαρμοσμένη εξαίρεση ορισμένη από τον χρήστη
construct:ushort χρησιμοποιεί έναν ανυπόγραφο ακέραιο 16 bit
construct:using-directive χρησιμοποιεί κώδικα από άλλο αρχείο
construct:using-statement αναθέτει και αποδεσμεύει μια τιμή μέσω της εντολής using
construct:varargs ορίζει μια παράμετρο που δέχεται μηδέν ή περισσότερες τιμές
construct:variable δηλώνει μεταβλητή
construct:vector χρησιμοποιεί ένα διάνυσμα
construct:verbatim-string χρησιμοποιεί μια συμβολοσειρά verbatim (χωρίς ακολουθίες διαφυγής)
construct:virtual-method ορίζει μια εικονική μέθοδο
construct:visibility-modifiers καθορίζει την ορατότητα μιας δομής (π.χ. μιας μεθόδου ή κλάσης)
construct:while-loop χρησιμοποιεί έναν while βρόχο
construct:yield αποδίδει μια τιμή σε έναν βρόχο τεμπέλικα

Χρήσεις

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