ट्रैक
/
Go
Go
/
अभ्यास
/
ब्लैकजैक
ब्लैकजैक

ब्लैकजैक

सीखने का अभ्यास

परिचय

बाकी भाषाओं की तरह Go में भी switch स्टेटमेंट होता है। स्विच स्टेटमेंट लंबे if ... else if स्टेटमेंट लिखने का छोटा तरीका है। स्विच बनाने के लिए हम सबसे पहले switch कीवर्ड लिखते हैं और उसके बाद एक वैल्यू या एक्सप्रेशन देते हैं। इसके बाद हम हर शर्त को case कीवर्ड से घोषित करते हैं। हम एक default केस भी घोषित कर सकते हैं, जो तब चलता है जब पिछली case शर्तों में से कोई भी मेल नहीं खाती:

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
} 

स्विच स्टेटमेंट की एक दिलचस्प बात यह है कि switch कीवर्ड के बाद लिखी वैल्यू छोड़ी जा सकती है, और तब हम हर case के लिए बूलियन शर्तें रख सकते हैं:

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
}

निर्देश

इस अभ्यास में हम Blackjack खेल की पहली बारी का अनुकरण करेंगे।

आपको दो कार्ड मिलेंगे और आप डीलर का खुला हुआ कार्ड देख पाएँगे। सभी कार्ड एक स्ट्रिंग से दर्शाए जाते हैं, जैसे "ace", "king", "three", "two", आदि। हर कार्ड की वैल्यू इस प्रकार है:

कार्ड वैल्यू कार्ड वैल्यू
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 अन्य 0

ध्यान दें: आम तौर पर ace की वैल्यू 1 या 11 हो सकती है, लेकिन आसानी के लिए हम मान लेंगे कि इसकी वैल्यू सिर्फ 11 ही हो सकती है।

आपके दो कार्ड और डीलर के कार्ड के आधार पर खेल की पहली बारी के लिए एक रणनीति होती है, जिसमें आपके पास ये विकल्प होते हैं:

  • रुकना (S)
  • कार्ड लेना (H)
  • जोड़ी अलग करना (P)
  • अपने आप जीतना (W)

हालाँकि यह रणनीति अभी सबसे अच्छी नहीं है, फिर भी आप उस रणनीति का पालन करेंगे जो आपके दोस्त Alex तैयार कर रहे हैं। वह इस प्रकार है:

  • अगर आपके पास ace की एक जोड़ी है, तो आपको उसे हमेशा अलग करना चाहिए।
  • अगर आपके पास Blackjack है (दो ऐसे कार्ड जिनका जोड़ 21 हो) और डीलर के पास ace, कोई फेस कार्ड (Jack/Queen/King) या ten नहीं है, तो आप अपने आप जीत जाते हैं। अगर डीलर के पास इनमें से कोई कार्ड है, तो आपको रुकना होगा और दूसरे कार्ड के खुलने का इंतज़ार करना होगा।
  • अगर आपके कार्डों का जोड़ [17, 20] की सीमा में है, तो आपको हमेशा रुकना चाहिए।
  • अगर आपके कार्डों का जोड़ [12, 16] की सीमा में है, तो आपको हमेशा रुकना चाहिए, सिवाय इसके कि डीलर के पास 7 या उससे बड़ा कार्ड हो। ऐसी स्थिति में आपको हमेशा कार्ड लेना चाहिए।
  • अगर आपके कार्डों का जोड़ 11 या उससे कम है, तो आपको हमेशा कार्ड लेना चाहिए।

1. किसी भी दिए गए कार्ड की वैल्यू निकालिए

किसी कार्ड की संख्यात्मक वैल्यू निकालने वाला एक फंक्शन बनाइए:

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

2. पहली बारी के लिए निर्णय लॉजिक लागू कीजिए

ऊपर बताए गए निर्णय लॉजिक को लागू करने वाला एक फंक्शन लिखिए:

func FirstTurn(card1, card2, dealerCard string) string

अपेक्षित नतीजों के कुछ उदाहरण यहाँ हैं:

FirstTurn("ace", "ace", "jack") == "P"
FirstTurn("ace", "king", "ace") == "S"
FirstTurn("five", "queen", "ace") == "H"
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Go Exercism

ब्लैकजैक शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और Go को 35 कॉन्सेप्ट167 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।