expertsort 0.0.1 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5aadeb57bd061e576f10de0e93903a96c65347d7
4
+ data.tar.gz: 2b9f4129264205584044ecd568008e5cc59a982b
5
+ SHA512:
6
+ metadata.gz: f032d46951090d48765ec43e3d37036c219662fa31a327141af1f5a6acd9c4e7794bafe077a8c60f8d3bbea14d855e94717d8201f4d9d1ac015318ed83aa5003
7
+ data.tar.gz: cf5812e933a2436e259de2baa6ae482d5ff3739c2caf7b3c0dae7614756b574db4fa9f25c14905ceb90fc66c54d5c20fc4861b368036101dfd875374c8580db4
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Expertsort (stylised EXPERTSORT) is a collection of EXPERT PROGRAMMER sorting algorithms.
4
4
 
5
- Ever felt that sorting in Ruby is too fast?
5
+ Ever felt that sorting in Ruby is efficient?
6
6
 
7
7
  Need a slow algorithm for v0.0.1 of your application?
8
8
 
@@ -28,6 +28,8 @@ Or install it yourself as:
28
28
 
29
29
  ## Usage
30
30
 
31
+ require 'expertsort'
32
+
31
33
  [5, 4, 3, 1, 2].bogosort
32
34
  => [1, 2, 3, 4, 5]
33
35
 
@@ -0,0 +1,19 @@
1
+ module Expertsort
2
+ module BogoBogoSort
3
+ def bogobogosort
4
+ self.dup.bogobogosort!
5
+ end
6
+
7
+ def bogobogosort!(*arr)
8
+ arr = (arr.length == 1) ? arr[0] : self
9
+ is_sorted = -> (arr) { arr.each_cons(2).all? { |a, b| (a <=> b) <= 0 } }
10
+
11
+ while !is_sorted.call(arr)
12
+ arr.shuffle!
13
+ arr.bogobogosort!(dup[0..-2])
14
+ end
15
+
16
+ arr
17
+ end
18
+ end
19
+ end
@@ -10,7 +10,7 @@ module Expertsort
10
10
  raise RangeError, "Cannot sleep sort an array with negative elements: #{e}" if e.to_i < 0
11
11
  threads << Thread.new do
12
12
  sleep e.to_i
13
- semaphore.synchronize { sorted << e.to_i }
13
+ semaphore.synchronize { sorted << e }
14
14
  end
15
15
  end
16
16
 
@@ -22,4 +22,4 @@ module Expertsort
22
22
  self.replace(sleepsort)
23
23
  end
24
24
  end
25
- end
25
+ end
@@ -1,3 +1,3 @@
1
- module Expertsort
2
- VERSION = "0.0.1"
3
- end
1
+ module Expertsort
2
+ VERSION = "0.0.3"
3
+ end
data/lib/expertsort.rb CHANGED
@@ -1,12 +1,14 @@
1
1
  require "expertsort/version"
2
2
 
3
3
  require 'expertsort/sorts/bogosort'
4
+ require 'expertsort/sorts/bogobogosort'
4
5
  require 'expertsort/sorts/sleepsort'
5
6
  require 'expertsort/sorts/slowestsort'
6
7
  require 'expertsort/sorts/stoogesort'
7
8
 
8
9
  class Array
9
10
  include Expertsort::BogoSort
11
+ include Expertsort::BogoBogoSort
10
12
  include Expertsort::SleepSort
11
13
  include Expertsort::SlowestSort
12
14
  include Expertsort::StoogeSort
@@ -75,4 +75,23 @@ describe Array do
75
75
  expect(Time.now).to be > start_time + 1
76
76
  end
77
77
  end
78
+
79
+ describe 'BogoBogoSort' do
80
+ it 'sorts' do
81
+ expect([4, 3, 1, 2].bogobogosort).to eq([1, 2, 3, 4])
82
+ end
83
+
84
+ it 'has a destructive method' do
85
+ array = [4, 3, 1, 2].dup
86
+ old_object_id = array.object_id
87
+ array.bogobogosort!
88
+ expect(old_object_id).to eq(array.object_id)
89
+ end
90
+
91
+ it 'takes a very long time' do
92
+ start_time = Time.now
93
+ @unsorted.bogobogosort
94
+ expect(Time.now).to be > start_time + 3
95
+ end
96
+ end
78
97
  end
metadata CHANGED
@@ -1,33 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: expertsort
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
5
- prerelease:
4
+ version: 0.0.3
6
5
  platform: ruby
7
6
  authors:
8
7
  - Ng Guoyou
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-08-15 00:00:00.000000000 Z
11
+ date: 2013-12-30 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rspec
16
- requirement: &25494828 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :development
23
21
  prerelease: false
24
- version_requirements: *25494828
25
- description: ! "Expertsort (stylised EXPERTSORT) is a collection of EXPERT PROGRAMMER
26
- sorting algorithms.\n Ever felt that sorting in Ruby is too
27
- fast?\n Need a slow algorithm for v0.0.1 of your application?
28
- (So you can show your boss that you, programmer extraordinaire, significantly improved
29
- performance in v0.0.2)\n Want to prove that sorting in Ruby
30
- is slow as balls?\n EXPERTSORT is here to help."
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: |-
28
+ Expertsort (stylised EXPERTSORT) is a collection of EXPERT PROGRAMMER sorting algorithms.
29
+ Ever felt that sorting in Ruby is too fast?
30
+ Need a slow algorithm for v0.0.1 of your application? (So you can show your boss that you, programmer extraordinaire, significantly improved performance in v0.0.2)
31
+ Want to prove that sorting in Ruby is slow as balls?
32
+ EXPERTSORT is here to help.
31
33
  email:
32
34
  - fauxface+github@gmail.com
33
35
  executables: []
@@ -41,6 +43,7 @@ files:
41
43
  - Rakefile
42
44
  - expertsort.gemspec
43
45
  - lib/expertsort.rb
46
+ - lib/expertsort/sorts/bogobogosort.rb
44
47
  - lib/expertsort/sorts/bogosort.rb
45
48
  - lib/expertsort/sorts/sleepsort.rb
46
49
  - lib/expertsort/sorts/slowestsort.rb
@@ -50,26 +53,25 @@ files:
50
53
  homepage: https://github.com/gyng/expertsort
51
54
  licenses:
52
55
  - MIT
56
+ metadata: {}
53
57
  post_install_message:
54
58
  rdoc_options: []
55
59
  require_paths:
56
60
  - lib
57
61
  required_ruby_version: !ruby/object:Gem::Requirement
58
- none: false
59
62
  requirements:
60
- - - ! '>='
63
+ - - '>='
61
64
  - !ruby/object:Gem::Version
62
65
  version: '0'
63
66
  required_rubygems_version: !ruby/object:Gem::Requirement
64
- none: false
65
67
  requirements:
66
- - - ! '>='
68
+ - - '>='
67
69
  - !ruby/object:Gem::Version
68
70
  version: '0'
69
71
  requirements: []
70
72
  rubyforge_project: expertsort
71
- rubygems_version: 1.8.16
73
+ rubygems_version: 2.0.3
72
74
  signing_key:
73
- specification_version: 3
75
+ specification_version: 4
74
76
  summary: A collection of EXPERT PROGRAMMER sorting algorithms.
75
77
  test_files: []