This documentation is automatically generated by online-judge-tools/verification-helper
require "spec" require "../../src/array/new" describe Array do it ".new(sizes, initial_value)" do Array.new({2, 2}, 42).should eq [[42, 42], [42, 42]] Array.new({2, 3}, 42).should eq [[42, 42, 42], [42, 42, 42]] end it ".new(sizes, &block)" do Array.new({2, 2}) { |i, j| i + j }.should eq [[0, 1], [1, 2]] Array.new({3, 3, 3}) { |i, j, k| i * j * k }.should eq [ [[0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 1, 2], [0, 2, 4]], [[0, 0, 0], [0, 2, 4], [0, 4, 8]], ] Array.new({3, 3}) { |i, j| {i, j} }.should eq [ [{0, 0}, {0, 1}, {0, 2}], [{1, 0}, {1, 1}, {1, 2}], [{2, 0}, {2, 1}, {2, 2}], ] end end
require "spec" # require "../../src/array/new" class Array(T) def self.new(sizes : Tuple(*I), initial_value) forall I {% begin %} {% for i in 0...I.size %} Array.new(sizes[{{i}}]) { {% end %} initial_value {% for i in 0...I.size %} } {% end %} {% end %} end def self.new(sizes : Tuple(*I), &block) forall I {% begin %} {% for i in 0...I.size %} Array.new(sizes[{{i}}]) { |index{{i}}| {% end %} yield({% for i in 0...I.size %} index{{i}}, {% end %}) {% for i in 0...I.size %} } {% end %} {% end %} end end describe Array do it ".new(sizes, initial_value)" do Array.new({2, 2}, 42).should eq [[42, 42], [42, 42]] Array.new({2, 3}, 42).should eq [[42, 42, 42], [42, 42, 42]] end it ".new(sizes, &block)" do Array.new({2, 2}) { |i, j| i + j }.should eq [[0, 1], [1, 2]] Array.new({3, 3, 3}) { |i, j, k| i * j * k }.should eq [ [[0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 1, 2], [0, 2, 4]], [[0, 0, 0], [0, 2, 4], [0, 4, 8]], ] Array.new({3, 3}) { |i, j| {i, j} }.should eq [ [{0, 0}, {0, 1}, {0, 2}], [{1, 0}, {1, 1}, {1, 2}], [{2, 0}, {2, 1}, {2, 2}], ] end end