numb 0.99.0 → 0.109.0

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -35,4 +35,7 @@ rescue LoadError
35
35
  end
36
36
  end
37
37
 
38
+ task :irb do
39
+ exec("irb -r./lib/numb")
40
+ end
38
41
  task :default => :spec
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.99.0
1
+ 0.109.0
@@ -0,0 +1,5 @@
1
+ class Integer
2
+ def amenable?
3
+ self != 4 and modulo(4) < 2
4
+ end
5
+ end
@@ -0,0 +1,8 @@
1
+ # coding: utf-8
2
+ class Integer
3
+ def betrothed?(m)
4
+ σ == m.σ and σ == self.succ + m
5
+ end
6
+ alias :quasi_amicable? :betrothed?
7
+ alias :reduced_amicable? :betrothed?
8
+ end
data/lib/numb/blum.rb ADDED
@@ -0,0 +1,6 @@
1
+ class Integer
2
+ def blum?
3
+ return false unless prime_factors.size == 2
4
+ prime_factors.uniq.size == 2 and prime_factors.all?{|p| p.modulo(4) == 3}
5
+ end
6
+ end
@@ -0,0 +1,5 @@
1
+ class Integer
2
+ def euclid?
3
+ (self - 1).primorial?
4
+ end
5
+ end
data/lib/numb/giuga.rb ADDED
@@ -0,0 +1,7 @@
1
+ class Integer
2
+ def giuga?
3
+ composite? and prime_factors.uniq.all? do |p|
4
+ ((self / p) - 1).divides?(p)
5
+ end
6
+ end
7
+ end
data/lib/numb/iban.rb ADDED
@@ -0,0 +1,6 @@
1
+ class Integer
2
+ def iban?
3
+ not words.include?('i')
4
+ end
5
+ alias :blind? :iban?
6
+ end
@@ -0,0 +1,15 @@
1
+ class Integer
2
+ def palindrome?
3
+ to_s.reverse.to_i == self
4
+ end
5
+
6
+ def lychrel?
7
+ n = self
8
+ # This limit is as arbitrary as it looks
9
+ 100.times do
10
+ return false if n.palindrome?
11
+ n += n.to_s.reverse.to_i
12
+ end
13
+ true
14
+ end
15
+ end
data/lib/numb/oban.rb ADDED
@@ -0,0 +1,5 @@
1
+ class Integer
2
+ def oban?
3
+ not words.include?(?o)
4
+ end
5
+ end
@@ -17,10 +17,6 @@ class Integer
17
17
  def primorial
18
18
  return nil if self < 1
19
19
  return 1 if self == 1
20
- if prime?
21
- self * (self - 1).primorial
22
- else
23
- (self - 1).primorial
24
- end
20
+ (prime? ? self : prev_prime).downto(2).select(&:prime?).reduce(:*)
25
21
  end
26
22
  end
