A collection of simple, yet useful ruby code examples
a = ['foo', 'bar', 'zzz', 'foo', 'bar', 'ccc']
Hash[a.group_by {|e| e.itself}.map {|k, v| [v.uniq, v.size]}]
MyModel = Class.new do
def my_method
end
end
MyModel.new.my_method
require 'benchmark'
def bench(count, &block)
Benchmark.realtime do
count.times { |i| yield(i) }
end
end
and use it like:
bench(1000) do |i|
"joining strings is fast" << i.to_s
end
let count = 4;
[...Array(count).keys()]
ARR = [1,2,3,5,7,9,12,23,34,45,65]
# Find the index of letter in the array
def find(num)
lowest = 0
highest = ARR.count
while lowest < highest do
middle_index = ((lowest + highest) / 2).floor
middle_value = ARR[middle_index]
if num == middle_value
puts "Index is #{middle_index}"
break
elsif num < middle_value
highest = middle_index - 1
elsif num > middle_value
lowest = middle_index + 1
end
end
puts 'No target found'
end
arr = [5,1,4,2,8]
def bubble_sort(arr)
length = arr.size - 1
loop do
swapped = false
for i in 0..length do
curr = arr[i]
nex = arr[i+1]
if nex && curr > nex
swapped = true
arr[i] = nex
arr[i+1] = curr
end
end
break if swapped == false
end
arr
end
str = 'string'
str.chars.inject([]) {|arr, char| arr.unshift(char) }.join
INPUT = [1,2,3,4,5,6,7,9]
def find_pair(sum)
start = 0
finish = INPUT.length-1
while start < finish
return "Match: #{INPUT[start]}, #{INPUT[finish]}" if INPUT[start] + INPUT[finish] == sum
finish -= 1 if INPUT[start] + INPUT[finish] > sum
start += 1 if INPUT[start] + INPUT[finish] < sum
end
end
const strand1 = 'GAGCCTACTAACGGGAT'
const strand2 = 'CATCGTAATGACGGCCT'
let hammingDistance = (strand1, strand2) => {
let distance = 0;
const chars1 = strand1.split("");
const chars2 = strand2.split("");
for(let char in chars1){
if(chars1[char] != chars2[char]){
distance += 1;
}
}
return distance;
}
const arr = [1, [2,3,4], [5,6,7], 8, [9], [10, 11, 12], null]
let flat = [];
let flatten = (array) => {
array.reduce((acc, value) => {
if(Array.isArray(value)){
flatten(value);
} else {
flat.push(value);
}
}, [])
return flat;
}
module Enumerable
def interpose(sep:)
Enumerator.new do |el|
items = each
loop do
begin
el << items.next
el << sep if items.peek
rescue StopIteration
break
end
end
end
end
end