Zuletzt aktiv 1 month ago

sixtyfive's Avatar sixtyfive hat die Gist bearbeitet 1 month ago. Zu Änderung gehen

1 file changed, 5 insertions, 1 deletion

armstrong.rb

@@ -94,6 +94,10 @@ class Integer
94 94 digits = self.to_s.chars.map(&:to_i)
95 95 self == digits.map{_1**digits.count}.inject(&:+)
96 96 end
97 +
98 + def skippable?
99 + self.to_s.size > 31 && self.to_s.chars.uniq.size != 10
100 + end
97 101 end
98 102
99 103 def test
@@ -104,4 +108,4 @@ def test
104 108 end
105 109 end
106 110
107 - test
111 + (1..115132219018763992565095597973971522401).each{|i| next if i.skippable?; puts i if i.is_armstrong?}

sixtyfive's Avatar sixtyfive hat die Gist bearbeitet 1 month ago. Zu Änderung gehen

1 file changed, 107 insertions

armstrong.rb(Datei erstellt)

@@ -0,0 +1,107 @@
1 + KNOWN_ARMSTRONG = [
2 + 1,
3 + 2,
4 + 3,
5 + 4,
6 + 5,
7 + 6,
8 + 7,
9 + 8,
10 + 9,
11 + 153,
12 + 370,
13 + 371,
14 + 407,
15 + 1634,
16 + 8208,
17 + 9474,
18 + 54748,
19 + 92727,
20 + 93084,
21 + 548834,
22 + 1741725,
23 + 4210818,
24 + 9800817,
25 + 9926315,
26 + 24678050,
27 + 24678051,
28 + 88593477,
29 + 146511208,
30 + 472335975,
31 + 534494836,
32 + 912985153,
33 + 4679307774,
34 + 32164049650,
35 + 32164049651,
36 + 40028394225,
37 + 42678290603,
38 + 44708635679,
39 + 49388550606,
40 + 82693916578,
41 + 94204591914,
42 + 28116440335967,
43 + 4338281769391370,
44 + 4338281769391371,
45 + 21897142587612075,
46 + 35641594208964132,
47 + 35875699062250035,
48 + 1517841543307505039,
49 + 3289582984443187032,
50 + 4498128791164624869,
51 + 4929273885928088826,
52 + 63105425988599693916,
53 + 128468643043731391252,
54 + 449177399146038697307,
55 + 21887696841122916288858,
56 + 27879694893054074471405,
57 + 27907865009977052567814,
58 + 28361281321319229463398,
59 + 35452590104031691935943,
60 + 174088005938065293023722,
61 + 188451485447897896036875,
62 + 239313664430041569350093,
63 + 1550475334214501539088894,
64 + 1553242162893771850669378,
65 + 3706907995955475988644380,
66 + 3706907995955475988644381,
67 + 4422095118095899619457938,
68 + 121204998563613372405438066,
69 + 121270696006801314328439376,
70 + 128851796696487777842012787,
71 + 174650464499531377631639254,
72 + 177265453171792792366489765,
73 + 14607640612971980372614873089,
74 + 19008174136254279995012734740,
75 + 19008174136254279995012734741,
76 + 23866716435523975980390369295,
77 + 1145037275765491025924292050346,
78 + 1927890457142960697580636236639,
79 + 2309092682616190307509695338915,
80 + 17333509997782249308725103962772,
81 + 186709961001538790100634132976990,
82 + 186709961001538790100634132976991,
83 + 1122763285329372541592822900204593,
84 + 12639369517103790328947807201478392,
85 + 12679937780272278566303885594196922,
86 + 1219167219625434121569735803609966019,
87 + 12815792078366059955099770545296129367,
88 + 115132219018763992565095597973971522400,
89 + 115132219018763992565095597973971522401
90 + ]
91 +
92 + class Integer
93 + def is_armstrong?
94 + digits = self.to_s.chars.map(&:to_i)
95 + self == digits.map{_1**digits.count}.inject(&:+)
96 + end
97 + end
98 +
99 + def test
100 + numbers = KNOWN_ARMSTRONG
101 + KNOWN_ARMSTRONG.count.times{numbers << rand(KNOWN_ARMSTRONG.last)}
102 + numbers.sort.each do |x|
103 + puts "#{x} is #{'not ' unless x.is_armstrong?}an Armstrong number"
104 + end
105 + end
106 +
107 + test
Neuer Älter