numb 0.77.0 → 0.84.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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.77.0
1
+ 0.84.0
@@ -0,0 +1,13 @@
1
+ # coding: utf-8
2
+ class Integer
3
+ def aliquot_sequence(max_iterations=(self > 100 ? 10 : Math.sqrt(self)),
4
+ summatory_function=->(n){ n.aliquot_sum })
5
+ sequence = [self]
6
+ max_iterations.floor.times do |limit|
7
+ sequence << summatory_function[sequence.last]
8
+ break if sequence[0..-2].include?(sequence.last)
9
+ return sequence << (1/0.0) if limit.succ == max_iterations
10
+ end
11
+ sequence
12
+ end
13
+ end
data/lib/numb/aspiring.rb CHANGED
@@ -1,16 +1,4 @@
1
1
  class Integer
2
- def aliquot_sequence(max_iterations=(self > 100 ? 10 : Math.sqrt(self)))
3
- sequence = [self]
4
- max_iterations.floor.times do |limit|
5
- divisors = sequence.last.proper_divisors
6
- break if divisors.empty?
7
- sequence << divisors.reduce(:+)
8
- break if sequence[0..-2].include?(sequence.last)
9
- return sequence << (1/0.0) if limit.succ == max_iterations
10
- end
11
- sequence
12
- end
13
-
14
2
  def aspiring?(max_iterations=10)
15
3
  return false if perfect?
16
4
  (last = aliquot_sequence(max_iterations).last).to_f.finite? ?
data/lib/numb/evil.rb ADDED
@@ -0,0 +1,5 @@
1
+ class Integer
2
+ def evil?
3
+ not odious?
4
+ end
5
+ end
@@ -3,4 +3,15 @@ class Integer
3
3
  return 1 if zero?
4
4
  (1..self).reduce(:*)
5
5
  end
6
+
7
+ def factorial?
8
+ divisors = self.divisors.sort
9
+ divisors.each_with_index do |d, i|
10
+ if divisors[i.succ] == d.succ
11
+ return true if d.factorial == self
12
+ else
13
+ return d.factorial == self
14
+ end
15
+ end
16
+ end
6
17
  end
@@ -0,0 +1,7 @@
1
+ class Integer
2
+ def odious?
3
+ return false unless positive?
4
+ to_s(2).count('1').odd?
5
+ end
6
+ end
7
+
@@ -0,0 +1,6 @@
1
+ class Integer
2
+ def sociable?(t)
3
+ return false unless t >= 3
4
+ aliquot_sequence(t.succ).last == self
5
+ end
6
+ end
@@ -0,0 +1,5 @@
1
+ class Integer
2
+ def sum_of_unitary_divisors
3
+ divisors.select{|d| unitary_divisor?(d)}.reduce(:+) or 0
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class Integer
2
+ def twin_prime?(p)
3
+ [p, self].all?(&:prime?) and p == self + 2
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class Integer
2
+ def unhappy?
3
+ not happy?
4
+ end
5
+ end
@@ -0,0 +1,7 @@
1
+ class Integer
2
+ def unitary_amicable?(n)
3
+ [n + self, sum_of_unitary_divisors].all? do |other|
4
+ other == n.sum_of_unitary_divisors
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ class Integer
2
+ def unitary_sociable?(t)
3
+ return false unless t >= 3
4
+ seq = aliquot_sequence(t.succ, ->(n){ n.sum_of_unitary_divisors - n})
5
+ seq.size - 1 == t and seq.last == self
6
+ end
7
+ end
data/lib/numb.rb CHANGED
@@ -1,29 +1,5 @@
1
1
  # coding: utf-8
2
2
 
