Skip to content

Latest commit

 

History

History
119 lines (87 loc) · 11.5 KB

README.md

File metadata and controls

119 lines (87 loc) · 11.5 KB

Αρχείο Πανελλήνιου Διαγωνισμού Πληροφορικής (ΠΔΠ)

Το pdp-archive είναι σελίδα με στόχο την συλλογή εκφωνήσεων, testcases, λύσεων και κωδίκων για τους πανελλήνιους διαγωνισμούς πληροφορικής από τον 22ο και έπειτα, όπου και πρωτοεισήχθη το Hellenico. Οι εκφωνήσεις, τα testcases και οι κώδικες υπάρχουν ήδη σε αυτό τον φάκελο. Επομένως, μένει η συγγραφή (υψηλής ποιότητας) λύσεων για τα θέματα του διαγωνισμού.

Πώς να συνεισφέρετε

Μπορείτε να συνεισφέρετε με οποιοδήποτε από τα εξής:

  1. Συγγραφή λύσεων για κάποιο πρόβλημα. Στοχεύουμε για λύσεις που εξηγούν τις βέλτιστες λύσεις και παραδίδουν ενδεικτικούς κώδικες που τις υλοποιούν. Πολύ συχνά βοηθάει η εξήγηση λιγότερο αποδοτικών λύσεων. Σημείωση: Οι λύσεις δεν χρειάζεται να εξηγούν όλους τους γνωστούς αλγόριθμους που χρησιμοποιούν, αλλά θα πρέπει να δίνουν τα σωστά ονόματα ώστε να τους βρει κάποιους (ή μπορείτε να γράψετε ένα άρθρο στον Καλλίνικο).
  2. Μεταφορά εκφωνήσεων από pdf σε αρχεία markdown. Αυτό βοηθάει στο εξής:
    1. Είναι δυνατόν να διορθώσουμε πιθανά λάθη (ορθογραφικά ή και πιο σοβαρά).
    2. Είναι δυνατόν να προσθέσουμε πράγματα που λείπουν (πχ memory constraints).
    3. Είναι πιο εύκολο να τα μεταφέρουμε σε κάποιο άλλο format (πχ LaTeX ή για κάποιον grader).
  3. Εντοπισμός και διόρθωση λαθών σε εκφωνήσεις και λύσεις.

Οι λύσεις είναι γραμμένες σε markdown που είναι μία πολύ απλή γλώσσα για μορφοποίηση κειμένων (δείτε εντολές εδώ). Μπορείτε να γράψετε μαθηματικά ανάμεσα σε $$ (δείτε εδώ για σύμβολα).

Οδηγίες

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

Πώς να τρέξετε τοπικά το site

  1. Ακολουθήστε τα βήματα για την εγκατάσταση του Jekyll (και της Ruby) εδώ. Επιλέξτε το άρθρο ανάλογα με το λειτουργικό σύστημα που έχετε.
  2. Κάντε clone αυτό το repository σας στον υπολογιστή σας. (Αν τώρα ξεκινάτε με το GitHub, δείτε αυτό.) Το μόνο που χρειάζεται να μάθετε είναι τι σημαίνει clone, commit, pull και merge)
  3. Πηγαίνετε στο τοπικό directory που κάνατε clone το repository.
  4. Τρέξτε τις εντολές gem update --system και bundle update --bundler.
  5. Τρέξτε την εντολή bundle exec jekyll serve για να προβάλετε το site από τον υπολογιστή σας. Μερικές επιπλέον χρήσιμες παράμετροι στην εντολή αυτή: --incremental για γρηγορότερη μεταγλώττιση του site στις αλλαγές των αρχείων σας και --host=0.0.0.0 για πρόσβαση μέσω browser από όλο το LAN.
  6. Πηγαίνετε στην σελίδα localhost:4000ip_address:4000) στον browser σας για να δείτε το site.
  7. Κάθε αλλαγή που κάνετε θα ανανεώνεται το site.
  8. Για να το σταματήσετε πατήστε Ctr+C και μετά Y.

Οδηγίες για την προσθήκη καινούργιας χρονιάς

Ακολουθήστε τα εξής βήματα:

  1. Προσθέστε στο _config.yml ένα καινούργιο collection με τις default μεταβλητές (ή απλά ξεκινήστε αντιγράφοντας αυτά των άλλων διαγωνισμών). Την ίδια διαδικασία, στο ίδιο αρχείο, κάνουμε και για αυτά που υπάρχουν κάτω από τη γραμμή που γράφει defaults:

  2. Δημιουργήστε ένα data αρχείο στο _data/contests/ΧΧ-PDP.yml

  3. Δημιουργήστε το contests/_ΧΧ-PDP/index.md με μόνο τα εξής:

    ---
    contest_no: XX
    layout: summary
    ---
    
  4. Ελέγξτε ότι στο localhost:4000/XX-PDP εμφανίζεται μία σελίδα χωρίς προβλήματα. Μπορεί να πρέπει να σταματήσετε το bundle exec jekyll serve και να το ξανατρέξετε.

