<<Метапрограммирование на 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