3
- libs = %w{abundancy abundant achilles almost_perfect almost_prime amicable
4
- apocalyptic aspiring augmented_amicable automorphic balanced_prime
5
- base binomial biquadratic breeder brown carmichael carol
6
- centered_n_gonal centered_triangular congruum composite coprime
7
- core cototient cube d decagonal deficient dodecagonal dihedral_prime
8
- dudeney economical emrip equidigital extravagant factorial factorion
9
- fermat_pseudoprime fibonacci friendly frugal happy harshad
10
- heptagonal hexagonal highly_composite highly_abundant hilbert
11
- hyperperfect idoneal impolite integer_p interprime
12
- jacobsthal_lucas kaprekar keith knodel k_perfect kynea
13
- leonardo leyland lucas lucas_carmichael mersenne_prime minimal
14
- mms_pair mobius myriagonal narcissistic next_prev_prime n_gonal
15
- nivenmorphic noncototient nth_prime number_of_divisors octagonal
16
- ordinal ore parasitic pentagonal perfect perfect_power polite
17
- polydivisible positive poulet powerful practical prime_count
18
- prime_signature primitive_pseudoperfect primorial pronic proth
19
- quarticfree refactorable repunit rhonda rough self self_descriptive
20
- semiperfect semiprime smarandache_wellin smith smooth
21
- sophie_germain_prime sphenic square square_free sublime
22
- sum_of_squares superabundant superperfect totient triangular
23
- trimorphic undulating unitary_perfect unitary_divisor untouchable
24
- vampire weird wieferich woodall zeisel zerofree
25
- }
26
-
27
3
  class Integer
28
4
  def number_of_distinct_prime_factors
29
5
  prime_factors.uniq.size
@@ -62,6 +38,11 @@ class Integer
62
38
  end
63
39
  alias :σ :sum_of_divisors
64
40
 
41
+ def aliquot_sum
42
+ return 0 if zero?
43
+ σ - self
44
+ end
45
+
65
46
  def digital_root
66
47
  self == 0 ? 0 : 1 + ((self - 1) % 9)
67
48
  end
@@ -83,6 +64,4 @@ end
83
64
 
84
65
  require 'prime'
85
66
 
86
- libs.each do |predicate|
87
- require File.join(File.dirname(__FILE__), "numb/#{predicate}")
88
- end
67
+ Dir.glob(File.dirname(__FILE__) + '/numb/*.rb').each {|file| require file}
data/spec/evil_spec.rb ADDED
@@ -0,0 +1,20 @@
1
+ describe Integer, "#evil?" do
2
+ # A001969
3
+ @seq = [0,3,5,6,9,10,12,15,17,18,20,23,24,27,29,30,33,34,
4
+ 36,39,40,43,45,46,48,51,53,54,57,58,60,63,65,66,
5
+ 68,71,72,75,77,78,80,83,85,86,89,90,92,95,96,99,
6
+ 101,102,105,106,108,111,113,114,116,119,120,123,
7
+ 125,126,129].to_seq
8
+
9
+ @seq.each do |n|
10
+ it "should return true for evil number #{n}" do
11
+ n.should be_evil
12
+ end
13
+ end
14
+
15
+ @seq.invert.each do |n|
16
+ it "should return false for non-evil number #{n}" do
17
+ n.should_not be_evil
18
+ end
19
+ end
20
+ end
@@ -12,3 +12,24 @@ describe Integer, "#factorial" do
12
12
  end
13
13
  end
14
14
  end