Δείτε ένα παράδειγμα commit.

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

Ακολουθήστε τα εξής βήματα:

  1. Βρείτε το αρχείο _data/contests/ΧΧ-PDP.yml. Αυτό περιέχει όλα τα προβλήματα για έναν διαγωνισμό.

  2. Δημιουργήστε μία καινούργια εισαγωγή με την εξής δομή: (Δείτε αυτόν τον φάκελο για εκφωνήσεις, κώδικες και testcases)

    {codename - Το όνομα του αρχείου ειδόδου.}:
       full_name: {Γράψτε ολόκληρο τον τίτλο του προβλήματος. Κεφαλαία μόνο στην πρώτη λέξη και σε όσες χρειάζονται.}
       stage: {Οποιαδήποτε από "a", "bgym", "blyk", "c", "camp_j", "camp_s", "camp_c"}
       statement_pdf_url: {Link στo pdf της επίσημης εκφώνησης.}
       testcases_url: {Link στο zip με τα testcases.}
       solution: false
       solution_author: {Συγγραφείς της λύσης χωρισμένοι με κόμμα, π.χ. "Ονοματεπώνυμο1 [, Ονοματεπώνυμο2]"}
       codes_in_git: false
       solution_tags: {Λίστα με tags για τις λύσεις του προβλήματος, πχ ["binary search", "two pointers"]}
       {optional} points: {Για πόσους πόντους μετρούσε αυτό το πρόβλημα στον διαγωνισμό (κυρίως για 3η φάση).}
       on_judge: {false, αν το πρόβλημα δεν υπάρχει στον judge.}
    
  3. Ελέγξτε ότι εμφανίζεται το πρόβλημα στο localhost:4000/XX-PDP. (Για να δείτε την αλλαγή, μπορεί να πρέπει να ανανεώσετε το contests/_ΧΧ-PDP/index.md, πχ σβήνοντας έναν χαρακτήρα, αποθηκεύοντας και ξαναβάζοντας τον χαρακτήρα και ξανααποθηκεύοντας)

Δείτε ένα παράδειγμα commit.

Οδηγίες για την προσθήκη κώδικα

Για να προσθέσετε κώδικα και να ελέγξετε ότι περνάει τα testcases, ακολουθήστε τις οδηγίες στο _includes/source_code/README.md. Αφού προσθέσετε την πρώτη λύση, αλλάξτε το codes_in_git: true στο αντίστοιχο _data/contests/ΧΧ-PDP.yml.

Οδηγίες για την προσθήκη λύσης

Ακολουθήστε τα εξής βήματα:

  1. Βεβαιωθείτε ότι έχετε προσθέσει το πρόβλημα για το οποίο θα προσθέσετε λύση (δείτε εδώ).

  2. Βρείτε την εισαγωγή για το πρόβλημα στο _data/contests/ΧΧ-PDP.yml.

  3. Αλλάξτε τη μεταβλητή solution: false σε solution: true.

  4. Στον φάκελο contests/_XX-PDP δημιουργήστε το αρχείο {φάση}-{codename}-solution.md (πχ c-dnaseq-solution.md).

  5. Ξεκινήστε το αρχείο με

    ---
    layout: solution
    codename: {codename προβλήματος}
    ---
    
  6. Γράψτε την λύση.

Δείτε ένα παράδειγμα commit.

Σημείωση: Αφού προσθέσετε τον κώδικα (ακολουθώντας τις οδηγίες εδώ), μπορείτε να βάλετε κομμάτια του κώδικα κατευθείαν στη λύση σας με την εντολή: {% include code.md solution_name='my_solution.cc' start=5 end=7 %} (ή χωρίς το start και end για να το βάλετε ολόκληρο). Έτσι αποφεύγετε να έχετε τον κώδικα σε δύο μέρη. (Βεβαιωθείτε ότι ο κώδικας δεν έχει {%, {{, %})

Οδηγίες για προσθήκη εκφώνησης

Ακολουθήστε τα εξής βήματα:

  1. Βεβαιωθείτε ότι έχετε προσθέσει το πρόβλημα για το οποίο θα προσθέσετε την εκφώνηση (δείτε εδώ).

  2. Βρείτε την εισαγωγή για το πρόβλημα στο _data/contests/ΧΧ-PDP.yml.

  3. Προσθέστε το statement_md: true.

  4. Στον φάκελο contests/_XX-PDP δημιουργήστε το αρχείο {φάση}-{codename}-statement.md (πχ c-dnaseq-statement.md).

  5. Ξεκινήστε το αρχείο με

    ---
    layout: statement
    codename: {codename προβλήματος}
    ---
    
  6. Γράψτε την εκφώνηση.

Δείτε ένα παράδειγμα commit.