मैं अनदेखा कर रहा हूं, एक फ़ाइल से पाठ इनपुट करने की कोशिश कर रहा हूँपहली पंक्ति, और एक अलग इंडेक्स [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.