15
+
16
+ describe Integer, "#factorial?" do
17
+ # A000142
18
+ @seq = [1,1,2,6,24,120,720,5040,40320,362880,3628800,
19
+ 39916800,479001600,6227020800,87178291200,
20
+ 1307674368000,20922789888000,355687428096000,
21
+ 6402373705728000,121645100408832000,
22
+ 2432902008176640000]
23
+
24
+ @seq.first(10).each do |n|
25
+ it "should return true for factorial #{n}" do
26
+ n.should be_factorial
27
+ end
28
+ end
29
+
30
+ @seq.first(10).to_seq.invert.sample(10).each do |n|
31
+ it "should return false for non-factorial #{n}" do
32
+ n.should_not be_factorial
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,19 @@
1
+ describe Integer, "#odious?" do
2
+ @seq = [1,2,4,7,8,11,13,14,16,19,21,22,25,26,28,31,32,35,
3
+ 37,38,41,42,44,47,49,50,52,55,56,59,61,62,64,67,
4
+ 69,70,73,74,76,79,81,82,84,87,88,91,93,94,97,98,
5
+ 100,103,104,107,109,110,112,115,117,118,121,122,
6
+ 124,127,128].to_seq
7
+
8
+ @seq.each do |n|
9
+ it "returns true for odious number #{n}" do
10
+ n.should be_odious
11
+ end
12
+ end
13
+
14
+ @seq.invert.each do |n|
15
+ it "returns false for non-odious number #{n}" do
16
+ n.should_not be_odious
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,57 @@
1
+ describe Integer, "#sociable?" do
2
+ # A090615
3
+ @seq = {
4
+ 4 => [1264460,2115324,2784580,4938136,7169104,18048976,
5
+ 18656380,28158165,46722700,81128632,174277820,
6
+ 209524210,330003580,498215416,1236402232,
7
+ 1799281330,2387776550,2717495235,2879697304,
8
+ 3705771825,4424606020],
9
+ 5 => [12496],
10
+ # A119478
11
+ 6 => [21548919483,90632826380,1771417411016,
12
+ 3524434872392,4773123705616],
13
+ 8 => [1095447416, 1276254780],
14
+ 9 => [805984760],
15
+ 28 =>[14316],
16
+ }
17
+
18
+ # A000396
19
+ @perfect = [6,28,496,8128,33550336,8589869056,137438691328,
20
+ 2305843008139952128,
21
+ 2658455991569831744654692615953842176,
22
+ 191561942608236107294793378084303638130997321548169216].first(4)
23
+
24
+ @perfect.sample(2).each do |n|
25
+ it "should return false for 1-sociable (perfect) number #{n}" do
26
+ n.sociable?(1).should be_false
27
+ end
28
+ end
29
+
30
+ # A063990
31
+ @amicable = [220,284,1184,1210,2620,2924,5020,5564,6232,6368,
32
+ 10744,10856,12285,14595,17296,18416,63020,66928,
33
+ 66992,67095,69615,71145,76084,79750,87633,88730,
34
+ 100485,122265,122368,123152,124155,139815,141664,
35
+ 142310]
36
+
37
+ @amicable.sample(2).each do |n|
38
+ it "should return false for 2-sociable (amicable) number #{n}" do
39
+ n.sociable?(2).should be_false
40
+ end
41
+ end
42
+
43
+ @seq.each do |t, members|
44
+ next if t >= 6 # Too slow :-(
45
+ members.sample(2).each do |n|
46
+ it "should return true for #{t}-sociable number #{n}" do
47
+ n.sociable?(t).should be_true
48
+ end
49
+ end
50
+
51
+ members.to_seq.invert.sample(2).each do |n|
52
+ it "should return false for non-#{t}-sociable number #{n}" do
53
+ n.sociable?(t).should be_false
54
+ end
55
+ end
56
+ end
57
+ end
data/spec/spec_helper.rb CHANGED
@@ -10,7 +10,10 @@ class Seq
10
10
  include Enumerable
11
11
  attr_accessor :exclude, :include
12
12
  def initialize(*args)
13
- @include = args.first?
13
+ @include = args
14
+ if @include.size == 1 and @include.first.is_a?(Enumerable)
15
+ @include = @include.first
16
+ end
14
17
  @exclude = []
15
18
  end
16
19
 
@@ -22,6 +25,7 @@ class Seq
22
25
  end
23
26
 
24
27
  def invert
28
+ return [] if @include.size < 2
25
29
  Seq.new(self.begin..self.end).tap{|s| s.exclude = @include }
26
30
  end
27
31
 
