Class: Array
Instance Method Summary collapse
- #nuniq ⇒ Object
- #pieces(no_pieces) ⇒ Object
- #product ⇒ Object
- #random ⇒ Object
- #slice_with_stride(stride, offset, slice_size = 1) ⇒ Object
- #sum ⇒ Object
Instance Method Details
#nuniq ⇒ Object
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 |
#product ⇒ Object
495 496 497 |
# File 'lib/rubyhacks.rb', line 495 def product return inject{|old, new| old * new} end |
#random ⇒ Object
456 457 458 |
# File 'lib/rubyhacks.rb', line 456 def random self[rand(size)] end |
#slice_with_stride(stride, offset, slice_size = 1) ⇒ Object
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 |
#sum ⇒ Object
492 493 494 |
# File 'lib/rubyhacks.rb', line 492 def sum return inject{|old, new| old + new} end |