class MoreMath::Permutation

def project(data = @collection)

# => "ceabdf"
perm.project("abcdef")
# => #
perm = Permutation.new(6, 312)
Example:

it is used as a data object.
with Permutation.for the collection used to create
the #[] method. If this Permutation inbstance was created
into the data object that should respond to
Returns the projection of this instance's Permutation#value
def project(data = @collection)
  data or raise ArgumentError, "a collection is required to project"
  raise ArgumentError, "data size is != #{size}!" if data.size != size
  projection = data.clone
  value.each_with_index { |i, j| projection[j] = data[i] }
  projection
end