@@ -0,0 +1,10 @@
1
+ class String
2
+ def palindrome?; self == reverse; end
3
+ end
4
+
5
+ class Integer
6
+ def strictly_non_palindromic?
7
+ return true if (0..4).include?(self) or self == 6
8
+ prime? and (2..(Math.sqrt(self).floor)).none?{|base| base(base).palindrome?}
9
+ end
10
+ end
data/lib/numb/uban.rb ADDED
@@ -0,0 +1,5 @@
1
+ class Integer
2
+ def uban?
3
+ not words.include?(?u)
4
+ end
5
+ end
@@ -0,0 +1,20 @@
1
+ describe Integer, "#amenable?" do
2
+ # A100832
3
+ @seq = [1,5,8,9,12,13,16,17,20,21,24,25,28,29,32,33,36,
4
+ 37,40,41,44,45,48,49,52,53,56,57,60,61,64,65,68,
5
+ 69,72,73,76,77,80,81,84,85,88,89,92,93,96,97,100,
6
+ 101,104,105,108,109,112,113,116,117,120,121,124,
7
+ 125,128,129,132]
8
+
9
+ @seq.each do |n|
10
+ it "returns true for amenable number #{n}" do
11
+ n.should be_amenable
12
+ end
13
+ end
14
+
15
+ @seq.to_seq.invert.each do |n|
16
+ it "returns false for non-amenable number #{n}" do
17
+ n.should_not be_amenable
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,58 @@
1
+ describe Integer, "#betrothed?" do
2
+ # A005276, augmented with http://djm.cc/reduced.fmtlist
3
+ @seq = [[48, 75],
4
+ [140, 195],
5
+ [1050, 1925],
6
+ [1575, 1648],
7
+ [2024, 2295],
8
+ [5775, 6128],
9
+ [8892, 16587],
10
+ [9504, 20735],
11
+ [62744, 75495],
12
+ [186615, 206504],
13
+ [196664, 219975],
14
+ [199760, 309135],
15
+ [266000, 507759],
16
+ [312620, 549219],
17
+ [526575, 544784],
18
+ [573560, 817479],
19
+ [587460, 1057595],
20
+ [1000824, 1902215],
21
+ [1081184, 1331967],
22
+ [1139144, 1159095],
23
+ [1140020, 1763019],
24
+ [1173704, 1341495],
25
+ [1208504, 1348935],
26
+ [1233056, 1524831],
27
+ [1236536, 1459143],
28
+ [1279950, 2576945],
29
+ [1921185, 2226014],
30
+ [2036420, 2681019],
31
+ [2102750, 2142945],
32
+ [2140215, 2421704],
33
+ ]
34
+
35
+ @seq.each do |n, m|
36
+ it "returns true for betrothed pair #{n}, #{m}" do
37
+ n.should be_betrothed(m)
38
+ m.should be_betrothed(n)
39
+ end
40
+ end
41
+
42
+ @seq.each do |n, m|
43
+ n -= 1
44
+ it "returns false for non-betrothed pair #{n}, #{m}" do
45
+ n.should_not be_betrothed(m)
46
+ m.should_not be_betrothed(n)
47
+ end
48
+ end
49
+
50
+ 10.times do
51
+ n, m = 2.times.map{ Random.new.rand(@seq.last.max) }
52
+ redo if @seq.include?([n, m])
53
+ it "returns false for non-betrothed pair #{n}, #{m}" do
54
+ n.should_not be_betrothed(m)
55
+ m.should_not be_betrothed(n)
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,20 @@
1
+ describe Integer, "#blum?" do
2
+ # A016105
3
+ @seq = [21,33,57,69,77,93,129,133,141,161,177,201,209,
4
+ 213,217,237,249,253,301,309,321,329,341,381,393,
5
+ 413,417,437,453,469,473,489,497,501,517,537,553,
6
+ 573,581,589,597,633,649,669,681,713,717,721,737,
7
+ 749,753,781,789]
8
+
9
+ @seq.each do |n|
10
+ it "returns true for Blum integer #{n}" do
11
+ n.should be_blum
12
+ end
13
+ end
14
+
15
+ @seq.to_seq.invert.each do |n|
16
+ it "returns false for non-Blum integer #{n}" do
17
+ n.should_not be_blum
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ describe Integer, "#euclid?" do
2
+ # A006862
3
+ @seq = [2,3,7,31,211,2311,30031,510511,9699691,223092871,
4
+ 6469693231,200560490131,7420738134811,
5
+ 304250263527211,13082761331670031,
6
+ 614889782588491411,32589158477190044731,
7
+ 1922760350154212639071]
8
+
9
+ @seq.each do |n|
10
+ it "returns true for Euclid number #{n}" do
11
+ n.should be_euclid
12
+ end
13
+ end
14
+
15
+ @seq.to_seq.invert.first(100).each do |n|
16
+ it "returns false for Euclid number #{n}" do
17
+ n.should_not be_euclid
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ describe Integer, "#giuga?" do
2
+ # A007850
3
+ @seq = [30,858,1722,66198,2214408306,24423128562,
4
+ 432749205173838,14737133470010574,
5
+ 550843391309130318,244197000982499715087866346,
6
+ 554079914617070801288578559178,
7
+ 1910667181420507984555759916338506].first(6)
8
+
9
+ @seq.each do |n|
10
+ it "returns true for Giuga number #{n}" do
11
+ n.should be_giuga
12
+ end
13
+ end
14
+
15
+ @seq.to_seq.invert.sample(10).each do |n|
16
+ it "returns false for non-Giuga number #{n}" do
17
+ n.should_not be_giuga
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ describe Integer, "#iban?" do
2
+ # A089589
3
+ @seq = [0,1,2,3,4,7,10,11,12,14,17,20,21,22,23,24,27,40,
4
+ 41,42,43,44,47,70,71,72,73,74,77,100,101,102,103,
5
+ 104,107,110,111,112,114,117,120,121,122,123,124,
6
+ 127,140,141,142,143,144,147,170,171,172,173,174,
7
+ 177,200,201]
8
+
9
+ @seq.each do |n|
10
+ it "returns true for iban number #{n}" do
11
+ n.should be_iban
12
+ end
13
+ end
14
+
15
+ @seq.to_seq.invert.sample(100).each do |n|
16
+ it "returns false for non-iban number #{n}" do
17
+ n.should_not be_iban
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ describe Integer, "#lychrel?" do
2
+ # A023108
3
+ @seq = [196,295,394,493,592,689,691,788,790,879,887,978,
4
+ 986,1495,1497,1585,1587,1675,1677,1765,1767,1855,
5
+ 1857,1945,1947,1997,2494,2496,2584,2586,2674,2676,
6
+ 2764,2766,2854,2856,2944,2946,2996,3493,3495,3583,
7
+ 3585,3673,3675]
8
+
9
+ @seq.each do |n|
10
+ it "returns true for Lychrel number #{n}" do
11
+ n.should be_lychrel
12
+ end
13
+ end
14
+
15
+ @seq.to_seq.invert.sample(100).each do |n|
16
+ it "returns false for non-Lychrel number #{n}" do
17
+ n.should_not be_lychrel
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ describe Integer, "#oban?" do
2
+ # A008521
3
+ @seq = [3,5,6,7,8,9,10,11,12,13,15,16,17,18,19,20,23,25,
4
+ 26,27,28,29,30,33,35,36,37,38,39,50,53,55,56,57,
5
+ 58,59,60,63,65,66,67,68,69,70,73,75,76,77,78,79,
6
+ 80,83,85,86,87,88,89,90,93,95,96,97,98,99,300,303,
7
+ 305,306,307]
8
+
9
+ @seq.each do |n|
10
+ it "returns true for oban number #{n}" do
11
+ n.should be_oban
12
+ end
13
+ end
14
+
15
+ @seq.to_seq.invert.sample(100).each do |n|
16
+ it "returns false for non-oban number #{n}" do
17
+ n.should_not be_oban
18
+ end
19
+ end
20
+ end
@@ -22,7 +22,7 @@ describe Integer, "#primorial?" do
22
22
  end
