Latihan - Pola fungsi

Selesai

Dalam latihan ini, fokus pada penerapan beberapa pola fungsional yang anda diajarkan. Selain itu, kerjakan kode yang ditulis oleh kolega Anda dan sekeringkan bersama dengan operator alur.

Membuat aplikasi

Seperti yang disebutkan, kolega Anda sibuk menulis kode. Ini dia:

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 

Kode ini terdiri dari berbagai bagian yang membantu Anda menerapkan permainan kartu. Jadi, apa tugasnya? Tugas Anda adalah mengambil setumpuk kartu, mengocoknya, mengambil tiga kartu teratas, lalu mencetak hasilnya.

  1. Buat proyek baru dengan:

    dotnet new console --language F# -o Cards
    cd Cards
    
  2. Mengganti kode dalam file Program.fs dengan kode yang telah Anda berikan.

  3. Membuat alur dengan menambahkan baris berikut di akhir:

    cards |> shuffle |> take 3 |> printAll
    

    Kode ini memanggil fungsi shuffle(), take(), dan printAll() secara berurutan dari kiri ke kanan. Hasil output bervariasi karena metode shuffle() memperkenalkan elemen acak.

  4. Jalankan proyek dengan memanggil dotnet run.

    dotnet run
    

    Anda akan melihat tiga kartu dicetak dengan deskripsi dan setelan yang sesuai. Berikut adalah contoh output dari tampilannya:

    Ace of Hearts
    9 of Hearts
    7 of Hearts
    

Selamat! Anda dan tim Anda telah membangun bagian awal aplikasi kartu. Anda juga telah berhasil menerapkan alur yang memungkinkan Anda memanggil fungsi secara berurutan, yang semuanya berlaku untuk daftar kartu.