numb 0.99.0 → 0.109.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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