23
23
  end
24
24
 
25
- ((1..PRIMORIAL.last).first(20) - PRIMORIAL).uniq.each do |n|
25
+ PRIMORIAL.to_seq.invert.first(20).each do |n|
26
26
  it "should return false for non-primorial number #{n}" do
27
27
  n.should_not be_primorial
28
28
  end
@@ -0,0 +1,20 @@
1
+ describe Integer, "#strictly_non_palindromic?" do
2
+ # A016038
3
+ @seq = [0,1,2,3,4,6,11,19,47,53,79,103,137,139,149,163,
4
+ 167,179,223,263,269,283,293,311,317,347,359,367,
5
+ 389,439,491,563,569,593,607,659,739,827,853,877,
6
+ 977,983,997,1019,1049,1061,1187,1213,1237,1367,
7
+ 1433,1439,1447,1459]
8
+
9
+ @seq.each do |n|
10
+ it "returns true for strictly-non-palindromic number #{n}" do
11
+ n.should be_strictly_non_palindromic
12
+ end
13
+ end
14
+
15
+ @seq.to_seq.invert.each do |n|
16
+ it "returns false for non-strictly-non-palindromic number #{n}" do
17
+ n.should_not be_strictly_non_palindromic
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ describe Integer, "#uban?" do
2
+ # A089590
3
+ @seq = [1,2,3,5,6,7,8,9,10,11,12,13,15,16,17,18,19,20,21,
4
+ 22,23,25,26,27,28,29,30,31,32,33,35,36,37,38,39,
5
+ 40,41,42,43,45,46,47,48,49,50,51,52,53,55,56,57,
6
+ 58,59,60,61,62,63,65,66,67,68,69,70,71,72,73,75,
7
+ 76,77,78,79]
8
+
9
+ @seq.each do |n|
10
+ it "returns true for uban number #{n}" do
11
+ n.should be_uban
12
+ end
13
+ end
14
+
15
+ @seq.to_seq.invert.sample(100).each do |n|
16
+ it "returns false for non-uban number #{n}" do
17
+ n.should_not be_uban
18
+ end
19
+ end
20
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: numb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.99.0
4
+ version: 0.109.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Run Paint Run Run
@@ -46,6 +46,7 @@ files:
46
46
  - lib/numb/aliquot_sequence.rb
