1

我有一个情况,它是这样的:

我需要像在数学图中使用的那样打印出坐标。所以 (0,0) (0,1) (0,2) 等等。因此,如果长度指定为 10,宽度指定为 20,则图形区域将是从 (0,0) 到 (10,20) 的所有点。

我希望将这些值存储在一个表中,以便可以按顺序打印出来。

稍后,有些值将被删除,因此假设删除的值是 (4,5) (4,6) (4,7),然后之前创建的主表不应该包含这些值. 而且我需要能够打印出带有剩余值的新表。

到目前为止,我只完成了询问长度和宽度值的编码。

我应该如何继续剩下的事情?如果您需要任何澄清或问题太令人困惑,请发表评论,我会尽力使其变得更好。

任何帮助将不胜感激。

谢谢

4

1 回答 1

1

根据您的需要,有几种方法可以做到这一点。

简单的方法是使用这样的数组数组:

a = Array.new(11) {Array.new(21) {0}}

这将创建一个像 a[0][0] 到 a[10][20] 的数组,每个项目都初始化为 0。

要删除一个项目,请将其设置为 nil:

a[4][5] = nil

打印数组时,跳过任何 nil 值:

for x in 0..10
  for y in 0..20
    next if a[x][y]==nil
    puts a[x][y]
  end
end

如果您的图表非常大,请阅读“稀疏矩阵”,这是 Excel 之类的工具如何使用更少的 RAM 来存储许多单元格的空白单元格:

http://en.wikipedia.org/wiki/Sparse_matrix

于 2012-10-07T17:04:46.197 回答