Liens utiles

Antisèches Go

opérations et comparaisons [AFFICHER]
types [AFFICHER]
tableaux et dictionnaires [AFFICHER]
variables [AFFICHER]
fonctions [AFFICHER]
boucles et conditionnelles [AFFICHER]

Séance 1 (06-01-2025)

  1. Vérifiez que go fonctionne correctement sur votre machine, par exemple en lançant la commande

    $ go version
  2. Installez le plugin Go dans vscode, (ou un autre plugin dans un autre IDE).

  3. Testez un programme de type bonne année (version saisonnière de hello world).

  4. 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 est fmt.Println. (Attention à ne pas oublier la majuscule !) Elle fonctionne comme la fonction print de Python. Vous pouvez aussi utiliser fmt.Printf pour avoir une fonction similaire à printf du langage C. Pour utiliser fmt.Println, il faut ajouter import "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 fonctions strconv.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 variables i et j auront les valeurs 12 et -123, et la variable color aura la valeur "rouge".

tri

La fonction slices.Sort permet de trier un tableau dans l'ordre croissant.