Skip to content

Instantly share code, notes, and snippets.

View kinduff's full-sized avatar

Alejandro AR kinduff

View GitHub Profile
@kinduff
kinduff / magic_trick.rb
Created April 2, 2015 18:55
Mathematical Magic Trick
# 52-Card Perfect Shuffles - Numberphile
# https://www.youtube.com/watch?v=Y2lXsxmBx7E
module Magic
class Sys
class << self
def ask
print "I choose: "
gets.chomp
end
@kinduff
kinduff / win_guessing.rb
Last active January 13, 2016 18:22
How to Win a Guessing Game
# How to Win a Guessing Game - Numberphile
# Based on https://www.youtube.com/watch?v=ud_frfkt1t0
class WinGuessing
def initialize(total_iterations, max_random_num)
@total_times = total_iterations
@max_random_num = max_random_num
@max_length = @max_random_num.to_s.length
@total_result = 0
end
def findIndex(values, target)
values.each_with_index do |value, i|
return i if value == target
end
end
findIndex([4, 8, 15, 16, 23, 42], 15)
# => 2
class LinkedList
def initialize
@head = @tail = nil
end
def add(value)
node = Node.new(value)
@head = node if @head.nil?
@tail.next = node unless @tail.nil?
def removeAt(index)
prev = nil
node = @head
i = 0
loop do
prev = node
node = node.next
i += 1
break unless !node.nil? and i < index
end
class HashTable
def initialize(size)
@size = size
@buckets = Array.new(@size)
end
def add(value)
index = hash(value)
@buckets[index] = value
end
class LinkedList
#...
end
class Node
#...
end
class HashTable
def initialize(size)
def findIndex(values, target)
binarySearch(values, target, 0, values.size - 1)
end
def binarySearch(values, target, start, finish)
return -1 if start > finish
middle = ((start+finish)/2).floor
value = values[middle]
def sort(values)
length = values.size - 2
swapped = true
while swapped
swapped = false
0.upto(length) do |i|
if values[i] > values[i+1]
values[i], values[i+1] = values[i+1], values[i]
def sort(values)
length = values.size - 1
1.upto(length) do |i|
temp = values[i]
j = i - 1
while j >= 0 and values[j] > temp
values[j+1] = values[j]
j -= 1