Οι καλύτερες προκλήσεις κωδικοποίησης για αρχάριους: Εύκολη έως δύσκολη εξάσκηση κωδικοποίησης

Οι καλύτερες προκλήσεις κωδικοποίησης για αρχάριους: Εύκολη έως δύσκολη εξάσκηση κωδικοποίησης

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

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

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

Γιατί οι Προκλήσεις Κώδικα Χτίζουν Πραγματικές Δεξιότητες Κωδικοποίησης

Τι μετράει ως πρόκληση; Κάτι μικροσκοπικό με μια προφανή σωστή απάντηση. «Πάρε μια λέξη, πες την ανάποδα.» «Ορίστε μια λίστα με αριθμούς, ποιος είναι ο μεγαλύτερος;» Δεν εγκαθιστάς τίποτα ούτε επιλέγεις κάποιο πλαίσιο. Γράφεις ίσως δέκα γραμμές.

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

  • Ρευστότητα σύνταξης. Τέλος στο να ψάχνεις στο Google πώς να γράψεις έναν βρόχο for για πέμπτη φορά.
  • Δεξιότητες επίλυσης προβλημάτων. Αρχίζετε να κόβετε μια ασαφή εργασία σε βήματα πριν αγγίξετε το πληκτρολόγιο.
  • Λογική σκέψη. Μια κενή λίστα, ένας αρνητικός ακέραιος αριθμός, μια λέξη ενός γράμματος. Αρχίζεις να τα περιμένεις αυτά.
  • Αποσφαλμάτωση. Το κόκκινο κείμενο σφάλματος παύει να μοιάζει με προσβολή.
  • Αυτοπεποίθηση. Κάθε λυμένο πρόβλημα είναι απόδειξη ότι μπορείτε να γράψετε ένα πρόγραμμα μόνοι σας.

Κάποιος μου είπε κάποτε ότι ο προγραμματισμός έχει τον δικό του κανόνα 80/20, και για τα προβλήματα για αρχάριους είναι αρκετά ακριβής. Τα περισσότερα από αυτά βασίζονται στις ίδιες πέντε κινήσεις: επαναλήψεις, if/else, χτύπημα σε συμβολοσειρές, μέτρημα πραγμάτων σε ένα λεξικό και περπάτημα σε έναν πίνακα. Αν τα βάλεις στα δάχτυλά σου, πολλά «νέα» προβλήματα αποδεικνύονται παλιά και δεν έχουν ιδέα.

Οι καλύτερες προκλήσεις κωδικοποίησης για αρχάριους

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

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

Πρόκληση 1: FizzBuzz

Η εργασία είναι να εκτυπώσετε τους αριθμούς από το 1 έως το 100, αλλά κάθε πολλαπλάσιο του τρία εμφανίζεται ως "Fizz", κάθε πολλαπλάσιο του πέντε ως "Buzz", και οι αριθμοί που είναι πολλαπλάσια και των δύο παίρνουν "FizzBuzz".

Θυμάμαι ότι σκεφτόμουν σχεδόν προσβλητικό το πόσο απλό ακουγόταν. Δεν είναι όμως και τόσο απλό, γι' αυτό και άρεσε στους συνεντευξιαστές για τόσο καιρό. Όσοι έχουν διαβάσει πολλά για τον προγραμματισμό αλλά έχουν γράψει ελάχιστα συνήθως σκοντάφτουν στη σειρά των ελέγχων. Η δική μου έκδοση σε Python μοιάζει με αυτό:

python για n στο εύρος(1, 101): if n % 15 == 0: print("FizzBuzz") elif n % 3 == 0: print("Fizz") elif n % 5 == 0: print("Buzz") αλλιώς: print(n)

Μόλις λειτουργήσει το δικό σας, σύρετε τη γραμμή % 15 προς τα κάτω, εκτελέστε την και δείτε πόσα FizzBuzzes επιβιώνουν. Spoiler: κανένα.

Πρόκληση 2: Αντιστροφή μιας συμβολοσειράς

