Liens utiles
-
la liste des "Advent of Code"
Antisèches Go
- opérations et comparaisons
- types
- tableaux et dictionnaires
- variables
- fonctions
- boucles et conditionnelles
Séance 1 (06-01-2025)
-
Vérifiez que go fonctionne correctement sur votre machine, par exemple en lançant la commande
$ go version -
Installez le plugin Go dans vscode, (ou un autre plugin dans un autre IDE).
-
Testez un programme de type bonne année (version saisonnière de hello world).
-
Connectez vous sur Advent of Code, par exemple avec votre compte Github.
-
Pour initialiser un nouveau module ("projet"), il faut lancer la commande
$ go mod init <NOM_DU_MODULE>dans le répertoire du module.
-
Votre fichier doit commencer par la ligne
package mainet un des fichiers du projets doit contenir une fonction
mainsans argument ni valeur de retour. -
Le mot clé pour définir une fonction est
func, et la fonction Go pour faire un affichage simple estfmt.Println. (Attention à ne pas oublier la majuscule !) Elle fonctionne comme la fonctionprintde Python. Vous pouvez aussi utiliserfmt.Printfpour avoir une fonction similaire àprintfdu langage C. Pour utiliserfmt.Println, il faut ajouterimport "fmt"en haut du du fichier. Normalement, vscode s'en chargera tout seul ! -
Si votre plugin Go est bien installé, votre code sera automatiquement formaté à chaque sauvegarde !
-
Pour lancer votre programme, il faut utiliser la commande
$ go run .ou le lancer à partir de vscode.
Écrivez un programme pour résoudre les problèmes suivants (parties 1 et 2).
| année | jours | lien |
|---|---|---|
| 2022 | 1 | Calorie Counting |
| 2020 | 2 | Password Philosophy |
| 2021 | 2 | Dive! |
Notez bien que pour obtenir vos fichier de données personnalisés, vous devez être connecté sur le site Advent of Code.
Un problème est résolu lorsque vous avez pu valider votre réponse sur le site et que vous avez obtenu les 2 étoiles "**" correspondantes. (Ou une seule étoile "*" pour les 25 décembre.)
Note : Eric Wastl, le créateur de Advent of Code, demande explicitement que les fichiers de données ne soient pas partagés sur Internet. Ne les mettez donc pas dans un dépot Git public.
Pour gagner du temps
- lecture des lignes d'un fichier
-
f, _ = os.Open(filename) sc = bufio.NewScanner(f) for sc.Scan() { line := sc.Text() ... } - conversion depuis une chaine
-
Les fonctions du module
strconvpermettent de convertir des chaines en entiers, flottants, etc. Parcourez la documentation des fonctionsstrconv.Atoi,strconv.ItoA,strconv.ParseBool,strconv.ParseFloat,strconv.ParseInt,strconv.ParseUinten cas de besoin.Attention, ces fonctions renvoient deux valeurs : le résultat et un code d'erreur. Pour ignorer ce dernier, il faut donc écrire :
var n int n, _ = strconv.Atoi(<CHAINE>) - documentation
-
Vous pouvez obtenir la documentation de la bibliothèque standard avec
$ go doc bufio $ go doc strconv.Parsebool - extraction de valeurs d'une chaine formatée, à la scanf
-
var i, j int var color string fmt.Sscanf(s, "(%d,%d): %s", &i, &j, &color)Si
sest la chaine"(12,-123): rouge clair", les variablesietjauront les valeurs12et-123, et la variablecoloraura la valeur"rouge". - tri
-
La fonction
slices.Sortpermet de trier un tableau dans l'ordre croissant.

