/ / रूबी: 2 डी सरणी में टेक्स्ट फ़ाइल पढ़ें, जबकि न्यूलाइन को भी हटाया जा रहा है? - रूबी-ऑन-रेल, रूबी, सरणी, लूप

रूबी: 2 डी सरणी में टेक्स्ट फ़ाइल पढ़ें, जबकि न्यूलाइन को भी हटाया जा रहा है? - रूबी-ऑन-रेल, रूबी, सरणी, लूप

मैं अनदेखा कर रहा हूं, एक फ़ाइल से पाठ इनपुट करने की कोशिश कर रहा हूँपहली पंक्ति, और एक अलग इंडेक्स [2], []] पर प्रत्येक अक्षर को 2 डी सरणी में जोड़ना। अब तक मैं पात्रों को अपनी अनुक्रमणिका में जोड़ सकता हूं लेकिन "chomp या आदि के साथ न्यूलाइन वर्णों को हटा नहीं सकता।

मैं चाहता हूं कि मेरा अंतिम परिणाम हो

[["*",".",".","."]","[".",".","*","."]","[".",".",".","."]]

इसलिए कि [0][0] वापस होगा * उदाहरण के लिए, और [0] वापस होगा *...

अभी मैं वापस आ रहा हूँ

[["*",".",".",".","n"]","[".",".","*",".","n"]","[".",".",".",".","n"]]

प्रश्न में कोड है:

def load_board(file)
board = File.readlines(file)[1..-1].map do |line|
line.split("").map(&:to_s)
end
end

origin_board = load_board("mines.txt")
print origin_board

अगर मैं निम्नलिखित कोड आज़माता हूं:

def load_board(file)
board = File.readlines(file)[1..-1].map do |line|
line.split.map(&:to_s)
end
end

origin_board = load_board("mines.txt")
print origin_board

मैं एक 2 डी सरणी के साथ समाप्त होता है जैसे:

[["*..."],["..*."],["...."]]

उत्तर:

जवाब के लिए 0 № 1

आपके इनपुट को पट्टी करने में मदद करनी चाहिए:

def load_board(file)
board = File.readlines(file)[1..-1].map do |line|
#    ⇓⇓⇓⇓⇓
line.strip.split("").map(&:to_s)
end
end

String#strip एक स्ट्रिंग से अग्रणी पीछे वाले रिक्त स्थान हटा देंगे। दूसरा विकल्प उपयोग नहीं करना है readlines के पक्ष में read तथा split द्वारा $/ (रेखा विभाजक):

def load_board(file)
board = File.read(file).split($/)[1..-1].map do |line|
line.split("").map(&:to_s)
end
end

जवाब के लिए 0 № 2

आप .split से पहले .chomp जोड़ सकते हैं, इस तरह:

def load_board(file)
board = File.readlines(file)[1..-1].map do |line|
line.chomp.split("").map(&:to_s)
end
end

हेवन ने बिल्कुल इसका परीक्षण नहीं किया लेकिन कुछ झुकाव किया और इसे काम करना चाहिए http://repl.it/hgJ/1.