@@ -0,0 +1,14 @@
1
+ describe Integer, "#sum_of_unitary_divisors" do
2
+ # A034448
3
+ @seq = [1,3,4,5,6,12,8,9,10,18,12,20,14,24,24,17,18,30,
4
+ 20,30,32,36,24,36,26,42,28,40,30,72,32,33,48,54,
5
+ 48,50,38,60,56,54,42,96,44,60,60,72,48,68,50,78,
6
+ 72,70,54,84,72,72,80,90,60,120,62,96,80,65,84,144,
7
+ 68,90,96,144]
8
+
9
+ @seq.to_enum.with_index(1).each do |sum, n|
10
+ it "should return #{sum} for #{n}" do
11
+ n.sum_of_unitary_divisors.should == sum
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,31 @@
1
+ describe Integer, "#twin_prime?" do
2
+ # A001359, A006512
3
+ @seq = [3,5,11,17,29,41,59,71,101,107,137,149,179,191,
4
+ 197,227,239,269,281,311,347,419,431,461,521,569,
5
+ 599,617,641,659,809,821,827,857,881,1019,1031,
6
+ 1049,1061,1091,1151,1229,1277,1289,1301,1319,1427,
7
+ 1451,1481,1487,1607].zip(
8
+ [5,7,13,19,31,43,61,73,103,109,139,151,181,193,
9
+ 199,229,241,271,283,313,349,421,433,463,523,571,
10
+ 601,619,643,661,811,823,829,859,883,1021,1033,
11
+ 1051,1063,1093,1153,1231,1279,1291,1303,1321,1429,
12
+ 1453,1483,1489,1609])
13
+
14
+ @seq.each do |p, q|
15
+ it "should return true for twin-primes #{p} and #{q}" do
16
+ p.twin_prime?(q).should be_true
17
+ end
18
+ end
19
+
20
+ it "returns false for two primes which are not twin" do
21
+ 2.twin_prime?(29).should be_false
22
+ end
23
+
24
+ it "returns false for a prime and a composite" do
25
+ 17.twin_prime?(20).should be_false
26
+ end
27
+
28
+ it "returns false for two composites with a difference of two" do
29
+ 20.twin_prime?(22).should be_false
30
+ end
31
+ end
@@ -0,0 +1,20 @@
1
+ describe Integer, "#unhappy?" do
2
+ # A031177
3
+ @seq = [2,3,4,5,6,8,9,11,12,14,15,16,17,18,20,21,22,24,
4
+ 25,26,27,29,30,33,34,35,36,37,38,39,40,41,42,43,
5
+ 45,46,47,48,50,51,52,53,54,55,56,57,58,59,60,61,
6
+ 62,63,64,65,66,67,69,71,72,73,74,75,76,77,78,80,
7
+ 81,83].to_seq
8
+
9
+ @seq.each do |n|
10
+ it "should return true for unhappy number #{n}" do
11
+ n.should be_unhappy
12
+ end
13
+ end
14
+
15
+ @seq.invert.each do |n|
16
+ it "should return false for happy number #{n}" do
17
+ n.should_not be_unhappy
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,28 @@
1
+ describe Integer, "#unitary_amicable?" do
2
+ # A002952, A002953
3
+ @seq = [114,1140,18018,32130,44772,56430,67158,142310,
4
+ 180180,197340,241110,296010,308220,462330,591030,
5
+ 669900,671580,785148,815100,1004850,1077890,
6
+ 1080150,1156870,1177722,1222650,1281540,1475810,
7
+ 1511930,1571388].zip(
8
+ [126,1260,22302,40446,49308,64530,73962,168730,
9
+ 223020,286500,242730,429750,365700,548550,618570,
10
+ 827700,739620,827652,932100,1241550,1099390,
11
+ 1291050,1292570,1241478,1398150,1621500,1669150,
12
+ 1598470,1654212])
13
+
14
+ @seq.each do |m, n|
15
+ it "should return true for unitary amicable pair (#{m},#{n})" do
16
+ m.unitary_amicable?(n).should be_true
17
+ end
18
+
19
+ it "should return true for unitary amicable pair (#{n},#{m})" do
20
+ n.unitary_amicable?(m).should be_true
21
+ end
22
+
23
+ o, p = n+m, @seq.reject{|pair| pair == [n, m]}.sample.last
24
+ it "should return false for non-unitary amicable pair (#{o},#{p})" do
25
+ o.unitary_amicable?(p).should_not be_true
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,30 @@
1
+ describe Integer, "#unitary_sociable?" do
2
+ # A000173
3
+ @seq = {
4
+ 3 => [30],
5
+ 4 => [263820, 395730, 172459210, 209524210, 384121920, 1799281330,
6
+ 2069510520, 2514290520],
7
+ 5 => [1482],
8
+ 6 => [698130, 341354790, 530946330, 582129630],
9
+ 14 => [2418, 24180, 35238],
10
+ 65 => [473298],
11
+ 25 => [763620],
12
+ 39 => [2212026],
13
+ 26 => [2233554],
14
+ 10 => [525150234, 5251502340],
15
+ 12 => [3344596854]
16
+ }
17
+
18
+ (3..5).map{|_| [_, @seq[_]]}.each do |t, members|
19
+ members.sample(1).each do |n|
20
+ it "should return true for #{t}-unitary-sociable number #{n}" do
21
+ n.unitary_sociable?(t).should be_true
22
+ end
23
+
24
+ m = n - 2
25
+ it "should return false for non-#{t}-unitary-sociable number #{m}" do
26
+ m.unitary_sociable?(t).should be_false
27
+ end
28
+ end
29
+ end
30
+ 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.77.0
4
+ version: 0.84.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Run Paint Run Run
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-21 00:00:00 +00:00
12
+ date: 2010-02-13 00:00:00 +00:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -42,6 +42,7 @@ files:
42
42
  - lib/numb/abundancy.rb
