2015-05-31 2 views
1

Я новичок в рубиновом программировании. Я написал небольшую программу для рекурсивного подсчета blob в двумерном массиве. он содержит два класса, ячейки и капли. Я получаю следующую ошибку, и я не знаю, что это значит или как ее исправить.запустить рубиновый проект на рубиновой руднике

прилагается мой код и ошибка. Cell Класс

class Cell 

    attr_accessor :data,:visited,:row,:col 


    def initialize(data, row, col) 
     @data = data 
     @visited = false 
     @row = row 
     @col = col 
    end 

    def to_s 
    self.data.to_s 
    end 

end 

Blob класс

class Blobs 
require ./Cell 
@cells = Array.new(10){Array.new(10)} 

def separate(percentage) 
    for i in 0..10 
    for i in 0..10 
     random = Random.rand(0,100) 
     if random < percentage 
     @cells[i][j] = Cell.new('x',i,j) 
     else 
     @cells[i][j] = Cell.new(nil, i, j) 
     end 
    end 
    end 
end 

def markBlob(currentCell) 
    if currentCell.visited 
    return 
    end 
    currentCell.visited = true 
    if currentCell.data.nil? 
    return 
    end 

    if currentCell.row >0 
    markBlob(@cells[currentCell.row-1][currentCell.col]) 
    end 

    if currentCell.row <@cells.size-1 
    markBlob(@cells[currentCell.row+1][currentCell.col]) 
    end 

    if currentCell.col>0 
    markBlob(@cells[currentCell.row][currentCell.col-1]) 
    end 

    if currentCell.col<@cells.size-1 
    markBlob(@cells[currentCell.row][currentCell.col+1]) 
    end 

end 

def countblobs 
    count = 0 
    for i in 0..10 
    for j in 0..10 
     cell = @cells[i][j] 
     if !cell.visited && cell.data.nil? 
     count++ 
     markBlob(cell) 
     end 
    end 
    end 
    return count 
end 

def to_s 
    for i in 0..10 
    for j in 0..10 
     if @cells[i][j].data.nil? 
     puts '- ' 
     else 
     puts @cells[i][j].data + ' ' 
     end 
    end 
    puts "\n" 
    end 

end 

blob = Blobs.new 
number = blob 
puts number 

    end 

это ошибка, я получаю:

C:\Ruby22\bin\ruby.exe -e   $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)   C:/Users/Nechama/RubymineProjects/blobs/blobs.rb 
C:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:38:in `require': wrong number of arguments (0 for 1) (ArgumentError) 
    from C:/Users/Nechama/RubymineProjects/blobs/blobs.rb:3:in `<class:Blobs>' 
    from C:/Users/Nechama/RubymineProjects/blobs/blobs.rb:2:in `<top (required)>' 
    from -e:1:in `load' 
    from -e:1:in `<main>' 

Process finished with exit code 1 
+0

'требуют/Cell'. - Вы должны' require' путей файлов. Это не путь к файлу или даже строка, которая могла бы представлять его. –

+0

по ошибке вы можете видеть, что проблема в вашем файле blobs, в строке 3: 'from C:/Users/Nechama/RubymineProjects/blobs/blobs. rb: 3: in '' –

+0

как я могу превратить его в путь к файлу? – programmingGirl

ответ

0

require должны получить строку в качестве аргумента.

Использование require_relative к клеточным файлу

require_relative 'cell' 

и поставить его выше class Blobs.

Подробнее о Including Other Files In Ruby

+0

нормально я попробую – programmingGirl

+0

это не работает. im, получая следующий стек: – programmingGirl

+0

/blobs/blobs.rb:62:in 'each ' \t /blobs/blobs.rb:62:in' block in to_s' \t /blobs/blobs.rb:61: в ' каждый» \t сгустков/blobs.rb: 61: в' to_s' /blobs/blobs.rb:76:in 'ставит \t блобова/blobs.rb: 76: в' ставит \t/блобов/блобова .rb: 76: в ' ' \t /blobs/blobs.rb:2:in' <сверху (обязательно)>' \t из -e: 1: в 'нагрузки» \t из -e: 1: в '

' – programmingGirl

 Смежные вопросы

  • Нет связанных вопросов^_^