C# में struct और class एक-दूसरे से बहुत मिलते-जुलते हैं। इनमें स्थिति और व्यवहार दोनों होते हैं। इनके कंस्ट्रक्टर आर्गुमेंट लेते हैं, इंस्टेंस को असाइन किया जा सकता है और उनकी समानता की जाँच की जा सकती है। इंस्टेंस को संग्रह में भी रखा जा सकता है।
enum Unit
{
Kg,
Lb
}
struct Weight
{
private double count;
private Unit unit;
public Weight(double count, Unit unit)
{
this.count = count;
this.unit = unit;
}
public override string ToString()
{
return count.ToString() + unit.ToString();
}
}
new Weight(77.5, Unit.Kg).ToString();
// => "77.6Kg"
Isaacs Asteroid Exploration Co. के क्लेम विभाग ने आपको उनके भूमि दावा सिस्टम का प्रदर्शन बेहतर बनाने का काम सौंपा है।
हर बार जब कोई नया क्षुद्रग्रह उपयोग के लिए तैयार होता है, तो सट्टेबाज़ों को भूमि के एक टुकड़े पर अपना दावा करने के लिए आमंत्रित किया जाता है। क्षुद्रग्रह की भूमि चार भुजाओं वाले प्लॉटों में बाँटी गई है। सट्टेबाज़ प्लॉट के आयाम बताकर उस पर अपना दावा करते हैं।
आपको एक ऐसा तेज़ सिस्टम बनाना है जो भूमि के लिए इस होड़ को संभाल सके, जिसकी वजह से पहले वेबसाइट क्रैश हो चुकी है।
माप की इकाई 100 मीटर है, लेकिन इन कामों में इस पर ध्यान देने की ज़रूरत नहीं है।
Plot स्ट्रक्चर का कार्यान्वयन पूरा कीजिए। इस स्ट्रक्चर में चार coord स्ट्रक्चर होते हैं, जिन्हें यह अपने कंस्ट्रक्टर में स्वीकार करता है।
दावा दर्ज करने की सुविधा देने के लिए ClaimsHandler.StakeClaim() मेथड लागू कीजिए।
कोई दावा दर्ज हुआ है या नहीं, यह देखने के लिए ClaimsHandler.IsClaimStaked() मेथड लागू कीजिए।
var ch = new ClaimsHandler();
ch.StakeClaim(new Plot(new Coord(1,1), new Coord(2,1), new Coord(1,2), new Coord(2,2)));
ch.IsClaimStaked(new Plot(new Coord(1,1), new Coord(2,1), new Coord(1,2), new Coord(2,2)));
// => true
मौजूदा दावे की तुलना पिछले दावे से करने के लिए ClaimsHandler.IsLastClaim() मेथड लागू कीजिए।
var ch = new ClaimsHandler();
ch.StakeClaim(new Plot(new Coord(1,1), new Coord(2,1), new Coord(1,2), new Coord(2,2)));
ch.IsLastClaim(new Plot(new Coord(1,1), new Coord(2,1), new Coord(1,2), new Coord(2,2)));
// => true
सभी दर्ज दावों की जाँच करके सबसे लंबी भुजा वाला प्लॉट लौटाने के लिए ClaimsHandler.GetClaimWithLongestSide() मेथड लागू कीजिए। किसी प्लॉट के निर्देशांक हमेशा एक ही जुड़े हुए आयताकार आकार में होते हैं।
var ch = new ClaimsHandler();
ch.StakeClaim(new Plot(new Coord(1,1), new Coord(2,1), new Coord(1,2), new Coord(2,2)));
ch.StakeClaim(new Plot(new Coord(10,1), new Coord(20,1), new Coord(10,2), new Coord(20,2)));
ch.GetClaimWithLongestSide();
// => new Plot(new Coord(1,1), new Coord(20,1), new Coord(1,2), new Coord(2,2))
Exercism पर साइन अप कीजिए और C# को 62 कॉन्सेप्ट178 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।