Class: SecretNumber::Application
- Inherits:
-
Object
- Object
- SecretNumber::Application
- Defined in:
- lib/secret_number.rb
Instance Method Summary collapse
-
#initialize(argv) ⇒ Application
constructor
A new instance of Application.
- #is_prime(test_number = @number) ⇒ Object
- #is_secret_additive(test_number = @number) ⇒ Object
- #run ⇒ Object
- #secret(integer) ⇒ Object
Constructor Details
#initialize(argv) ⇒ Application
Returns a new instance of Application.
8 9 10 11 12 13 14 15 16 17 |
# File 'lib/secret_number.rb', line 8 def initialize(argv) raise NoArgumentFoundError, 'You must supply an integer as an argument' if argv[0] == nil # Only match digits raise IntegerNotFoundError, 'Sorry, the argument you pass must be an integer' unless argv[0] =~ /\d+/ # Raise if decimal raise IntegerNotFoundError, 'Sorry, the argument you pass must be an integer' unless argv[0].to_i.to_s == argv[0] # Raise if negative raise IntegerNotFoundError, 'Sorry, the argument you pass must be a positive integer' if argv[0].to_i < 0 @number = argv[0].to_i end |
Instance Method Details
#is_prime(test_number = @number) ⇒ Object
29 30 31 32 33 34 35 36 37 |
# File 'lib/secret_number.rb', line 29 def is_prime(test_number = @number) return false if test_number.abs < 2 for number in 2..(test_number - 1) if (test_number % number) == 0 return false end end return true end |
#is_secret_additive(test_number = @number) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/secret_number.rb', line 39 def is_secret_additive(test_number = @number) prime_array = [] counter = 0 while counter < test_number prime_array << counter if is_prime(counter) counter += 1 end prime_array.each do |x| prime_array.each do |y| return false if secret(x + y) != secret(x) + secret(y) end end return true end |
#run ⇒ Object
19 20 21 22 23 24 25 26 27 |
# File 'lib/secret_number.rb', line 19 def run if is_secret_additive puts "The secret function for the integer #{@number} is additive" exit 0 else puts "The secret function for the integer #{@number} is not additive" exit 1 end end |
#secret(integer) ⇒ Object
55 56 57 |
# File 'lib/secret_number.rb', line 55 def secret(integer) integer end |