job_interview 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/job_interview.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require File.expand_path('../job_interview/fizz_buzz', __FILE__)
2
2
  require File.expand_path('../job_interview/fibonacci', __FILE__)
3
+ require File.expand_path('../job_interview/hello_world', __FILE__)
3
4
  require File.expand_path('../job_interview/knapsack' , __FILE__)
4
5
  require File.expand_path('../job_interview/quine' , __FILE__)
5
6
  require File.expand_path('../job_interview/primes' , __FILE__)
@@ -3,6 +3,7 @@ module JobInterview
3
3
  class Answer
4
4
  include JobInterview::Fibonacci
5
5
  include JobInterview::FizzBuzz
6
+ include JobInterview::HelloWorld
6
7
  include JobInterview::Knapsack
7
8
  include JobInterview::Primes
8
9
  include JobInterview::Quine
@@ -1,3 +1,4 @@
1
+ require 'matrix'
1
2
  module JobInterview
2
3
  module Fibonacci
3
4
 
@@ -8,6 +9,8 @@ module JobInterview
8
9
  def fib(n, *args)
9
10
  if args && args.include?(:iterative)
10
11
  iterative_fib(n)
12
+ elsif args && args.include?(:matrix)
13
+ matrix_fib(n)
11
14
  else
12
15
  ## TODO: make this efficient
13
16
  return Array.new(n) {|i| recursive_fib(i + 1) }
@@ -31,6 +34,13 @@ module JobInterview
31
34
 
32
35
  return result
33
36
  end
37
+
38
+ def matrix_fib(n)
39
+ 1.upto(n).map do |i|
40
+ fibonacci_matrix = Matrix[[1,1],[1,0]]
41
+ (fibonacci_matrix**(i-1)) [0,0]
42
+ end
43
+ end
34
44
 
35
45
  end
36
46
  end
@@ -1,21 +1,13 @@
1
1
  module JobInterview
2
2
  module FizzBuzz
3
-
3
+
4
4
  def fizz_buzz(max)
5
- acc = []
6
- (1..max).each do |n|
7
- if ((n % 3 == 0) && (n % 5 == 0))
8
- acc << "FizzBuzz"
9
- elsif (n % 3 == 0)
10
- acc << "Fizz"
11
- elsif (n % 5 == 0)
12
- acc << "Buzz"
13
- else
14
- acc << n
15
- end
5
+ Array.new(max) do |i|
6
+ j = i + 1
7
+ val = (j % 3 == 0 ? "Fizz" : "") +
8
+ (j % 5 == 0 ? "Buzz" : "")
9
+ val.empty? ? j.to_s : val
16
10
  end
17
- return acc
18
11
  end
19
-
20
12
  end
21
- end
13
+ end
@@ -4,15 +4,8 @@ module JobInterview
4
4
  module Primes
5
5
 
6
6
  def primes(n)
7
- p = Prime.each
8
-
9
- acc = []
10
- n.times do
11
- acc << p.next
12
- end
13
-
14
- return acc
7
+ Prime.each.take(n)
15
8
  end
16
9
 
17
10
  end
18
- end
11
+ end
@@ -3,7 +3,7 @@ module JobInterview
3
3
  module Questions
4
4
 
5
5
  def in_5_years
