Skip to content

Instantly share code, notes, and snippets.

@mayfer
Created April 20, 2015 20:14
Show Gist options
  • Save mayfer/f010425fbcdcd9001cfc to your computer and use it in GitHub Desktop.
Save mayfer/f010425fbcdcd9001cfc to your computer and use it in GitHub Desktop.
algorithms and Data structures examples
def find_index(numbers, number)
numbers.each_with_index do |n, i|
if n == number
return i
end
end
return nil
end
def find_sum_pairs(numbers, sum)
cache = {}
numbers.each_with_index do |n, i|
target = sum - n
if cache.has_key?(target)
return i, cache[target]
end
cache[n] = i
end
return nil
end
def find_index_sorted(numbers, number)
middle = numbers.size / 2
first = 0
last = numbers.size - 1
while middle != last && middle != first
if numbers[middle] == number
return middle
end
puts "middle is #{middle}"
puts "first is #{first}"
puts "last is #{last}"
gets
if number > numbers[middle]
first = middle
middle += (last - middle) / 2
else
last = middle
middle = middle / 2
end
end
return nil
end
# numbers = (1..1000000).step(1).to_a
# number = 1100
# puts find_index_sorted(numbers, number).inspect
def divide(number, divisor)
results = 0
while number >= divisor
number -= divisor
result += result
divisor += divisor
end
remainder = number
return result, remainder
end
require 'pry'
def find_common_rhyme
words = File.open('/usr/share/dict/words').read
rhymes = Hash.new { [] }
most = 0
common_rhyme = nil
words.each_line do |word|
word = word.strip.downcase
rhyme = word[-3..-1]
rhymes[rhyme] <<= word
if rhymes[rhyme].size > most
most = rhymes[rhyme].size
common_rhyme = rhyme
end
end
puts common_rhyme
puts rhymes[common_rhyme].inspect
puts rhymes[common_rhyme].size
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment