ट्रैक
/
Go
Go
/
अभ्यास
/
पार्टी रोबोट
पार्टी रोबोट

पार्टी रोबोट

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

परिचय

पैकेज

Go में एक एप्लिकेशन पैकेजों में बँटा होता है। पैकेज एक ही फोल्डर में रखी सोर्स फाइलों का समूह होता है। किसी फोल्डर की सभी सोर्स फाइलों में सबसे ऊपर एक ही पैकेज का नाम लिखा होना चाहिए। परंपरा से पैकेजों का नाम उसी फोल्डर जैसा रखा जाता है जिसमें वे रखे होते हैं।

package greeting

Go पैकेजों की एक बहुत बड़ी स्टैंडर्ड लाइब्रेरी देता है। इन पैकेजों को आप अपने प्रोग्राम में import कीवर्ड से इस्तेमाल कर सकते हैं। स्टैंडर्ड लाइब्रेरी के पैकेजों को उनके नाम से ही इम्पोर्ट किया जाता है।

package greeting

import "fmt"

इसके बाद इम्पोर्ट किए गए पैकेज को पैकेज के नाम से ही इस्तेमाल किया जाता है:

world := "World"
fmt.Sprintf("Hello %s", world)

कोई चीज़ दूसरे पैकेजों के कोड से कॉल की जा सकती है या नहीं, यह Go उसके घोषित करने के तरीके से तय करता है। किसी फंक्शन, टाइप, वेरिएबल, कॉन्स्टेंट या स्ट्रक्ट फील्ड को बाहर से दिखाई देने वाला (जिसे exported कहते हैं) बनाने के लिए ज़रूरी है कि नाम की शुरुआत बड़े अक्षर से हो।

package greeting

// Hello is a public function (callable from other packages).
func Hello(name string) string {
    return "Hello " + name
}

// hello is a private function (not callable from other packages).
func hello(name string) string {
    return "Hello " + name
}

स्ट्रिंग फॉर्मैटिंग

Go में एक बिल्ट-इन पैकेज है जिसका नाम fmt (फॉर्मैट पैकेज) है। यह इनपुट और आउटपुट का फॉर्मैट बदलने के लिए कई तरह के फंक्शन देता है। सबसे ज़्यादा इस्तेमाल होने वाला फंक्शन Sprintf है, जो %s जैसे वर्ब की मदद से वैल्यू को स्ट्रिंग में जोड़ता है और वह स्ट्रिंग लौटाता है।

import "fmt"

food := "taco"
fmt.Sprintf("Bring me a %s", food)
// Returns: Bring me a taco

Go में दशमलव संख्याओं को Sprintf के वर्ब से आसानी से फॉर्मैट किया जा सकता है: %g (संक्षिप्त रूप), %e (घातांक) या %f (घातांक रहित)। इन तीनों वर्ब के ज़रिए फील्ड की चौड़ाई और संख्या की स्थिति नियंत्रित की जा सकती है।

import "fmt"

number := 4.3242
fmt.Sprintf("%.2f", number)
// Returns: 4.32

उपलब्ध सभी वर्ब की पूरी सूची आप फॉर्मैट पैकेज के डॉक्यूमेंटेशन में देख सकते हैं।

fmt में स्ट्रिंग पर काम करने वाले और भी फंक्शन हैं, जैसे Println, जो अपने आर्गुमेंट को सिर्फ कंसोल पर प्रिंट करता है, और Printf, जो इनपुट को Sprintf की तरह फॉर्मैट करने के बाद प्रिंट करता है।

निर्देश

एक बार एक सनकी प्रोग्रामर एक अजीब घर में रहता था, जिसकी खिड़कियों पर सलाखें लगी थीं। एक दिन उसने एक ऑनलाइन जॉब बोर्ड से पार्टी रोबोट बनाने का काम लिया। यह रोबोट लोगों का स्वागत करता और उन्हें उनकी सीट तक पहुँचाता। पहला संस्करण बहुत तकनीकी था और उसमें प्रोग्रामर की मानवीय बातचीत की कमी साफ झलकती थी। उसकी कुछ बातें अगले संस्करण में भी पहुँच गईं।

1. पार्टी में नए मेहमान का स्वागत कीजिए

दिए गए नाम का इस्तेमाल करके स्वागत संदेश लौटाने के लिए Welcome फंक्शन बनाइए:

Welcome("Christiane")
// => Welcome to my party, Christiane!

2. पार्टी में आए उस नए मेहमान का स्वागत कीजिए जिसका जन्मदिन आज है

व्यक्ति के दिए गए नाम और उम्र का इस्तेमाल करके जन्मदिन का संदेश लौटाने के लिए HappyBirthday फंक्शन बनाइए। अफसोस की बात है कि यह प्रोग्रामर थोड़ा दिखावा करने वाला है, इसलिए रोबोट को हर मेहमान के जन्मदिन की अपनी जानकारी दिखानी पड़ती है।

HappyBirthday("Frank", 58)
// => Happy birthday Frank! You are now 58 years old!

3. रास्ता बताइए

रास्ता बताने के लिए AssignTable फंक्शन बनाइए। इसे 5 पैरामीटर लेने चाहिए।

  • जिस नए मेहमान का स्वागत करना है, उसका नाम (string)
  • टेबल का नंबर (int)
  • साथ बैठने वाले का नाम (string)
  • टेबल किस तरफ है, वह दिशा (string)
  • टेबल तक की दूरी (float64)

सही परिणाम का प्रारूप नीचे दिए उदाहरण में देखा जा सकता है।

रोबोट टेबल का नंबर 3 अंकों के प्रारूप में बताता है। अगर नंबर 3 अंकों से छोटा है, तो उसके आगे अतिरिक्त शून्य लगाकर उसे 3 अंकों का बना दिया जाता है (जैसे 3 बन जाता है 003)। रोबोट टेबल की दूरी भी बताता है। शुक्र है कि यह सटीकता सिर्फ 1 अंक तक सीमित रहती है।

AssignTable("Christiane", 27, "Frank", "on the left", 23.7834298)
// =>
// Welcome to my party, Christiane!
// You have been assigned to table 027. Your table is on the left, exactly 23.8 meters from here.
// You will be sitting next to Frank.
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Go Exercism

पार्टी रोबोट शुरू करने के लिए तैयार हैं?

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