Class: Array

Inherits:
Object show all
Defined in:
lib/rubyhacks.rb

Instance Method Summary collapse

Instance Method Details

#meanObject



500
501
502
# File 'lib/rubyhacks.rb', line 500

def mean
  return sum/size.to_f
end

#nuniqObject



508
509
510
511
512
513
514
515
516
517
518
519
520
521
# File 'lib/rubyhacks.rb', line 508

def nuniq
  arr = dup
  i=0; 
  while i < arr.size
    j=i+1
    while j < arr.size 
#         p arr[i], arr[j]
      arr.delete_at(j) if (arr[j].to_f <=> arr[i].to_f) == 0
      j+=1
    end
    i+=1
  end
  arr
end

#pieces(no_pieces) ⇒ Object



477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
# File 'lib/rubyhacks.rb', line 477

def pieces(no_pieces)
  ans = []
  piece_sizes  = []

  for i in 0...no_pieces 
    ans.push []; piece_sizes[i] = 0
  end
  for j in 0...size 
    piece_sizes[j % no_pieces] += 1
  end
#     p ans, piece_sizes
  accum = 0
  piece_sizes.each_with_index do |piece_size, piece|
    ans[piece] = self.slice(accum...accum + piece_size)
    accum += piece_size
  end
  return ans
end

#productObject



504
505
506
# File 'lib/rubyhacks.rb', line 504

def product
  return inject{|old, new| old * new}
end

#randomObject



460
461
462
# File 'lib/rubyhacks.rb', line 460

def random
  self[rand(size)]
end

#slice_with_stride(stride, offset, slice_size = 1) ⇒ Object

Raises:

  • (ArgumentError)


464
465
466
467
468
469
470
471
472
473
474
475
# File 'lib/rubyhacks.rb', line 464

def slice_with_stride(stride, offset, slice_size = 1)
  raise ArgumentError.new("slice_size cannot be bigger than stride - offset") if slice_size > stride - offset
  i = 0; new_arr = []
  loop do
    for j in 0...slice_size
      new_arr.push self[i + offset + j]
    end
    i += stride
    break if i >= size
  end
  return new_arr
end

#sumObject



496
497
498
# File 'lib/rubyhacks.rb', line 496

def sum 
  return inject{|old, new| old + new}
end