47
47
  - lib/numb/almost_perfect.rb
48
48
  - lib/numb/almost_prime.rb
49
+ - lib/numb/amenable.rb
49
50
  - lib/numb/amicable.rb
50
51
  - lib/numb/apocalyptic.rb
51
52
  - lib/numb/aspiring.rb
@@ -53,8 +54,10 @@ files:
53
54
  - lib/numb/automorphic.rb
54
55
  - lib/numb/balanced_prime.rb
55
56
  - lib/numb/base.rb
57
+ - lib/numb/betrothed.rb
56
58
  - lib/numb/binomial.rb
57
59
  - lib/numb/biquadratic.rb
60
+ - lib/numb/blum.rb
58
61
  - lib/numb/breeder.rb
59
62
  - lib/numb/brown.rb
60
63
  - lib/numb/carmichael.rb
@@ -78,6 +81,7 @@ files:
78
81
  - lib/numb/economical.rb
79
82
  - lib/numb/emrip.rb
80
83
  - lib/numb/equidigital.rb
84
+ - lib/numb/euclid.rb
81
85
  - lib/numb/evil.rb
82
86
  - lib/numb/extravagant.rb
83
87
  - lib/numb/factorial.rb
@@ -86,6 +90,7 @@ files:
86
90
  - lib/numb/fibonacci.rb
87
91
  - lib/numb/friendly.rb
88
92
  - lib/numb/frugal.rb
93
+ - lib/numb/giuga.rb
89
94
  - lib/numb/goldbach.rb
90
95
  - lib/numb/hamming.rb
91
96
  - lib/numb/happy.rb
@@ -96,6 +101,7 @@ files:
96
101
  - lib/numb/highly_composite.rb
97
102
  - lib/numb/hilbert.rb
98
103
  - lib/numb/hyperperfect.rb
104
+ - lib/numb/iban.rb
99
105
  - lib/numb/idoneal.rb
100
106
  - lib/numb/impolite.rb
101
107
  - lib/numb/integer_p.rb
@@ -110,6 +116,7 @@ files:
110
116
  - lib/numb/leyland.rb
111
117
  - lib/numb/lucas.rb
112
118
  - lib/numb/lucas_carmichael.rb
119
+ - lib/numb/lychrel.rb
113
120
  - lib/numb/mersenne_prime.rb
114
121
  - lib/numb/minimal.rb
115
122
  - lib/numb/mms_pair.rb
@@ -123,6 +130,7 @@ files:
123
130
  - lib/numb/nonhypotenuse.rb
124
131
  - lib/numb/nth_prime.rb
125
132
  - lib/numb/number_of_divisors.rb
133
+ - lib/numb/oban.rb
126
134
  - lib/numb/octagonal.rb
127
135
  - lib/numb/odious.rb
128
136
  - lib/numb/ordinal.rb
@@ -165,6 +173,7 @@ files:
165
173
  - lib/numb/square_free.rb
166
174
  - lib/numb/square_triangular.rb
167
175
  - lib/numb/squared_triangular.rb
176
+ - lib/numb/strictly_non_palindromic.rb
168
177
  - "lib/numb/st\xC3\xB8rmer.rb"
169
178
  - lib/numb/sublime.rb
170
179
  - lib/numb/sum_of_squares.rb
@@ -176,6 +185,7 @@ files:
176
185
  - lib/numb/triangular.rb
177
186
  - lib/numb/trimorphic.rb
178
187
  - lib/numb/twin_prime.rb
188
+ - lib/numb/uban.rb
179
189
  - lib/numb/undulating.rb
