-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCheckIfDigitsEqualNumber.rb
More file actions
executable file
·40 lines (25 loc) · 956 Bytes
/
CheckIfDigitsEqualNumber.rb
File metadata and controls
executable file
·40 lines (25 loc) · 956 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# Description:
# A Narcissistic Number is a number which is the sum of its own digits, each raised to the power of the number of digits.
# For example, take 153 (3 digits):
# 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153
# and 1634 (4 digits):
# 1^4 + 6^4 + 3^4 + 4^4 = 1 + 1296 + 81 + 256 = 1634
# The Challenge:
# Your code must return true or false depending upon whether the given number is a Narcissistic number.
# Error checking for text strings or other invalid inputs is not required, only valid integers will be passed.
# My answer:
def narcissistic?( value )
digits = value.to_s.length
sum = 0
value.to_s.chars.each {|x| sum = sum + (x.to_i ** digits)}
sum == value ? true : false
end
# Test
puts narcissistic?( 5 )
puts "should return true"
puts narcissistic?( 153 )
puts "should return true"
# The best answer :
def narcissistic?( value )
value == value.to_s.chars.map { |x| x.to_i**value.to_s.size }.reduce(:+)
end