将图形的坐标保存在表中,然后按随机顺序删除?做到这一点的最佳方法



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

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

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

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

到目前为止,我只做了要求长度和宽度值的编码。

我该如何处理剩下的事情?如果你需要任何澄清,或者这个问题太令人困惑,请留下评论,我会尽力让它变得更好。

如有任何帮助,我们将不胜感激。

谢谢

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

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

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

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

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

a[4][5] = 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

最新更新