180
190
  - lib/numb/unhappy.rb
181
191
  - lib/numb/unitary_amicable.rb
@@ -197,6 +207,7 @@ files:
197
207
  - spec/numb/achilles_spec.rb
198
208
  - spec/numb/almost_perfect_spec.rb
199
209
  - spec/numb/almost_prime_spec.rb
210
+ - spec/numb/amenable_spec.rb
200
211
  - spec/numb/amicable_spec.rb
201
212
  - spec/numb/apocalyptic_spec.rb
202
213
  - spec/numb/aspiring_spec.rb
@@ -204,8 +215,10 @@ files:
204
215
  - spec/numb/automorphic_spec.rb
205
216
  - spec/numb/balanced_prime_spec.rb
206
217
  - spec/numb/base_spec.rb
218
+ - spec/numb/betrothed_spec.rb
207
219
  - spec/numb/binomial_spec.rb
208
220
  - spec/numb/biquadratic_spec.rb
221
+ - spec/numb/blum_spec.rb
209
222
  - spec/numb/breeder_spec.rb
210
223
  - spec/numb/brown_spec.rb
211
224
  - spec/numb/carmichael_spec.rb
@@ -230,6 +243,7 @@ files:
230
243
  - spec/numb/economical_spec.rb
231
244
  - spec/numb/emrip_spec.rb
232
245
  - spec/numb/equidigital_spec.rb
246
+ - spec/numb/euclid_spec.rb
233
247
  - spec/numb/evil_spec.rb
234
248
  - spec/numb/extravagant_spec.rb
235
249
  - spec/numb/factorial_spec.rb
@@ -238,6 +252,7 @@ files:
238
252
  - spec/numb/fibonacci_spec.rb
239
253
  - spec/numb/friendly_spec.rb
240
254
  - spec/numb/frugal_spec.rb
255
+ - spec/numb/giuga_spec.rb
241
256
  - spec/numb/goldbach_spec.rb
242
257
  - spec/numb/hamming_spec.rb
243
258
  - spec/numb/happy_spec.rb
@@ -248,6 +263,7 @@ files:
248
263
  - spec/numb/highly_composite_spec.rb
249
264
  - spec/numb/hilbert_spec.rb
250
265
  - spec/numb/hyperperfect_spec.rb
266
+ - spec/numb/iban_spec.rb
251
267
  - spec/numb/idoneal_spec.rb
252
268
  - spec/numb/integer_p_spec.rb
253
269
  - spec/numb/interprime_spec.rb
@@ -261,6 +277,7 @@ files:
261
277
  - spec/numb/leyland_spec.rb
262
278
  - spec/numb/lucas_carmichael_spec.rb
263
279
  - spec/numb/lucas_spec.rb
280
+ - spec/numb/lychrel_spec.rb
264
281
  - spec/numb/maris_mcgwire_sosa_pair_spec.rb
265
282
  - spec/numb/mersenne_prime_spec.rb
266
283
  - spec/numb/minimal_spec.rb
@@ -273,6 +290,7 @@ files:
273
290
  - spec/numb/nth_prime_spec.rb
274
291
  - spec/numb/number_of_distinct_prime_factors_spec.rb
275
292
  - spec/numb/number_of_prime_factors_spec.rb
293
+ - spec/numb/oban_spec.rb
276
294
  - spec/numb/octagonal_spec.rb
277
295
  - spec/numb/odious_spec.rb
278
296
  - spec/numb/ordinal_spec.rb
@@ -316,6 +334,7 @@ files:
316
334
  - spec/numb/square_spec.rb
317
335
  - spec/numb/square_triangular_spec.rb
318
336
  - spec/numb/squared_triangular_spec.rb
337
+ - spec/numb/strictly_non_palindromic_spec.rb
319
338
  - "spec/numb/st\xC3\xB8rmer_spec.rb"
320
339
  - spec/numb/sublime_spec.rb
321
340
  - spec/numb/sum_of_squares_spec.rb
@@ -327,6 +346,7 @@ files:
327
346
  - spec/numb/triangular_spec.rb
328
347
  - spec/numb/trimorphic_spec.rb
329
348
  - spec/numb/twin_prime_spec.rb
