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 main
et un des fichiers du projets doit contenir une fonction
main
sans 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 fonctionprint
de Python. Vous pouvez aussi utiliserfmt.Printf
pour avoir une fonction similaire àprintf
du 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
strconv
permettent de convertir des chaines en entiers, flottants, etc. Parcourez la documentation des fonctionsstrconv.Atoi
,strconv.ItoA
,strconv.ParseBool
,strconv.ParseFloat
,strconv.ParseInt
,strconv.ParseUint
en 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
s
est la chaine"(12,-123): rouge clair"
, les variablesi
etj
auront les valeurs12
et-123
, et la variablecolor
aura la valeur"rouge"
. - tri
-
La fonction
slices.Sort
permet de trier un tableau dans l'ordre croissant.