Articolo originale: https://www.freecodecamp.org/news/the-10-most-popular-coding-challenge-websites-of-2016-fb8a5672d22f/

Un buon modo per accrescere le tue competenze di programmatore è quello di risolvere delle sfide di programmazione. Risolvere diversi tipi di sfide può aiutarti a diventare un migliore problem solver, a imparare la complessità di un linguaggio di programmazione, a prepararti per il colloquio di lavoro, a imparare nuovi algoritmi e molto altro.

Qui sotto trovi la lista di diversi siti di sfide di programmazione con una breve descrizione di quello che ognuno offre.

1. TopCoder

MTryRL4uVza1V87ERWY26L4cFeqD2rgAnW1f

TopCoder è una delle piattaforme originali per la programmazione competitiva online. Fornisce una lista di sfide algoritmiche dal passato che puoi completare direttamente online usando il loro editor di codice. Le popolari partite Single Round vengono offerte alcune volte al mese in orari specifici nei quali puoi competere contro gli altri per risolvere le sfide il più velocemente possibile e con il punteggio migliore.

Gli utenti primi in classifica su TopCoder sono ottimi programmatori e competono regolarmente in sfide di programmazione. L'utente col punteggio maggiore mantiene un blog intitolato Algorithms weekly by Petr Mitrichev dove scrive di competizioni di programmazione, algoritmi, matematica e altro.

2. Coderbyte

sP6ow4n2alliqp5L-p5fVRQC9W0GTws1B9Ig

Coderbyte fornisce oltre 200 sfide che puoi risolvere direttamente online scegliendo tra 10 linguaggi di programmazione (guarda questo esempio). Le sfide vanno da quelle facili (trovare la parola più lunga in una stringa) a quelle difficili (scrivere la corrispondenza con la massima cardinalità di un grafico).

Fornisce inoltre una collezione di tutorial sugli algoritmi, video introduttivi e corsi di preparazione al colloquio di lavoro. A differenza di HackerRank e altri siti simili, qui sei in grado di vedere le soluzioni fornite dagli altri utenti per qualunque sfida, accanto alle soluzioni ufficiali postate da Coderbyte.

3. Project Euler

plhA-E3btLLYRvc4hi3WxmUpAhu3aoef1o0V

Project Euler fornisce una vasta collezione di sfide nel dominio dell'informatica e della matematica. Le sfide tipicamente richiedono di scrivere un piccolo programma per trovare la soluzione intelligente di una formula o equazione matematica, come ad esempio trovare la somma delle cifre di tutti i numeri che precedono ogni numero in una serie.

Non puoi scrivere il codice direttamente sul sito in un editor, quindi devi scrivere la soluzione nel tuo computer e successivamente inviarla al sito.

4. HackerRank

dOpMtufto0gLZiyDOHZ4BVF58S-z393wRlcu

HackerRank fornisce sfide in diversi domini come Algoritmi, Matematica, SQL, Programmazione Funzionale, Intelligenza Artificiale e altro. Puoi risolvere tutte le sfide direttamente online (vedi questo esempio). Per ogni sfida è disponibile una discussione e una classifica, e la maggior parte delle sfide viene pubblicata con un articolo che spiega la sfida e come approcciarsi ad essa per arrivare a una soluzione. Oltre all'articolo, al momento non puoi vedere le soluzioni di altri utenti.

HackerRank fornisce anche l'abilità agli utenti di inviare richieste di lavoro risolvendo sfide di programmazione sponsorizzate da alcune aziende.

5. CodeChef

81eunsDYPAqBSC8KwPpBxhPFTHiqGXp70kMa

CodeChef è un sito di programmazione competitiva indiano che fornisce centinaia di sfide. Sei in grado di scrivere il codice nel loro editor online e vedere una collezione di sfide suddivise in diverse categorie a seconda del tuo livello di abilità (vedi questo esempio). CodeChef ha una vasta comunità di programmatori che contribuisce ai forum, scrive tutorial, e prende parte alle competizioni di programmazione.

6. Exercism.io

Screen-Shot-2019-12-11-at-8.14.45-AM

Exercism è un sito di sfide di programmazione che offre oltre 3100 sfide che spaziano tra 52 diversi linguaggi di programmazione. Dopo aver scelto un linguaggio di cui vuoi impadronirti, affronti le sfide di programmazione direttamente sulla tua macchina (Exercism ha la sua propria interfaccia a linea di comando che puoi scaricare da GitHub).

È un po' differente da altri siti, perché lavorerai con un mentore dopo aver completato ogni sfida. Il mentore rivede le tue risposte online e ti aiuta a migliorarle se necessario. Una volta che le tue risposte sono state approvate e inviate, puoi sbloccare ulteriori sfide.

7. Codewars

QR7cVhZ7FGb6HjaEDu4N5Co1eTMNTbo1JFzq

Codewars fornisce una vasta collezione di sfide di programmazione inviate dalla sua stessa community. Puoi risolvere le sfide direttamente online nel loro editor in uno fra diversi linguaggi. Puoi vedere la discussione per ogni sfida oltre alle soluzioni proposte da altri utenti.

8. LeetCode

RzWKVwPaLY2SRsWFWk93ZNlzcg8V0Yeav5t7

È un popolare Judge Online che fornisce una lista di oltre 190 sfide che possono aiutarti a prepararti per i colloqui di lavoro. Puoi risolvere le sfide direttamente online in uno fra nove linguaggi di programmazione. Non sei in grado di vedere le soluzioni degli altri, ma ti vengono fornite statistiche per le tue soluzioni come ad esempio la velocità con cui il tuo codice viene eseguito confrontata con quella del codice degli altri utenti.

Hanno anche una sezione Mock Interview (simulazioni di colloqui di lavoro) specifica per la preparazione del colloquio di lavoro, e ospitano i propri contest di programmazione, oltre a una sezione di articoli per aiutarti a comprendere meglio determinati problemi.

9. SPOJ

MF3wP06V24C7jal2f8NRvAVhS-tAA2vbNDTL

Sphere Online Judge (SPOJ)  è un Jude Online che fornisce oltre 20.000 sfide di programmazione. Sei in grado di inviare il tuo codice in un editor online. Ospita anche i suoi propri contest e ha un'area in cui gli utenti possono discutere di sfide di programmazione. Al momento non fornisce alcuna soluzione ufficiale o editoriale come fanno invece altri siti.

10. CodinGame

6l08ZCKDOaoY1TH-PHHHac26McA-c1tIDOPU

CodinGame è un po' diverso dagli altri siti, perché invece di risolvere semplicemente le sfide in un editor, di fatto prendi parte alla scrittura del codice per dei giochi che puoi giocare direttamente online. Puoi vedere una lista di giochi offerti al momento qui, e l'esempio di uno di essi qui. Il gioco inizia con la descrizione di un problema, casi di test, e un editor dove puoi scrivere il tuo codice in uno tra oltre 20 linguaggi di programmazione.

Sebbene questo sito sia diverso dai tipici siti di programmazione competitiva, esso è popolare tra i programmatori che si divertono a risolvere sfide e a prendere parte ai contest.

La lista è basata su alcune cose: la mia esperienza personale nell'uso dei siti, alcune ricerche su Google, post su Quora e articoli come questo e questo. Ho anche frequentato alcuni forum e subreddit come r/learnprogramming per vedere quali siti vengono normalmente raccomandati dagli altri utenti. Disclaimer: io lavoro a Coderbyte, che è uno dei siti menzionati sopra.