349
+ - spec/numb/uban_spec.rb
330
350
  - spec/numb/undulating_spec.rb
331
351
  - spec/numb/unhappy_spec.rb
332
352
  - spec/numb/unitary_amicable_spec.rb
@@ -381,6 +401,8 @@ test_files:
381
401
  - spec/numb/unitary_divisor_spec.rb
382
402
  - spec/numb/primitive_pseudoperfect_spec.rb
383
403
  - spec/numb/polydivisible_spec.rb
404
+ - spec/numb/strictly_non_palindromic_spec.rb
405
+ - spec/numb/iban_spec.rb
384
406
  - spec/numb/equidigital_spec.rb
385
407
  - spec/numb/primorial_spec.rb
386
408
  - spec/numb/superabundant_spec.rb
@@ -406,6 +428,7 @@ test_files:
406
428
  - spec/numb/carmichael_spec.rb
407
429
  - spec/numb/woodall_spec.rb
408
430
  - spec/numb/abundancy_spec.rb
431
+ - spec/numb/giuga_spec.rb
409
432
  - spec/numb/polite_spec.rb
410
433
  - spec/numb/unitary_amicable_spec.rb
411
434
  - spec/numb/squared_triangular_spec.rb
@@ -416,6 +439,7 @@ test_files:
416
439
  - spec/numb/jacobsthal_lucas_spec.rb
417
440
  - spec/numb/aban_spec.rb
418
441
  - spec/numb/hyperperfect_spec.rb
442
+ - spec/numb/uban_spec.rb
419
443
  - spec/numb/zeisel_spec.rb
420
444
  - spec/numb/smooth_spec.rb
421
445
  - spec/numb/d_spec.rb
@@ -436,6 +460,7 @@ test_files:
436
460
  - spec/numb/safe_prime_spec.rb
437
461
  - spec/numb/sublime_spec.rb
438
462
  - spec/numb/refactorable_spec.rb
463
+ - spec/numb/betrothed_spec.rb
439
464
  - spec/numb/smith_spec.rb
440
465
  - spec/numb/unusual_spec.rb
441
466
  - spec/numb/octagonal_spec.rb
@@ -466,10 +491,12 @@ test_files:
466
491
  - spec/numb/frugal_spec.rb
467
492
  - spec/numb/divides_spec.rb
468
493
  - spec/numb/odious_spec.rb
494
+ - spec/numb/euclid_spec.rb
469
495
  - spec/numb/semiprime_spec.rb
470
496
  - spec/numb/deficient_spec.rb
471
497
  - spec/numb/almost_perfect_spec.rb
472
498
  - spec/numb/amicable_spec.rb
499
+ - spec/numb/amenable_spec.rb
473
500
  - spec/numb/happy_spec.rb
474
501
  - spec/numb/twin_prime_spec.rb
475
502
  - spec/numb/hexagonal_spec.rb
@@ -479,6 +506,7 @@ test_files:
479
506
  - spec/numb/integer_p_spec.rb
480
507
  - spec/numb/semi_perfect_spec.rb
481
508
  - spec/numb/pentagonal_spec.rb
509
+ - spec/numb/blum_spec.rb
482
510
  - spec/numb/smarandache_wellin_spec.rb
483
511
  - spec/numb/maris_mcgwire_sosa_pair_spec.rb
484
512
  - spec/numb/core_spec.rb
@@ -504,6 +532,7 @@ test_files:
504
532
  - spec/numb/factorion_spec.rb
505
533
  - spec/numb/undulating_spec.rb
506
534
  - spec/numb/extravagant_spec.rb
535
+ - spec/numb/lychrel_spec.rb
507
536
  - spec/numb/self_descriptive_spec.rb
508
537
  - spec/numb/decagonal_spec.rb
509
538
  - spec/numb/apocalyptic_spec.rb
@@ -513,6 +542,7 @@ test_files:
513
542
  - spec/numb/keith_spec.rb
514
543
  - spec/numb/narcissistic_spec.rb
515
544
  - spec/numb/myriagonal_spec.rb
545
+ - spec/numb/oban_spec.rb
516
546
  - spec/numb/achilles_spec.rb
517
547
  - spec/numb/coprime_spec.rb
518
548
  - spec/numb/almost_prime_spec.rb