Ćwiczenie — wzorce funkcji

Ukończone

W tym ćwiczeniu skoncentruj się na zastosowaniu niektórych wzorców funkcjonalnych, które zostały nauczone. Ponadto należy pracować nad kodem napisanym przez współpracowników i połączyć go razem z operatorem potoku.

Utwórz aplikację

Jak wspomniano, twoi współpracownicy byli zajęci pisaniem kodu. Oto:

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 

Kod składa się z różnych części, które ułatwiają implementowanie gry kartowej. Więc jakie jest zadanie? Twoim zadaniem jest przetasować talii kart, przetasować je, pobrać trzy pierwsze karty, a następnie wydrukować wyniki.

  1. Utwórz nowy projekt przy użyciu:

    dotnet new console --language F# -o Cards
    cd Cards
    
  2. Zastąp kod w pliku Program.fs podanym kodem.

  3. Utwórz potok, dodając następujący wiersz na końcu:

    cards |> shuffle |> take 3 |> printAll
    

    Ten kod wywołuje funkcje shuffle(), take()i printAll() w sekwencji od lewej do prawej. Wyniki wyjściowe różnią się, ponieważ shuffle() metoda wprowadza element losowy.

  4. Uruchom projekt, wywołując polecenie dotnet run.

    dotnet run
    

    Powinny zostać wyświetlone trzy karty z odpowiednim opisem i dopasowaniem. Oto przykładowe dane wyjściowe tego, jak może wyglądać:

    Ace of Hearts
    9 of Hearts
    7 of Hearts
    

Gratulacje! Ty i Twój zespół utworzyli początek aplikacji karty. Pomyślnie zastosowano również potok, który umożliwia wywoływanie funkcji w sekwencji, z których wszystkie mają zastosowanie do listy kart.