Μπαίνει το "γεια" και βγαίνει το "olleh".

Υπάρχει μια συντόμευση σε σχεδόν κάθε γλώσσα, όπως η s[::-1] στην Python ή η split("".reverse().join("") στην JavaScript, και είναι μια χαρά να την γράψεις μία φορά μόνο και μόνο για να τη δεις να λειτουργεί. Μετά από αυτό, ειλικρινά, θα την διέγραφα και θα έκανα την βαρετή έκδοση με έναν βρόχο που προσθέτει έναν χαρακτήρα κάθε φορά. Εκεί παρατηρείτε ότι στις περισσότερες γλώσσες μια συμβολοσειρά δεν μπορεί να αλλάξει στη θέση της, κάτι που μπερδεύει πολλούς ανθρώπους αργότερα αν δεν τη μάθουν ποτέ εδώ.

Πρόκληση 3: Έλεγχος παλινδρομίου

Ένα παλίνδρομο είναι μια λέξη όπως "racecar" ή "noon" που διαβάζεται το ίδιο και προς τις δύο κατευθύνσεις, επομένως η συνάρτησή σας θα πρέπει να λέει ναι σε αυτές και όχι στο "hello".

Όταν αυτό πετύχει, είναι μια καλή στιγμή να βελτιώσετε τις δεξιότητές σας στον προγραμματισμό προσθέτοντάς του τη φράση "Ένας άνθρωπος, ένα σχέδιο, ένα κανάλι: Παναμάς", η οποία περνάει μόνο αφού γράψετε με πεζά γράμματα το κείμενο και αφαιρέσετε τα κενά και τα σημεία στίξης. Μπορείτε να δανειστείτε τον κώδικα αντιστροφής συμβολοσειρών από την τελευταία πρόκληση για αυτό, κάτι που είναι ωραίο.

Πρόκληση 4: Ακολουθία Φιμπονάτσι

Πιθανότατα έχετε ξαναδεί την ακολουθία: 0, 1, 1, 2, 3, 5, 8, 13, με κάθε αριθμό να είναι το άθροισμα των δύο που βρίσκονται μπροστά του. Η συνάρτησή σας θα πρέπει να επιστρέφει τον πρώτο n από αυτούς.

Δύο μεταβλητές και ένας βρόχος είναι αρκετά. Η διασκέδαση ξεκινά όταν το ξαναγράφετε με αναδρομή, έτσι ώστε η συνάρτηση να καλεί τον εαυτό της και στη συνέχεια να ζητάει n = 35. Στους περισσότερους φορητούς υπολογιστές θα περιμένετε λίγο, και το να καταλάβετε γιατί συμβαίνει αυτό είναι μια ήπια πρώτη ματιά στον δυναμικό προγραμματισμό. Είναι μια από εκείνες τις μικρές στιγμές "α, γι' αυτό" που μένουν.

Πρόκληση 5: Περιστροφή ενός πίνακα

Πάρτε έναν πίνακα και έναν αριθμό k, στη συνέχεια μετακινήστε κάθε στοιχείο k θέσεις προς τα δεξιά, με αυτά στο τέλος να τυλίγονται προς τα εμπρός. Με [1, 2, 3, 4, 5] και k = 2 θα πρέπει να καταλήξετε με [4, 5, 1, 2, 3].

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

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

Πρόκληση 6: Βρείτε τον μεγαλύτερο ακέραιο αριθμό σε έναν πίνακα

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

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

Πρόκληση 7: Μέτρηση φωνηέντων σε μια πρόταση

Το μέτρημα φωνηέντων είναι η προθέρμανση. Η πραγματική άσκηση είναι να μετράς κάθε φωνήεν μόνο του και να επιστρέφεις κάτι σαν {"a": 3, "e": 5, "i": 1, "o": 2, "u": 0}.

Για πολλούς αρχάριους, αυτή είναι η στιγμή που τα λεξικά (ή τα αντικείμενα στη JavaScript) αποκτούν επιτέλους νόημα, και αυτό έχει σημασία, επειδή είναι πιθανώς η δομή δεδομένων στην οποία θα βασιστείτε περισσότερο για τον επόμενο χρόνο.

Πρόκληση 8: Έλεγχος Αναγραμματισμού

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

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

Πρόκληση 9: Άθροισμα δύο

Με μια λίστα όπως [2, 7, 11, 15] και στόχο το 9, επιστρέφετε τις θέσεις των δύο αριθμών που αθροίζονται στον στόχο, ο οποίος εδώ είναι [0, 1].

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

Πρόκληση 10: Παιχνίδι εικασίας αριθμών

Εδώ ο υπολογιστής επιλέγει έναν μυστικό αριθμό μεταξύ 1 και 100, εσείς συνεχίζετε να μαντεύετε και σας λέει "πολύ υψηλός" ή "πολύ χαμηλός" μέχρι να τον πετύχετε, μαζί με πόσες προσπάθειες χρειάστηκαν.

Δεν είναι τόσο απλό παζλ προγραμματισμού όσο μια μικροσκοπική εφαρμογή, με είσοδο χρήστη, έναν βρόχο while και τυχαίους αριθμούς. Κάποιος τελικά θα πληκτρολογήσει "banana" αντί για αριθμό, οπότε θα αντιμετωπίσετε και λανθασμένη είσοδο. Και σε αντίθεση με τα άλλα, αυτό είναι ένα που μπορείτε πραγματικά να δώσετε σε έναν φίλο για να παίξει.

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

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

Πλατφόρμα Καλύτερο για Σχήμα και διάταξις βιβλίου Κόστος
Ενταμπίτ Απόλυτοι αρχάριοι Σύντομες προκλήσεις κωδικοποίησης στο πρόγραμμα περιήγησης Δωρεάν βαθμίδα
Codewars Παιχνιδοποιημένη πρακτική Κατατάχθηκε "kata" με λύσεις κοινότητας Δωρεάν
Άσκηση Μαθαίνοντας καλές συνήθειες Γλωσσικά κομμάτια με προαιρετικούς ανθρώπινους μέντορες Δωρεάν
freeCodeCamp Δομημένη μάθηση Πρόγραμμα σπουδών με ενσωματωμένες ασκήσεις και πιστοποιήσεις Δωρεάν
HackerRank Διαδρομές δεξιοτήτων και προετοιμασία για την εργασία Προβλήματα βάσει θέματος με ετικέτες δυσκολίας Δωρεάν για μαθητές
LeetCode Προετοιμασία συνέντευξης Αλγοριθμικά προβλήματα με ετικέτα Εύκολο/Μέσο/Δύσκολο Δωρεάν βαθμίδα
CodeChef Προχωρώντας προς τους αγώνες Διαδρομές εξάσκησης και τακτικοί διαγωνισμοί Δωρεάν βαθμίδα
Έργο Euler Οι λάτρεις των μαθηματικών Παζλ με πολλά μαθηματικά, μόνο υποβολή απαντήσεων Δωρεάν
Η έλευση του Κώδικα Εποχιακή διασκέδαση Καθημερινά παζλ με ιστορίες κάθε Δεκέμβριο Δωρεάν

Ενταμπίτ

Αν ένας φίλος με ρωτούσε από πού να ξεκινήσω, θα έλεγα Edabit. Τα προβλήματα είναι σύντομα, όλα εκτελούνται στο πρόγραμμα περιήγησης και έχετε XP. Καλύπτονται Python, JavaScript, Java, C++ και μερικές ακόμη, και η ετικέτα "πολύ εύκολο" στην πραγματικότητα σημαίνει πολύ εύκολο.

Codewars

Το Codewars αποκαλεί τα προβλήματά του κάτα (μια λέξη που χρησιμοποιείται στις πολεμικές τέχνες για τις ασκήσεις). Κατατάσσονται από 8 kyu, το πιο εύκολο, έως 1 kyu. Η μαγεία έγκειται μετά την υποβολή. Μπορείτε να δείτε τις απαντήσεις όλων των άλλων και βάζοντας τις δέκα αδέξιες ατάκες σας δίπλα στο κομψό δίγραμμο κάποιου, σας διδάσκει περισσότερα από ό,τι τα περισσότερα εκπαιδευτικά σεμινάρια.

Άσκηση

Το Exercism λειτουργεί ως μη κερδοσκοπικός οργανισμός και είναι δωρεάν, τελεία και παύλα. Υπάρχουν κομμάτια για πάνω από 80 γλώσσες και εθελοντές μέντορες θα εξετάσουν τον κώδικά σας αν τους ρωτήσετε. Μπορείτε να παραμείνετε στο πρόγραμμα περιήγησης ή να κατεβάσετε ασκήσεις στον υπολογιστή σας. Θα σας πρότεινα τελικά προς τη δεύτερη επιλογή, επειδή σας βοηθά να εξοικειωθείτε με τον κώδικα του Visual Studio και ένα τερματικό.

freeCodeCamp

Δεν είναι αυστηρά ένας ιστότοπος με προκλήσεις. Είναι ένα ολόκληρο πρόγραμμα σπουδών, αλλά είναι φτιαγμένο από εκατοντάδες μικρές ασκήσεις κωδικοποίησης, οπότε ταιριάζει απόλυτα. Ιδανικό αν σας αρέσει η δομή: JavaScript, Python, σχεδιασμός ιστοσελίδων με δυνατότητα προσαρμογής και άλλα, με έργα πιστοποίησης στο τέλος κάθε διαδρομής.

HackerRank

Το HackerRank ταξινομεί τα προβλήματα σε κατηγορίες δεξιοτήτων (Python, SQL, δομές δεδομένων, αλγόριθμοι) και σας λέει πόσο δύσκολο είναι το καθένα και πόσοι άνθρωποι το έλυσαν. Πολλές εταιρείες εξετάζουν τους υποψηφίους με βάση αυτό. Η εξοικείωση με τη διεπαφή σας γλιτώνει πλέον από κάποια νεύρα αργότερα.

LeetCode

Αυτή είναι η περιοχή της προετοιμασίας για συνεντεύξεις. Τα προβλήματα χαρακτηρίζονται ως Εύκολα, Μέτρια και Δύσκολα, και ακόμη και το "Εύκολο" προϋποθέτει ότι έχετε κατανοήσει τα βασικά. Θα αντιμετώπιζα τις προκλήσεις προγραμματισμού ως κάτι που κατευθύνεσαι, όχι ως σημείο εκκίνησης. Έλα πίσω όταν οι δέκα μου θα φανούν ρουτίνα.

CodeChef

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

Έργο Euler

Μαθηματικά προβλήματα που χρειάζονται κώδικα για να τα λύσετε. Δεν υπάρχει πρόγραμμα επεξεργασίας στον ιστότοπο. Γράφετε το πρόγραμμα όπου θέλετε και απλώς πληκτρολογείτε τον τελικό αριθμό. Οι μαθηματικοί το λατρεύουν. Όλοι οι άλλοι τείνουν να μην το καταλαβαίνουν.

Η έλευση του Κώδικα

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

Θα ακούσετε επίσης για το Coderbyte, το οποίο συνδυάζει προκλήσεις με μαθήματα συνέντευξης, και το Topcoder, το οποίο απευθύνεται πραγματικά σε έμπειρους προγραμματιστές.

Μία προειδοποίηση. Πολλές παλαιότερες λίστες εξακολουθούν να σας παραπέμπουν στο Google Code Jam και στο Kick Start. Η Google έκλεισε και τα δύο το 2023 και έχουν απομείνει μόνο τα προβληματικά αρχεία.

Οι καλύτερες προκλήσεις κωδικοποίησης για αρχάριους

Πώς να εξασκηθείτε σε προκλήσεις κωδικοποίησης χωρίς να εξαντληθείτε

Το να προσθέτεις δέκα ιστότοπους στους σελιδοδείκτες σου δεν σε βελτιώνει. Η συνήθεια σε βελτιώνει. Να τι θα έκανα εγώ περίπου:

  1. Διάλεξε μία γλώσσα προγραμματισμού και μείνε πιστή σε αυτήν. Η Python είναι η συνηθισμένη επιλογή επειδή διαβάζεται σχεδόν όπως τα αγγλικά. Η JavaScript έχει νόημα αν θέλεις να δημιουργήσεις ιστοσελίδες.
  2. Ρυθμίστε ένα πραγματικό πρόγραμμα επεξεργασίας κώδικα. Τα προγράμματα επεξεργασίας προγράμματος περιήγησης είναι μια χαρά για την πρώτη εβδομάδα. Η έγκαιρη εγκατάσταση του κώδικα του Visual Studio σάς διδάσκει να εκτελείτε αρχεία, να διαβάζετε σφάλματα σε ένα τερματικό και να κάνετε αναζήτηση με ένα πρόγραμμα εντοπισμού σφαλμάτων.
  3. Λύστε ένα έως τρία προβλήματα την ημέρα. Η καθημερινή εξάσκηση στον προγραμματισμό σε μικρές δόσεις είναι καλύτερη από μια εξάωρη κυριακάτικη κούραση. Τα μοτίβα ενσωματώνονται μεταξύ των συνεδριών και ένας μικροσκοπικός στόχος είναι δύσκολο να παραλειφθεί.
  4. Διαβάστε άλλες λύσεις αφού τελειώσετε. Στο Codewars ή στο Exercism, δείτε δύο ή τρεις άλλες απαντήσεις. Θα βρείτε βέλτιστες πρακτικές και μερικά πραγματικά έξυπνα κόλπα που αξίζει να κλέψουν.
  5. Ξανασκέφτηκα παλιά προβλήματα. Μια εβδομάδα αργότερα, λύσε ένα από μνήμης. Αν δεν μπορείς, το αποστήθισες αντί να το καταλάβεις.
  6. Προχωρήστε σε μικρά έργα. Κάπου 30 με 50 προβλήματα, δημιουργήστε κάτι: μια λίστα υποχρεώσεων, μια εφαρμογή καιρού σε ένα δωρεάν API, μια περιπέτεια κειμένου. Εκεί αρχίζουν να συνεργάζονται οι ξεχωριστές δεξιότητες.

Τι να κάνετε όταν κολλήσετε σε μια πρόκληση προγραμματισμού

Θα κολλήσετε. Οι έμπειροι προγραμματιστές κολλάνε πριν το μεσημεριανό γεύμα. Αυτό που έχουν είναι μια ρουτίνα για να ξεκολλήσουν, οπότε δανειστείτε μία:

  • Επαναδιατυπώστε το πρόβλημα με δικά σας λόγια. Ένας εκπληκτικά μεγάλος αριθμός στιγμών που λένε «Δεν μπορώ να το λύσω αυτό» είναι στην πραγματικότητα «Το παρερμήνευσα».
  • Δουλέψτε ένα παράδειγμα χειροκίνητα. Μικρές εισαγωγές, στυλό και χαρτί, και γράψτε κάθε βήμα που κάνετε. Συγχαρητήρια, αυτός είναι ο αλγόριθμός σας.
  • Γράψτε πρώτα ψευδοκώδικα. «Για κάθε αριθμό, αν είναι μεγαλύτερος από τον τρέχοντα μεγαλύτερο αριθμό μου, κρατήστε τον». Τα απλά αγγλικά είναι πιο εύκολο να διορθωθούν από τον κώδικα.
  • Εκτυπώστε τα πάντα. Τα περισσότερα σφάλματα είναι μια μεταβλητή που περιέχει κάτι διαφορετικό από αυτό που υποθέσατε. Εκτυπώστε το και μάθετε.
  • Εξηγήστε το δυνατά. Περιηγηθείτε στον κώδικά σας γραμμή προς γραμμή, σε ένα άτομο ή σε μια λαστιχένια πάπια. Το σφάλμα λογισμικού συχνά εμφανίζεται στη μέση μιας πρότασης.
  • Χρησιμοποιήστε υποδείξεις σε βήματα. Πολλές πλατφόρμες προσφέρουν μια υπόδειξη πριν από την πλήρη απάντηση. Δεχτείτε την υπόδειξη και μετά ξεκινήστε ξανά.

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

Προκλήσεις Κώδικα με Θέμα Κρυπτογράφησης για Αρχάριους στο Blockchain

Ίσως οι πληρωμές με κρυπτονομίσματα ή το blockchain να είναι ο λόγος που θέλατε να μάθετε προγραμματισμό εξαρχής. Στη συνέχεια, εξασκηθείτε σε προβλήματα από αυτόν τον κόσμο. Τα βασικά είναι πανομοιότυπα (συμβολοσειρές, ακέραιοι αριθμοί, API), αλλά οι εργασίες μοιάζουν πολύ περισσότερο με τεχνική εργασία στον πραγματικό κόσμο. Δεν χρειάζεται να κατανοείτε αλγόριθμους συναίνεσης για κανένα από αυτά.

  • Λήψη ζωντανής τιμής κρυπτονομίσματος. Επισκεφθείτε ένα δωρεάν δημόσιο API τιμής κρυπτονομίσματος, εκτυπώστε την τρέχουσα τιμή Bitcoin, ανανεώστε την κάθε λεπτό. Γεια σας, αιτήματα HTTP και JSON.
  • Επικυρώστε μια μορφή διεύθυνσης πορτοφολιού. Ελέγξτε αν μια συμβολοσειρά μοιάζει με μια εύλογη διεύθυνση: σωστό μήκος, σωστό πρόθεμα, επιτρεπόμενοι μόνο χαρακτήρες. Ωραία εξάσκηση συμβολοσειρών και μια απαλή εισαγωγή στις κανονικές εκφράσεις.
  • Κατασκευάστε έναν μετατροπέα μονάδων. Satoshi σε BTC (1 BTC = 100.000.000 satoshi), wei σε ETH (1 ETH = 10¹⁸ wei). Θα μάθετε γρήγορα γιατί οι κυμαινόμενες τιμές και το χρήμα δεν συμβαδίζουν και γιατί οι προγραμματιστές διατηρούν τα ποσά ως ακέραιους αριθμούς.
  • Κατακερματίστε μια συμβολοσειρά με SHA-256. Κατακερματίστε μια πρόταση με την τυπική βιβλιοθήκη σας, αλλάξτε ένα γράμμα και κατακερματίστε το ξανά. Εντελώς διαφορετικό αποτέλεσμα. Αυτή η ιδιότητα είναι ένα μεγάλο μέρος αυτού που κρατά τα blockchain ενωμένα.
  • Δημιουργήστε μια απλή σελίδα ολοκλήρωσης αγοράς. Μια σελίδα προϊόντος με το κουμπί "Πληρωμή με κρυπτονομίσματα" που δημιουργεί ένα δοκιμαστικό τιμολόγιο μέσω ενός API πύλης πληρωμής.

Αυτό το τελευταίο συνδέει τα υπόλοιπα: μια φόρμα, μια κλήση API, χειρισμό σφαλμάτων και εμφάνιση του αποτελέσματος σε έναν πραγματικό χρήστη. Πύλες όπως το Plisio δημοσιεύουν ένα API και έγγραφα που μπορείτε να συνδέσετε σε ένα κατάστημα εξάσκησης, γεγονός που κάνει μια άσκηση για αρχάριους να μοιάζει πολύ με μια πραγματική ενσωμάτωση ηλεκτρονικού εμπορίου.

Ξεκινήστε την εξάσκηση στον προγραμματισμό σας με ένα πρόβλημα σήμερα

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

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

Καμιά ερώτηση?

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

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

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

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

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

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

Ready to Get Started?

Create an account and start accepting payments – no contracts or KYC required. Or, contact us to design a custom package for your business.

Make first step

Always know what you pay

Integrated per-transaction pricing with no hidden fees

Start your integration

Set up Plisio swiftly in just 10 minutes.