Exerciții - Efectuarea operațiunilor de listă

Finalizat

Echipa dvs. este mulțumită de codul pe care l-ați scris până acum pentru jocul de cărți. Echipa dorește să dezvoltați codul și să începeți implementarea logicii specifice regulii jocului, cum ar fi calcularea valorii unei mâini.

Pentru acest exercițiu, utilizați unele dintre funcțiile din modulul listă.

Calcularea unei mâini pentru joc 31

În jocul de cărți "31", fiecare dintre doi sau mai mulți jucători este împărțită o mână constând din trei cărți. Jucătorul câștigă al cărui punct de card total este cel mai apropiat de 31. Fiecare carte are propria valoare nominală, cu excepția faptului că jack, regina și regele sunt în valoare de 10 puncte fiecare, și aces sunt în valoare de 11 puncte. Un jucător ținând, de exemplu, un 10, un jack și un as, ar avea 31 de puncte, iar mâna respectivă ar fi câștigătorul.

Într-o unitate anterioară, ați creat un pachet de cărți, fiecare reprezentat ca număr între 0 și 51. Pentru a începe să calculați o mână, trebuie să traduceți acele numere în ceva care are sens în domeniul cărților de vizită. De exemplu, înlocuiți numărul "0" cu numele "Asul inimilor".

Din fericire, unul dintre colegii tăi a scris deja acel cod:

// 0 = 11, 11, 12, 13 = 10, else the actual number
let cardValue card =
    let value = card % 13
    if value = 0 then 11
    elif value = 10 || value = 11 || value = 12 then 10
    else value

Copiați codul precedent de utilizat la pasul 2 din următoarele instrucțiuni.

Activitatea dvs. este să luați o carte de vizită și să calculați valoarea acesteia utilizând funcția sumBy().

  1. Creați un proiect nou apelând dotnet new într-un director gol:

    dotnet new console --language F# -o CardGame
    cd CardGame
    
  2. Deasupra metodei principale, adăugați codul colegului dvs., pe care l-ați copiat acum câteva momente.

  3. Pentru a crea mâna cardului, adăugați următorul cod:

    let hand = [0; 25; 31]
    
  4. Acum că ați creat mâna, adăugați funcția de sumBy():

    let sum = List.sumBy(fun card -> cardValue card) hand
    printfn "%i" sum
    
  5. Rulați codul apelând dotnet run:

    dotnet run
    

    Acum ar trebui să vedeți următoarea ieșire:

    26 
    

Felicitări! Ați reușit să evaluați un joc de cărți pentru jocul 31. A devenit 26, ceea ce nu este destul de 31, dar este o sumă bună.