Skip to content

Commit a429c6d

Browse files
committed
Solve check if number is colourful problem.
1 parent dd9686d commit a429c6d

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
=begin
2+
Objective: Given a number, find out whether its colorful or not.
3+
4+
Colorful Number: When in a given number, product of every digit of a sub-sequence are different. That number is called Colorful Number. See Example
5+
6+
Example:
7+
8+
Given Number : 3245
9+
Output : Colorful
10+
Number 3245 can be broken into parts like 3 2 4 5 32 24 45 324 245.
11+
this number is a colorful number, since product of every digit of a sub-sequence are different.
12+
That is, 3 2 4 5 (3*2)=6 (2*4)=8 (4*5)=20, (3*2*4)= 24 (2*4*5)= 40
13+
14+
Given Number : 326
15+
Output : Not Colorful.
16+
326 is not a colorful number as it generates 3 2 6 (3*2)=6 (2*6)=12.
17+
ref: https://algorithms.tutorialhorizon.com/colorful-numbers/
18+
=end
19+
20+
input = 3245
21+
22+
def power_set(number)
23+
numbers = number.to_s.split('')
24+
power_set = []
25+
for i in (0...numbers.size)
26+
for j in (i...numbers.size)
27+
power_set.push(numbers[i..j])
28+
end
29+
end
30+
return power_set
31+
end
32+
33+
def colorful_number?(number)
34+
power_set = power_set(number)
35+
digits = {}
36+
power_set.each do |set|
37+
digit = set.inject(1){|prod, num| prod * num.to_i}
38+
if(digits[digit])
39+
return 'No'
40+
else
41+
digits[digit] = digit
42+
end
43+
end
44+
return 'Yes'
45+
end
46+
47+
p "#{3245} is colourful?"
48+
p colorful_number?(3245)
49+
p "#{326} is colourful?"
50+
p colorful_number?(326)
51+

0 commit comments

Comments
 (0)