6
- "I'd like to " +
6
+ "I'd " + %W[like love hope].sample + " to " +
7
7
  [
8
8
  "have made",
9
9
  "have enhanced shareholder value by creating",
@@ -37,7 +37,7 @@ module JobInterview
37
37
  ["Some times I", "I always"].sample + " " +
38
38
  ["try too hard", "work too much", "care too much", "fail so rarely"].sample + " " +
39
39
  "so I " +
40
- [ "make others jealous",
40
+ [ "make others jealous",
41
41
  "make too much money",
42
42
  "shift too many paradigms",
43
43
  "innovate too hard"].sample + "."
@@ -61,6 +61,14 @@ module JobInterview
61
61
  ].sample + thing + "."
62
62
  end
63
63
 
64
+ def what_interest
65
+ "I have a special interest in " +
66
+ ["scalable ", "modular ", "distributed "].sample +
67
+ ["mobile ", "social ", "global ", "local "].sample +
68
+ ["business ", "consumer ", "startup ", "enterprise "].sample +
69
+ ["applications.", "frameworks.", "platforms.", "services."].sample
70
+ end
71
+
64
72
  def p_equals_np
65
73
  [
66
74
  "If it does, we can kiss encryption goodbye.",
@@ -10,6 +10,10 @@ module FibonacciSpec
10
10
  @answer.fib(10, :iterative).should == [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
11
11
  end
12
12
 
13
+ it "should return the fibinacci sequence in matrix mode" do
14
+ @answer.fib(10, :matrix).should == [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
15
+ end
16
+
13
17
  it "should return the fibinacci sequence in recursive mode" do
14
18
  @answer.fib(10).should == [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
15
19
  end
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ module HelloWorldSpec
4
+
5
+ describe "When called" do
6
+ before(:each) do
7
+ @answer = JobInterview::Answer.new
8
+ end
9
+
10
+ it "should print 'Hello, World!'" do
11
+ @answer.hello_world.should == "Hello, World!"
12
+ end
13
+
14
+ end
15
+
16
+ end
@@ -0,0 +1,32 @@
1
+ require "spec_helper.rb"
2
+ module QuestionsSpec
3
+ include JobInterview::Questions
4
+
5
+ class Dummy
6
+ end
7
+
8
+ describe "When called" do
9
+ before(:each) do
10
+ @dummy = Dummy.new
11
+ @dummy.extend(JobInterview::Questions)
12
+ end
13
+
14
+ def is_correct_answer(type, answer)
15
+ if answer.respond_to? :wrong
16
+ return false
17
+ else
18
+ return true
19
+ end
20
+ end
21
+
22
+ %W[in_5_years leaving_current manhole_cover greatest_weakness why_here p_equals_np what_interest].each do |m|
23
+ it "should return the right answer for #{m}" do
24
+ answer = @dummy.send(m)
25
+ is_correct_answer(m, answer).should be_true
26
+ end
27
+
28
+ end
29
+ end
30
+
31
+
32
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: job_interview
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-04-24 00:00:00.000000000 Z
13
+ date: 2012-05-01 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: faker
17
- requirement: &2152357260 !ruby/object:Gem::Requirement
17
+ requirement: &2160569960 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ~>
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: 0.9.5
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *2152357260
25
+ version_requirements: *2160569960
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: rspec
28
- requirement: &2152356380 !ruby/object:Gem::Requirement
28
+ requirement: &2160569320 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,7 +33,18 @@ dependencies:
33
33
  version: 2.9.0
34
34
  type: :development
35
35
  prerelease: false
36
- version_requirements: *2152356380
36
+ version_requirements: *2160569320
37
+ - !ruby/object:Gem::Dependency
38
+ name: rake
39
+ requirement: &2160568840 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ~>
43
+ - !ruby/object:Gem::Version
44
+ version: 0.9.2
45
+ type: :development
46
+ prerelease: false
47
+ version_requirements: *2160568840
37
48
  description: Programmer job interview answers, packaged for your convenience. Fibonacci,
38
49
  FizzBuzz, and more! A project from BohConf 2012.
39
50
  email:
@@ -53,7 +64,9 @@ files:
53
64
  - lib/job_interview/quine.rb
54
65
  - spec/fibonacci_spec.rb
55
66
  - spec/fizz_buzz_spec.rb
67
+ - spec/hello_world_spec.rb
56
68
  - spec/primes_spec.rb
69
+ - spec/questions_spec.rb
57
70
  - spec/quine_spec.rb
58
71
  homepage: https://github.com/ruby-jokes/job_interview
59
72
  licenses:
@@ -76,12 +89,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
76
89
  version: '0'
77
90
  requirements: []
78
91
  rubyforge_project:
79
- rubygems_version: 1.8.15
92
+ rubygems_version: 1.8.10
80
93
  signing_key:
81
94
  specification_version: 3
82
95
  summary: Programmer job interview answers, packaged for your convenience
83
96
  test_files:
84
97
  - spec/fibonacci_spec.rb
85
98
  - spec/fizz_buzz_spec.rb
99
+ - spec/hello_world_spec.rb
86
100
  - spec/primes_spec.rb
101
+ - spec/questions_spec.rb
87
102
  - spec/quine_spec.rb