Раздел «Язык Ruby».RubyCourseLecture12:
<<Метапрограммирование на Ruby

Следующая лекция
Предыдущая лекция

Лекция 12: Перебор с возвратом на Ruby. Головоломка "Куб"

Многомерные массивы

Метод Array.new получает блок для создания элементов массива.

p Array.new(10) {|idx| rand}

Напишем метод new_cube для создания многомерных массивов.

class Array
  def self.new_cube(*dims, &block)
    if dims.size == 1
      Array.new(dims[0], &block)
    else
      Array.new(dims.shift) do |i|
        new_block = lambda{|*args| block[i,*args]}
        Array.new_cube(*dims.dup, &new_block)
      end
    end
  end
end

require 'yaml'

puts Array.new_cube(2,3,4) {rand}.to_yaml

Головоломка "Куб"

Прочитайте условие задачи в прикрепленном файле. Напишите программу, которая собирает головоломку.

Следующая лекция
Предыдущая лекция

-- ArtemVoroztsov - 20 Apr 2010

Attachment sort Action Size Date Who Comment
cube.docx manage 47.4 K 20 Apr 2010 - 08:21 ArtemVoroztsov Статья с формулировкой задачи