Kurzusok
/
Go
Go
/
Feladatok
/
Blackjack
Blackjack

Blackjack

Tanulófeladat

Bevezetés

Más nyelvekhez hasonlóan a Go is biztosít switch utasítást. A switch utasítások rövidebb módot kínálnak a hosszú if ... else if utasítások leírására. Egy switch megírásához kezdd a switch kulcsszóval, majd írj utána egy értéket vagy kifejezést. Ezután a case kulcsszóval adod meg az egyes feltételeket. Ezenkívül megadhatsz egy default ágat is, amely akkor fut le, ha az előző case feltételek egyike sem teljesült:

operatingSystem := "windows"

switch operatingSystem {
case "windows":
    // do something if the operating system is windows
case "linux":
    // do something if the operating system is linux
case "macos":
    // do something if the operating system is macos
default:
    // do something if the operating system is none of the above
} 

A switch utasításokban az az érdekes, hogy a switch kulcsszó utáni érték elhagyható, és mindegyik case-hez megadhatsz egy Boolean-feltételt:

age := 21

switch {
case age > 20 && age < 30:
    // do something if age is between 20 and 30
case age == 10:
    // do something if age is equal to 10
default:
    // do something else for every other case
}

Utasítások

Ebben a feladatban egy Blackjack-játszma első körét szimuláljuk.

Két lapot kapsz, és látni fogod az osztó felfedett lapját. Minden lapot egy string jelöl, például „ace”, „king”, „three”, „two” és így tovább. Az egyes lapok értékei a következők:

lap érték lap érték
ace 11 eight 8
two 2 nine 9
three 3 ten 10
four 4 jack 10
five 5 queen 10
six 6 king 10
seven 7 other 0

Megjegyzés: Az ace általában 1 vagy 11 értéket is felvehet, de az egyszerűség kedvéért most azt feltételezzük, hogy csak a 11-es értéket veheti fel.

Attól függően, hogy milyen két lapot kaptál, és mit mutat az osztó lapja, létezik egy stratégia a játék első körére, amelyben a következő lehetőségeid vannak:

  • Megállás (S)
  • Húzás (H)
  • Osztás (P)
  • Automatikus győzelem (W)

Bár ez még nem az optimális stratégia, azt fogod követni, amelyet a barátod, Alex dolgozott ki, és ami a következő:

  • Ha ace-párod van, azokat mindig szét kell osztanod.
  • Ha Blackjack-ed van (két lap, amelyek összege 21), és az osztónál nincs ace, figurás lap (Jack/Queen/King) vagy ten, akkor automatikusan nyersz. Ha az osztónál mégis van ilyen lap, akkor meg kell állnod, és meg kell várnod, hogy felfedje a másik lapját.
  • Ha a lapjaid összege a [17, 20] tartományba esik, mindig meg kell állnod.
  • Ha a lapjaid összege a [12, 16] tartományba esik, mindig meg kell állnod, kivéve ha az osztónál 7 vagy annál nagyobb lap van, mert akkor mindig húznod kell.
  • Ha a lapjaid összege 11 vagy annál kevesebb, mindig húznod kell.

1. Számítsd ki bármelyik megadott lap értékét

Valósíts meg egy függvényt, amely kiszámítja egy lap számértékét:

value := ParseCard("ace")
fmt.Println(value)
// Output: 11

2. Valósítsd meg az első kör döntési logikáját

Írj egy függvényt, amely a fent leírt döntési logikát valósítja meg:

func FirstTurn(card1, card2, dealerCard string) string

Íme néhány példa a várt eredményekre:

FirstTurn("ace", "ace", "jack") == "P"
FirstTurn("ace", "king", "ace") == "S"
FirstTurn("five", "queen", "ace") == "H"
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Go Exercism

Készen állsz elkezdeni a(z) Blackjack feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Go nyelvet 35 fogalom167 feladat segítségével, valódi emberi mentorálással, mindez ingyen.