Class: Array

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

Instance Method Summary collapse

Instance Method Details

#nuniqObject



499
500
501
502
503
504
505
506
507
508
509
510
511
512
# File 'lib/rubyhacks.rb', line 499

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



473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
# File 'lib/rubyhacks.rb', line 473

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



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

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

#randomObject



456
457
458
# File 'lib/rubyhacks.rb', line 456

def random
	self[rand(size)]
end

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

Raises:

  • (ArgumentError)


460
461
462
463
464
465
466
467
468
469
470
471
# File 'lib/rubyhacks.rb', line 460

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



492
493
494
# File 'lib/rubyhacks.rb', line 492

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