आज आप सीखेंगे कि रूबी transpose मेथड का उपयोग करके ग्रिड्स से कैसे निपटें।
कल्पना करें कि आपके पास एक परफेक्ट ग्रिड है, मान लीजिए एक 3×3 वर्ग, बहुआयामी सरणी के रूप में।
और आप पंक्तियों को लेना और उन्हें स्तंभों में बदलना चाहते हैं।
आप ऐसा क्यों करना चाहेंगे?
एक उपयोग क्लासिक गेम के लिए है: टिक-टैक-टो।
आप अपने बोर्ड को ग्रिड के रूप में संग्रहीत करते हैं। फिर जीतने वाली चाल ढूंढने के लिए आपको पंक्तियों, स्तंभों और विकर्णों की जांच करनी होगी।
समस्या यह है कि यदि आप अपने ग्रिड को सरणी के रूप में संग्रहीत कर रहे हैं तो आपको केवल पंक्तियों तक सीधी पहुंच मिलती है।
कठिन तरीके से स्तंभ
"सीधी पहुंच" से मेरा मतलब है कि आप अपनी सरणी पर जा सकते हैं (each, map, आदि के साथ) बिना आवश्यकता से अधिक सरणी इंडेक्सिंग का उपयोग किए।
आइए एक उदाहरण देखें!
यहाँ एक ग्रिड है:
grid = [ [1,2,3], [4,5,6], [7,8,9] ]
यहाँ आपके लिए एक विज़ुअल है:

आप इंडेक्स को रेफरेंस करके स्तंभ प्राप्त कर सकते हैं।
उदाहरण के लिए, पहला स्तंभ होगा:
[grid[0][0], grid[1][0], grid[2][0]] # [1, 4, 7]
लेकिन पहली पंक्ति बस यह है:
grid[0] # [1, 2, 3]
हम स्तंभों के साथ काम करना पंक्तियों जितना आसान कैसे बना सकते हैं?
आसान तरीके से स्तंभ
इसे करने का आसान तरीका Array#transpose मेथड का उपयोग करना है।
उदाहरण:
columns = grid.transpose
हाँ, बस इतना ही करना है!
अब आप पहला स्तंभ इस तरह प्राप्त कर सकते हैं:
columns[0] # [1, 4, 7]
जैसा कि आप देख सकते हैं बहुत सारे मेथड्स जानना आपका बहुत सारा काम बचा सकता है 🙂
टिक-टैक-टो
मैं पूरी चीज समझाने नहीं जा रहा हूँ। मैं सिर्फ आपको दिखाना चाहता हूँ कि यह मेथड वास्तविक प्रोजेक्ट पर कैसे लागू हो सकता है।
टिक-टैक-टो का गेम जीतने के लिए आपको एक पंक्ति, एक स्तंभ या एक विकर्ण भरना होगा।
पंक्तियों की जांच के लिए यहाँ कोड है:
def check_rows @board.each { |row| return row.first if all_equal?(row) } end और यहाँ स्तंभों के लिए कोड है:
def check_columns @board.transpose.each { |row| return row.first if all_equal?(row) } end ध्यान दें कि एकमात्र अंतर transpose मेथड है!
यहाँ all_equal? मेथड है:
def all_equal?(row) return if row.first == nil row.each_cons(2).all? { |x,y| x == y } end आप Enumerable मेथड्स पर इस पोस्ट को पढ़कर each_cons मेथड के बारे में अधिक जान सकते हैं।
सारांश
आपने transpose मेथड के बारे में सीखा।
एक परफेक्ट ग्रिड दिए जाने पर, transpose आपको पंक्तियों को स्तंभों में बदलने की अनुमति देता है ताकि आसान पहुंच हो सके।
यदि आपको यह पोस्ट पसंद आया तो आप मेरी किताब रूबी डीप डाइव की एक प्रति खरीदने पर विचार कर सकते हैं।