43
43
  - lib/numb/abundant.rb
44
44
  - lib/numb/achilles.rb
45
+ - lib/numb/aliquot_sequence.rb
45
46
  - lib/numb/almost_perfect.rb
46
47
  - lib/numb/almost_prime.rb
47
48
  - lib/numb/amicable.rb
@@ -74,6 +75,7 @@ files:
74
75
  - lib/numb/economical.rb
75
76
  - lib/numb/emrip.rb
76
77
  - lib/numb/equidigital.rb
78
+ - lib/numb/evil.rb
77
79
  - lib/numb/extravagant.rb
78
80
  - lib/numb/factorial.rb
79
81
  - lib/numb/factorion.rb
@@ -116,6 +118,7 @@ files:
116
118
  - lib/numb/nth_prime.rb
117
119
  - lib/numb/number_of_divisors.rb
118
120
  - lib/numb/octagonal.rb
121
+ - lib/numb/odious.rb
119
122
  - lib/numb/ordinal.rb
120
123
  - lib/numb/ore.rb
121
124
  - lib/numb/parasitic.rb
@@ -146,20 +149,26 @@ files:
146
149
  - lib/numb/smarandache_wellin.rb
147
150
  - lib/numb/smith.rb
148
151
  - lib/numb/smooth.rb
152
+ - lib/numb/sociable.rb
149
153
  - lib/numb/sophie_germain_prime.rb
150
154
  - lib/numb/sphenic.rb
151
155
  - lib/numb/square.rb
152
156
  - lib/numb/square_free.rb
153
157
  - lib/numb/sublime.rb
154
158
  - lib/numb/sum_of_squares.rb
159
+ - lib/numb/sum_of_unitary_divisors.rb
155
160
  - lib/numb/superabundant.rb
156
161
  - lib/numb/superperfect.rb
157
162
  - lib/numb/totient.rb
158
163
  - lib/numb/triangular.rb
159
164
  - lib/numb/trimorphic.rb
165
+ - lib/numb/twin_prime.rb
160
166
  - lib/numb/undulating.rb
167
+ - lib/numb/unhappy.rb
168
+ - lib/numb/unitary_amicable.rb
161
169
  - lib/numb/unitary_divisor.rb
162
170
  - lib/numb/unitary_perfect.rb
171
+ - lib/numb/unitary_sociable.rb
163
172
  - lib/numb/untouchable.rb
164
173
  - lib/numb/vampire.rb
165
174
  - lib/numb/weird.rb
@@ -204,6 +213,7 @@ files:
204
213
  - spec/economical_spec.rb
205
214
  - spec/emrip_spec.rb
206
215
  - spec/equidigital_spec.rb
216
+ - spec/evil_spec.rb
207
217
  - spec/extravagant_spec.rb
208
218
  - spec/factorial_spec.rb
209
219
  - spec/factorion_spec.rb
@@ -244,6 +254,7 @@ files:
244
254
  - spec/number_of_distinct_prime_factors_spec.rb
245
255
  - spec/number_of_prime_factors_spec.rb
246
256
  - spec/octagonal_spec.rb
257
+ - spec/odious_spec.rb
247
258
  - spec/ordinal_spec.rb
248
259
  - spec/ore_spec.rb
249
260
  - spec/parasitic_spec.rb
@@ -275,6 +286,7 @@ files:
275
286
  - spec/smarandache_wellin_spec.rb
276
287
  - spec/smith_spec.rb
