Competitif
La programmation compétitive met en lice plusieurs programmeurs qui doivent écrire un algorithme capable de résoudre un problème selon des contraintes de temps, d’espace… Le temps nécessaire a l’écriture de l’algorithme est également pris en compte.
A haut niveau il requiert de bonnes connaissances en mathématiques et en algorithmique.
D’un point de vue d’écriture algorithmique il est recommandé d’utiliser python, et lorsque le temps d’exécution de l’algorithme est un critère, il faut utiliser un langage rapide qui s’exécute au plus proche du processeur, pour cela on recommande le C++ car il permet plus facilemenet la programmation dynamique .
Le C++ possède nativement des listes triées, chainées , tables de hachage , et vecteurs (listes dynamiques), indispensables à cette fin. En C il faut les écrire soit même car on soumet son programme généralement via un formulaire web et on n’a pas accès à la ligne de commande de compilation, ni la possibilité d’importer ses librairies dans l’environement de compilation : le C n’est pas recommandé en programmation compétitive.
Toutefois pour les problèmes les plus simples qui nécessitent peu de manipuler la mémoire, utiliser le C pour résoudre des problèmes de programmation compétitive peut être un bon moyen d’améliorer son niveau avec ce langage.
Répertoire
Voila une liste de sites web donnant une interface de programmation en C pour la résolution de problèmes de programmation.
- 🇬🇧 Advent of Code : https://adventofcode.com/ 🌍⤴ Tournoi de programmation ouvert chaque année à la période de l’Avent où il est possible notammant de refaire les problèmes des années précédentes.
- 🇬🇧 International olympiad of informatics : https://ioinformatics.org 🌍⤴ , la compétition mondiale d’informatique, contient des ressources pour s’y préparer et des liens vers les antennes nationales.
Privés
Ces sites permettent d’atteindre un niveau compétitif en programmation et gravitent autour des évènements sportifs en matière de programmation
- 🇬🇧 Top Coder : https://www.topcoder.com/community/competitive-programming 🌍⤴ Un site pionnier en programmation compétitive, n’est plus dédié à cette fin aujourd’hui.
- 🇬🇧🇷🇺 Codeforces : https://codeforces.com 🌍⤴ La référence actuellement avec le plus grand nombre d’utilisateurs actifs
Ludiques et professionels
Ces sites proposent des problèmes soit pour s’amuser, soit préparer un entretien d’embauche.
- CodinGame : https://www.codingame.com/start/fr/ 🌍⤴ Un site en francais avec une interface très visuelle
- 🇬🇧 LeetCode : https://leetcode.com 🌍⤴ Réputé pour préparer un entretien d’embauche chez les grandes entreprises informatiques.
- 🇬🇧 HackerRank : https://www.hackerrank.com 🌍⤴ De la même façon que Leetcode permet de se préparer à des entretiens d’embauche.
- 🇬🇧 https://www.codewars.com 🌍⤴ Propose des “katas”
- 🇬🇧 http://codekata.com 🌍⤴ Propose aussi des “katas”
Haut niveau
Des sites où s’affrontent les meilleurs programmeurs compétitifs :
- 🇬🇧 http://azspcs.com 🌍⤴ Al Zimmermann’s Programming Contests
- 🇬🇧 https://atcoder.jp/home 🌍⤴ At coder, niveau debutant à compétitif, avec un classement.
- 🇬🇧 https://icfpconference.org/contest.html 🌍⤴ International Conference on Functional Programming Challenges.