2014-07-11 79 views
0

我是Ruby的新手,我試圖通過傳遞兩個值作爲高度,另一個作爲寬度來創建實質上的圖表。創建後,我希望能夠單獨調用圖上的每個點。我知道我需要創建一個散列和或數組來存儲圖上的每個點,但我不知道如何迭代每個值。紅寶石 - 如何創建繪圖點

例如

def graph_area(x, y) 
    x = 4 
    y = 2 
    # Given the above info my graph would have 8 points 
    # However I'm not sure how to make create an array that returns 
    # {[x1, y1] => 1, [x1, y2] => 2, [x2, y1] => 3, [x2, y2]...} etc 

    # output 
    #  1234 
    #  5678 
end 

是這種方法,即使是一個實踐?

回答

2

您需要創建數組的數組:

def graph_area(x, y) 
    counter = 0 
    Array.new(y) { Array.new(x) { counter += 1 }}  
end 

board = graph_area(4,2) 
puts board.map(&:join) 

#=> 
# 1234 
# 5678 

您可以通過訪問特定的字段(0 - 索引):

board[0][0] #=> 1 
1

下面是使用each_slice做這件事的方式:

def graph_area(x, y) 
    (1..x*y).each_slice(x).to_a 
end 

area = graph_area(4, 2) 
# => [[1,2,3,4],[5,6,7,8]] 
area[0][0] 
# => 1 
area[1][2] 
# => 7