Το pdp-archive είναι σελίδα με στόχο την συλλογή εκφωνήσεων, testcases, λύσεων και κωδίκων για τους πανελλήνιους διαγωνισμούς πληροφορικής από τον 22ο και έπειτα, όπου και πρωτοεισήχθη το Hellenico. Οι εκφωνήσεις, τα testcases και οι κώδικες υπάρχουν ήδη σε αυτό τον φάκελο. Επομένως, μένει η συγγραφή (υψηλής ποιότητας) λύσεων για τα θέματα του διαγωνισμού.
Μπορείτε να συνεισφέρετε με οποιοδήποτε από τα εξής:
- Συγγραφή λύσεων για κάποιο πρόβλημα. Στοχεύουμε για λύσεις που εξηγούν τις βέλτιστες λύσεις και παραδίδουν ενδεικτικούς κώδικες που τις υλοποιούν. Πολύ συχνά βοηθάει η εξήγηση λιγότερο αποδοτικών λύσεων. Σημείωση: Οι λύσεις δεν χρειάζεται να εξηγούν όλους τους γνωστούς αλγόριθμους που χρησιμοποιούν, αλλά θα πρέπει να δίνουν τα σωστά ονόματα ώστε να τους βρει κάποιους (ή μπορείτε να γράψετε ένα άρθρο στον Καλλίνικο).
- Μεταφορά εκφωνήσεων από pdf σε αρχεία markdown. Αυτό βοηθάει στο εξής:
- Είναι δυνατόν να διορθώσουμε πιθανά λάθη (ορθογραφικά ή και πιο σοβαρά).
- Είναι δυνατόν να προσθέσουμε πράγματα που λείπουν (πχ memory constraints).
- Είναι πιο εύκολο να τα μεταφέρουμε σε κάποιο άλλο format (πχ LaTeX ή για κάποιον grader).
- Εντοπισμός και διόρθωση λαθών σε εκφωνήσεις και λύσεις.
Οι λύσεις είναι γραμμένες σε markdown που είναι μία πολύ απλή γλώσσα για μορφοποίηση κειμένων (δείτε εντολές εδώ). Μπορείτε να γράψετε μαθηματικά ανάμεσα σε $$
(δείτε εδώ για σύμβολα).
Αν οποιεσδήποτε από τις παρακάτω οδηγίες δεν δουλέψουν για εσάς, δημιουργήστε ένα καινούργιο issue. Ακόμα καλύτερα, αν ξέρετε τι φταίει, διορθώστε τις οδηγίες.
- Ακολουθήστε τα βήματα για την εγκατάσταση του Jekyll (και της Ruby) εδώ. Επιλέξτε το άρθρο ανάλογα με το λειτουργικό σύστημα που έχετε.
- Θα χρειαστείτε και εγκατάσταση του gem jekyll-redirect-from. Πx σε ubuntu αρκεί η εντολή
gem install jekyll-redirect-from
- Κάντε clone αυτό το repository σας στον υπολογιστή σας. (Αν τώρα ξεκινάτε με το GitHub, δείτε αυτό.) Το μόνο που χρειάζεται να μάθετε είναι τι σημαίνει clone, commit, pull και merge)
- Πηγαίνετε στο τοπικό directory που κάνατε clone το repository.
- Τρέξτε την εντολή
jekyll serve
. - Πηγαίνετε στην σελίδα
localhost:4000
στον browser σας για να δείτε το site. - Κάθε αλλαγή που κάνετε θα ανανεώνεται το site.
- Για να το σταματήσετε πατήστε
Ctr+C
και μετάY
.
Ακολουθήστε τα εξής βήματα:
-
Προσθέστε στο _config.yml ένα καινούργιο collection με τις default μεταβλητές (απλά αντιγράψτε αυτά των άλλων διαγωνισμών). Την ίδια διαδικασία, στο ίδιο αρχείο, κάνουμε και για αυτά που υπάρχουν κάτω από τη γραμμή που γράφειο
defaults:
-
Δημιουργήστε ένα data αρχείο στο
_data/contests/ΧΧ-PDP.yml
-
Δημιουργήστε το
contests/_ΧΧ-PDP/index.md
με μόνο τα εξής:--- contest_no: XX layout: summary ---
-
Ελέγξτε ότι στο
localhost:4000/XX-PDP
εμφανίζεται μία σελίδα χωρίς προβλήματα (μόνο με τις φάσεις). Μπορεί να πρέπει να σταματήσετε τοjekyll serve
και να το ξανατρέξετε.
Δείτε ένα παράδειγμα commit.
Ακολουθήστε τα εξής βήματα:
-
Βρείτε το αρχείο _data/contests/ΧΧ-PDP.yml. Αυτό περιέχει όλα τα προβλήματα για έναν διαγωνισμό.
-
Δημιουργήστε μία καινούργια εισαγωγή με την εξής δομή: (Δείτε αυτόν τον φάκελο για εκφωνήσεις, κώδικες και testcases)
{codename - Το όνομα του αρχείου ειδόδου.}: full_name: {Γράψτε ολόκληρο τον τίτλο του προβλήματος. Κεφαλαία μόνο στην πρώτη λέξη και σε όσες χρειάζονται.} stage: {Οποιαδήποτε από "a", "bgym", "blyk", "c"} statement_pdf_url: {Link στo pdf της επίσημης εκφώνησης.} testcases_url: {Link στο zip με τα testcases.} solution: false solution_author: "Νικόλαος Παπασπύρου" codes_in_git: false codes_url: {Link στο φάκελο με όλους τους κώδικες για το πρόβλημα και για την λύση σας.} solution_tags: {Λίστα με tags για τις λύσεις του προβλήματος, πχ ["binary search", "two pointers"]} {optional} points: {Για πόσους πόντους μετρούσε αυτό το πρόβλημα στον διαγωνισμό (κυρίως για 3η φάση).}
Προτιμότερο από το να δοθεί απλά link για τον κώδικα , είναι να ανεβάσουμε σε αυτό το repository τον κώδικα. Τότε η εντολή codes_url
αντικαθίσταται από την codes_in_git: true
Για να γίνει αυτό, πρέπει να ακολουθήσετε και τις οδηγίες του _includes/source_code/README.md
ώστε να τεστάρετε ότι η λύση σας είναι σωστή.
Δείτε ένα παράδειγμα commit.
Ακολουθήστε τα εξής βήματα:
-
Βεβαιωθείτε ότι έχετε προσθέσει το πρόβλημα για το οποίο θα προσθέσετε λύση (δείτε εδώ).
-
Βρείτε την εισαγωγή για το πρόβλημα στο _data/contests/ΧΧ-PDP.yml.
-
Αλλάξτε τη μεταβλητή
solution: false
σεsolution: true
. -
Στον φάκελο
contests/_XX-PDP
δημιουργήστε το αρχείο{φάση}-{codename}-solution.md
(πχc-dnaseq-solution.md
). -
Ξεκινήστε το αρχείο με
--- layout: solution codename: {codename προβλήματος} ---
-
Γράψτε την λύση.
Δείτε ένα παράδειγμα commit.
Σημείωση: Αφού προσθέσετε τον κώδικα (ακολουθώντας τις οδηγίες εδώ), μπορείτε να βάλετε κομμάτια του κώδικα κατευθείαν στη λύση σας με την εντολή: {% include code.md solution_name='my_solution.cc' start=5 end=7 %}
(ή χωρίς το start
και end
για να το βάλετε ολόκληρο). Έτσι αποφεύγετε να έχετε τον κώδικα σε δύο μέρη. (Βεβαιωθείτε ότι ο κώδικας δεν έχει {%
, {{
, %}
)
Ακολουθήστε τα εξής βήματα:
-
Βεβαιωθείτε ότι έχετε προσθέσει το πρόβλημα για το οποίο θα προσθέσετε λύση (δείτε εδώ).
-
Βρείτε την εισαγωγή για το πρόβλημα στο
_data/contests/ΧΧ-PDP.yml
. -
Προσθέστε το
statement_md: true
. -
Στον φάκελο contests/_XX-PDP δημιουργήστε το αρχείο
{φάση}-{codename}-statement.md
(πχc-dnaseq-statement.md
). -
Ξεκινήστε το αρχείο με
--- layout: statement codename: {codename προβλήματος} ---
-
Γράψτε την εκφώνηση.
Δείτε ένα παράδειγμα commit.