Skip to content

Instantly share code, notes, and snippets.

View nathankleyn's full-sized avatar
👨‍💻
Creating!

Nathan Kleyn nathankleyn

👨‍💻
Creating!
View GitHub Profile
@nathankleyn
nathankleyn / gist_10_functional_ruby_part_iii.rb
Created December 30, 2012 12:12
Gist #10 For "Functional Programming Techniques With Ruby: Part III"
(1..100).lazy.select { |x| x % 3 == 0 }.select { |x| x % 4 == 0 }.to_a
@nathankleyn
nathankleyn / gist_9_functional_ruby_part_iii.rb
Created December 30, 2012 12:12
Gist #9 For "Functional Programming Techniques With Ruby: Part III"
(1..100).select { |x| x % 3 == 0 }.select { |x| x % 4 == 0 }
@nathankleyn
nathankleyn / gist_8_functional_ruby_part_iii.rb
Created December 30, 2012 12:11
Gist #8 For "Functional Programming Techniques With Ruby: Part III"
a = []
Prime.each do |x|
next unless x.to_s.include?('3')
a << x
break if a.size == 20
end
@nathankleyn
nathankleyn / gist_7_functional_ruby_part_iii.rb
Created December 30, 2012 12:11
Gist #7 For "Functional Programming Techniques With Ruby: Part III"
Prime.lazy.select { |x| x.to_s.include?('3') }.take(20).to_a
Prime.lazy.select { |x| 100.to_s.chars.map(&:to_i).inject(:+) }.take(20).to_a
@nathankleyn
nathankleyn / gist_6_functional_ruby_part_iii.rb
Created December 30, 2012 12:10
Gist #6 For "Functional Programming Techniques With Ruby: Part III"
def fact(n)
(1..n).inject(:*) || 1
end
@nathankleyn
nathankleyn / gist_5_functional_ruby_part_iii.rb
Created December 30, 2012 12:09
Gist #5 For "Functional Programming Techniques With Ruby: Part III"
x = [1, 2, 3]
enum = x.each
puts enum.class # => Enumerator
puts enum.next # => 1
puts enum.next # => 2
puts enum.next # => 3
puts enum.next # => StopIteration exception
@nathankleyn
nathankleyn / gist_4_functional_ruby_part_iii.rb
Created December 30, 2012 12:09
Gist #4 For "Functional Programming Techniques With Ruby: Part III"
puts = [1, 2, 3].each.class # => Enumerator
@nathankleyn
nathankleyn / gist_3_functional_ruby_part_iii.rb
Created December 30, 2012 12:08
Gist #3 For "Functional Programming Techniques With Ruby: Part III"
def fact(n)
factorial = 1
begin
factorial *= n--
end while n > 1
factorial
end
@nathankleyn
nathankleyn / gist_2_functional_ruby_part_iii.txt
Created December 30, 2012 12:07
Gist #2 For "Functional Programming Techniques With Ruby: Part III"
fact(6) = 6 * fact(5)
= 6 * 5 * fact(4)
= 6 * 5 * 4 * fact(3)
= 6 * 5 * 4 * 3 * fact(2)
= 6 * 5 * 4 * 3 * 2 * fact(1)
= 6 * 5 * 4 * 3 * 2 * 1
= 720
@nathankleyn
nathankleyn / gist_1_functional_ruby_part_iii.rb
Created December 30, 2012 12:06
Gist #1 For "Functional Programming Techniques With Ruby: Part III"
def fact(n)
return 1 if (0..1).include?(n)
n * fact(n - 1)
end