File tree Expand file tree Collapse file tree 1 file changed +51
-0
lines changed Expand file tree Collapse file tree 1 file changed +51
-0
lines changed Original file line number Diff line number Diff line change
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
+
You can’t perform that action at this time.
0 commit comments