277
288
  - spec/smooth_spec.rb
289
+ - spec/sociable_spec.rb
278
290
  - spec/sophie_germain_prime_spec.rb
279
291
  - spec/spec_helper.rb
280
292
  - spec/sphenic_spec.rb
@@ -282,14 +294,19 @@ files:
282
294
  - spec/square_spec.rb
283
295
  - spec/sublime_spec.rb
284
296
  - spec/sum_of_squares.rb
297
+ - spec/sum_of_unitary_divisors_spec.rb
285
298
  - spec/superabundant_spec.rb
286
299
  - spec/superperfect_spec.rb
287
300
  - spec/totient_spec.rb
288
301
  - spec/triangular_spec.rb
289
302
  - spec/trimorphic_spec.rb
303
+ - spec/twin_prime_spec.rb
290
304
  - spec/undulating_spec.rb
305
+ - spec/unhappy_spec.rb
306
+ - spec/unitary_amicable_spec.rb
291
307
  - spec/unitary_divisor_spec.rb
292
308
  - spec/unitary_perfect.rb
309
+ - spec/unitary_sociable.rb
293
310
  - spec/untouchable_spec.rb
294
311
  - spec/vampire_spec.rb
295
312
  - spec/weird_spec.rb
@@ -340,6 +357,7 @@ test_files:
340
357
  - spec/equidigital_spec.rb
341
358
  - spec/primorial_spec.rb
342
359
  - spec/superabundant_spec.rb
360
+ - spec/sociable_spec.rb
343
361
  - spec/nivenmorphic_spec.rb
344
362
  - spec/dudeney_spec.rb
345
363
  - spec/centered_triangular_spec.rb
@@ -361,6 +379,7 @@ test_files:
361
379
  - spec/woodall_spec.rb
362
380
  - spec/abundancy_spec.rb
363
381
  - spec/polite_spec.rb
382
+ - spec/unitary_amicable_spec.rb
364
383
  - spec/zerofree_spec.rb
365
384
  - spec/automorphic_spec.rb
366
385
  - spec/minimal_spec.rb
@@ -370,6 +389,7 @@ test_files:
370
389
  - spec/zeisel_spec.rb
371
390
  - spec/smooth_spec.rb
372
391
  - spec/d_spec.rb
392
+ - spec/unitary_sociable.rb
373
393
  - spec/spec_helper.rb
374
394
  - spec/heptagonal_spec.rb
375
395
  - spec/kynea_spec.rb
@@ -391,6 +411,7 @@ test_files:
391
411
  - spec/breeder_spec.rb
392
412
  - spec/sphenic_spec.rb
393
413
  - spec/idoneal_spec.rb
414
+ - spec/sum_of_unitary_divisors_spec.rb
394
415
  - spec/lucas_carmichael_spec.rb
395
416
  - spec/rhonda_spec.rb
396
417
  - spec/totient_spec.rb
@@ -406,11 +427,13 @@ test_files:
406
427
  - spec/highly_composite_spec.rb
407
428
  - spec/frugal_spec.rb
408
429
  - spec/divides_spec.rb
430
+ - spec/odious_spec.rb
409
431
  - spec/semiprime_spec.rb
410
432
  - spec/deficient_spec.rb
411
433
  - spec/almost_perfect_spec.rb
412
434
  - spec/amicable_spec.rb
413
435
  - spec/happy_spec.rb
436
+ - spec/twin_prime_spec.rb
414
437
  - spec/hexagonal_spec.rb
415
438
  - spec/wieferich_prime_spec.rb
416
439
  - spec/fibonacci_spec.rb
@@ -423,6 +446,7 @@ test_files:
423
446
  - spec/core_spec.rb
424
447
  - spec/lucas_spec.rb
425
448
  - spec/trimorphic_spec.rb
449
+ - spec/evil_spec.rb
426
450
  - spec/harshad_spec.rb
427
451
  - spec/cube_spec.rb
428
452
  - spec/ore_spec.rb
@@ -456,3 +480,4 @@ test_files:
456
480
  - spec/aspiring_spec.rb
457
481
  - spec/mobius_spec.rb
458
482
  - spec/positive_spec.rb
483
+ - spec/unhappy_spec.rb