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