Exercice – Modèles de fonction

Effectué

Dans cet exercice, vous allez vous concentrer sur l’application de certains des modèles fonctionnels que vous avez appris. Travaillez aussi sur le code écrit par vos collègues et fusionnez-le avec un opérateur de pipeline.

Créer une application

Comme vous le savez, vos collègues sont affairés à écrire du code. Le voici :

let cards = [21; 3; 1; 7; 9; 23]
let cardFace card = 
    let no = card % 13
    if no = 1 then "Ace"
    elif no = 0 then "King"
    elif no = 12 then "Queen"
    elif no = 11 then "Jack"
    else string no

let suit card =
    let no = card / 13
    if no = 0 then "Hearts"
    elif no = 1 then "Spades"
    elif no = 2 then "Diamonds"
    else "Clubs"

let shuffle list =
    let random = System.Random()
    list |> List.sortBy (fun x -> random.Next())

let printCard card = printfn "%s of %s" (cardFace card) (suit card)

let printAll list = List.iter(fun x -> printCard(x)) list

let take (no:int) (list) = List.take no list 

Le code est constitué de différentes parties qui vous aideront à implémenter un jeu de cartes. Alors, en quoi consiste la tâche ? Votre tâche consiste à prendre un paquet de cartes, à le mélanger, à prendre les trois premières cartes du dessus, puis à imprimer les résultats.

  1. Créez un projet avec :

    dotnet new console --language F# -o Cards
    cd Cards
    
  2. Remplacez le code dans le fichier Program.fs par celui qui vous a été fourni.

  3. Créez un pipeline en ajoutant la ligne suivante à la fin :

    cards |> shuffle |> take 3 |> printAll
    

    Ce code appelle les fonctions shuffle(), take() et printAll() dans une séquence de gauche à droite. Les résultats de la sortie peuvent varier, car la méthode shuffle() introduit un élément aléatoire.

  4. Exécutez le projet en appelant dotnet run.

    dotnet run
    

    Trois cartes doivent alors s’imprimer avec la description et la couleur qui leur sont propres. Voici un exemple de ce à quoi cela peut ressembler :

    Ace of Hearts
    9 of Hearts
    7 of Hearts
    

Félicitations ! Vous et votre équipe avez créé le début d’une application de cartes. De même, vous avez réussi à appliquer un pipeline qui permet d’appeler des fonctions dans une séquence, qui s’appliquent toutes à une liste de cartes.