0

n x m の文字行列の座標を Python に格納するアルゴリズムがあります。例えば

a b 
c d 

座標と文字のペアのリストとして保存されます。

(0, 0) a    (0, 1) b   
(1, 0) c    (1, 1) d

私のpythonコードは以下の通りです

def init_coordination(self):

    list_copy = self.list[:]
    row = 0
    column = 0
    coordination = {}

    for char in list copy

        if column >= self.column:
            row += 1
            column = 0

        coordination[char] = (row, column)
        column += 1

    return coordination

このアルゴリズムをルビーに実装しようとしていますが、ルビーの辞書に最も近いデータ構造はハッシュであると推測しています。次のルビーコードでいくつかの提案が必要です:

def self.init_coordination
    position = Hash.new("Coordination of char")
    row = 0
    column = 0
    @list.each do |char|
        if column < @column
            position[row, column] = char
            column = column + 1
        elsif column == @column
            column = 0
            row = row + 1
        elsif row == @row
            puts position
        end
    end

また、Ruby でリストを表現するにはどうすればよいでしょうか。

4

1 に答える 1

2

Ruby のリストはArrayと呼ばれます。

arr = []
arr.push(0) # => [0]
arr.concat([1,2,3]) # => [0, 1, 2, 3]
arr2d = [[0,0],[0,1],[1,0],[1,1]]

おそらくより効率的で、より多くの関心のある操作がある可能性が高いMatrix タイプもあります。

require 'matrix'
matrix = Matrix[[0,0],[0,1],[1,0],[1,1]]
matrix[0,0] # => 0
于 2012-12-19T22:26:35.447 に答える