compsci 0.1.0.1 → 0.1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +7 -2
- data/VERSION +1 -1
- data/compsci.gemspec +5 -0
- data/examples/binary_tree.rb +2 -2
- data/lib/compsci/names.rb +0 -76
- data/lib/compsci/names/greek.rb +83 -0
- data/lib/compsci/timer.rb +0 -1
- data/lib/compsci/tree.rb +4 -2
- data/test/names.rb +1 -0
- metadata +72 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e4f7afa18fdbd091cf4fed0668fe59204f8f05fa
|
4
|
+
data.tar.gz: c123e0795298ac870f4b769f97818144e50a6f74
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9072889f4e3404d945686c1dccf2818d3fd359354f7b78fa42562ecb380918abc9899cacf14ce7e1e4c29b31542b1ba0c57b8f1f15b058b12132302fc77f8f99
|
7
|
+
data.tar.gz: adb4c6ec9b7b23ebc5781204db5fb1062826ee19426f8c7e3ad1098c362c535cdc0e5b71c60abe9b009ed66f4ef317b3bffa36c4f8fdbda84d37fac3555f6788
|
data/Rakefile
CHANGED
@@ -31,7 +31,7 @@ metrics_tasks = []
|
|
31
31
|
begin
|
32
32
|
require 'flog_task'
|
33
33
|
FlogTask.new do |t|
|
34
|
-
t.threshold =
|
34
|
+
t.threshold = 800
|
35
35
|
t.dirs = ['lib']
|
36
36
|
t.verbose = true
|
37
37
|
end
|
@@ -79,7 +79,12 @@ def rprof_sh(script, args = '', rprof_args = '')
|
|
79
79
|
lib_sh ['ruby-prof', rprof_args, script, '--', args].join(' ')
|
80
80
|
end
|
81
81
|
|
82
|
-
scripts = [
|
82
|
+
scripts = [
|
83
|
+
"examples/binary_tree.rb",
|
84
|
+
"examples/complete_tree.rb",
|
85
|
+
"examples/heap.rb",
|
86
|
+
"examples/tree.rb",
|
87
|
+
]
|
83
88
|
|
84
89
|
desc "Run ruby-prof on examples/"
|
85
90
|
task "ruby-prof" => "loadavg" do
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.1.1
|
data/compsci.gemspec
CHANGED
@@ -15,6 +15,11 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.files += Dir['test/**/*.rb']
|
16
16
|
s.files += Dir['examples/**/*.rb']
|
17
17
|
|
18
|
+
s.add_development_dependency "buildar" "~> 3.0"
|
18
19
|
s.add_development_dependency "minitest", "~> 5.0"
|
19
20
|
s.add_development_dependency "rake", "~> 0"
|
21
|
+
s.add_development_dependency "flog", "~> 0"
|
22
|
+
s.add_development_dependency "flay", "~> 0"
|
23
|
+
s.add_development_dependency "roodi", "~> 0"
|
24
|
+
s.add_development_dependency "ruby-prof", "~> 0"
|
20
25
|
end
|
data/examples/binary_tree.rb
CHANGED
@@ -13,7 +13,7 @@ EOF
|
|
13
13
|
count = 0
|
14
14
|
start = Timer.now
|
15
15
|
start_1k = Timer.now
|
16
|
-
tree =
|
16
|
+
tree = BinaryTree.new ChildNode, rand(99)
|
17
17
|
|
18
18
|
loop {
|
19
19
|
count += 1
|
@@ -50,7 +50,7 @@ EOF
|
|
50
50
|
vals = Array.new(30) { rand 99 }
|
51
51
|
p vals
|
52
52
|
|
53
|
-
tree =
|
53
|
+
tree = BinaryTree.new ChildNode, vals.shift
|
54
54
|
tree.push vals.shift until vals.empty?
|
55
55
|
puts tree
|
56
56
|
|
data/lib/compsci/names.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
module CompSci
|
3
2
|
module Names
|
4
3
|
WW1 = [:apples, :butter, :charlie, :duff, :edward, :freddy, :george,
|
@@ -53,80 +52,5 @@ module CompSci
|
|
53
52
|
end
|
54
53
|
names[pos]
|
55
54
|
end
|
56
|
-
|
57
|
-
module Greek
|
58
|
-
UPPER = [*'Α'..'Ρ', *'Σ'..'Ω']
|
59
|
-
LOWER = [*('α'..'ρ'), *('σ'..'ω')]
|
60
|
-
SYMBOLS = [:alpha, :beta, :gamma, :delta, :epsilon, :zeta, :eta, :theta,
|
61
|
-
:iota, :kappa, :lambda, :mu, :nu, :xi, :omicron, :pi, :rho,
|
62
|
-
:sigma, :tau, :upsilon, :phi, :chi, :psi, :omega]
|
63
|
-
|
64
|
-
# e.g. { alpha: ['Α', 'α'] ...
|
65
|
-
CHAR_MAP = {}
|
66
|
-
SYMBOLS.each_with_index { |sym, i| CHAR_MAP[sym] = [UPPER[i], LOWER[i]] }
|
67
|
-
|
68
|
-
LATIN_SYMBOLS = {
|
69
|
-
a: :alpha,
|
70
|
-
b: :beta,
|
71
|
-
c: :gamma,
|
72
|
-
d: :delta,
|
73
|
-
e: :epsilon,
|
74
|
-
f: :zeta,
|
75
|
-
g: :eta,
|
76
|
-
h: :theta,
|
77
|
-
i: :iota,
|
78
|
-
j: :xi, # use for j, q and w
|
79
|
-
k: :kappa,
|
80
|
-
l: :lambda,
|
81
|
-
m: :mu,
|
82
|
-
n: :nu,
|
83
|
-
# nonesuch: => :xi,
|
84
|
-
o: :omicron,
|
85
|
-
p: :pi,
|
86
|
-
q: :xi, # use for j, q and w
|
87
|
-
r: :rho,
|
88
|
-
s: :sigma,
|
89
|
-
t: :tau,
|
90
|
-
u: :upsilon,
|
91
|
-
v: :phi,
|
92
|
-
w: :xi, # use for j, q and w
|
93
|
-
x: :chi,
|
94
|
-
y: :psi,
|
95
|
-
z: :omega,
|
96
|
-
}
|
97
|
-
SYMBOLS26 = LATIN_SYMBOLS.values
|
98
|
-
|
99
|
-
def self.upper(latin_str)
|
100
|
-
CHAR_MAP.fetch(self.sym(latin_str)).first
|
101
|
-
end
|
102
|
-
|
103
|
-
def self.lower(latin_str)
|
104
|
-
CHAR_MAP.fetch(self.sym(latin_str)).last
|
105
|
-
end
|
106
|
-
|
107
|
-
def self.sym(val)
|
108
|
-
case val
|
109
|
-
when String
|
110
|
-
if val.match %r{\A\d+\z}
|
111
|
-
val = val.to_i
|
112
|
-
if val >= 0 and val < SYMBOLS.size
|
113
|
-
SYMBOLS[val]
|
114
|
-
else
|
115
|
-
raise "val #{val} not in range (#{SYMBOLS.size})"
|
116
|
-
end
|
117
|
-
else
|
118
|
-
LATIN_SYMBOLS.fetch val[0].downcase.to_sym
|
119
|
-
end
|
120
|
-
when Integer
|
121
|
-
if val >= 0 and val < SYMBOLS.size
|
122
|
-
SYMBOLS[val]
|
123
|
-
else
|
124
|
-
raise "val #{val} not in range (#{SYMBOLS.size})"
|
125
|
-
end
|
126
|
-
else
|
127
|
-
raise "unexpected val #{val} (#{val.class})"
|
128
|
-
end
|
129
|
-
end
|
130
|
-
end
|
131
55
|
end
|
132
56
|
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
module CompSci
|
4
|
+
module Names
|
5
|
+
module Greek
|
6
|
+
UPPER = [*'Α'..'Ρ', *'Σ'..'Ω']
|
7
|
+
LOWER = [*('α'..'ρ'), *('σ'..'ω')]
|
8
|
+
SYMBOLS = [:alpha, :beta, :gamma, :delta, :epsilon, :zeta, :eta, :theta,
|
9
|
+
:iota, :kappa, :lambda, :mu, :nu, :xi, :omicron, :pi, :rho,
|
10
|
+
:sigma, :tau, :upsilon, :phi, :chi, :psi, :omega]
|
11
|
+
|
12
|
+
# e.g. { alpha: ['Α', 'α'] ...
|
13
|
+
CHAR_MAP = {}
|
14
|
+
SYMBOLS.each_with_index { |sym, i| CHAR_MAP[sym] = [UPPER[i], LOWER[i]] }
|
15
|
+
|
16
|
+
LATIN_SYMBOLS = {
|
17
|
+
a: :alpha,
|
18
|
+
b: :beta,
|
19
|
+
c: :gamma,
|
20
|
+
d: :delta,
|
21
|
+
e: :epsilon,
|
22
|
+
f: :zeta,
|
23
|
+
g: :eta,
|
24
|
+
h: :theta,
|
25
|
+
i: :iota,
|
26
|
+
j: :xi, # use for j, q and w
|
27
|
+
k: :kappa,
|
28
|
+
l: :lambda,
|
29
|
+
m: :mu,
|
30
|
+
n: :nu,
|
31
|
+
# nonesuch: => :xi,
|
32
|
+
o: :omicron,
|
33
|
+
p: :pi,
|
34
|
+
q: :xi, # use for j, q and w
|
35
|
+
r: :rho,
|
36
|
+
s: :sigma,
|
37
|
+
t: :tau,
|
38
|
+
u: :upsilon,
|
39
|
+
v: :phi,
|
40
|
+
w: :xi, # use for j, q and w
|
41
|
+
x: :chi,
|
42
|
+
y: :psi,
|
43
|
+
z: :omega,
|
44
|
+
}
|
45
|
+
SYMBOLS26 = LATIN_SYMBOLS.values
|
46
|
+
|
47
|
+
def self.upper(latin_str)
|
48
|
+
CHAR_MAP.fetch(self.sym(latin_str)).first
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.lower(latin_str)
|
52
|
+
CHAR_MAP.fetch(self.sym(latin_str)).last
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.sym(val)
|
56
|
+
case val
|
57
|
+
when String
|
58
|
+
if val.match %r{\A\d+\z}
|
59
|
+
# treat positive integer strings as positive integers
|
60
|
+
val = val.to_i
|
61
|
+
if val >= 0 and val < SYMBOLS.size
|
62
|
+
SYMBOLS[val]
|
63
|
+
else
|
64
|
+
raise "val #{val} not in range (#{SYMBOLS.size})"
|
65
|
+
end
|
66
|
+
else
|
67
|
+
# map the first character to a greek symbol
|
68
|
+
LATIN_SYMBOLS.fetch val[0].downcase.to_sym
|
69
|
+
end
|
70
|
+
when Integer
|
71
|
+
if val >= 0 and val < SYMBOLS.size
|
72
|
+
# map the integer to a greek symbol
|
73
|
+
SYMBOLS[val]
|
74
|
+
else
|
75
|
+
raise "val #{val} not in range (#{SYMBOLS.size})"
|
76
|
+
end
|
77
|
+
else
|
78
|
+
raise "unexpected val #{val} (#{val.class})"
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
data/lib/compsci/timer.rb
CHANGED
data/lib/compsci/tree.rb
CHANGED
@@ -100,12 +100,14 @@ module CompSci
|
|
100
100
|
def display(width: 80)
|
101
101
|
count = 0
|
102
102
|
str = ''
|
103
|
-
self.bf_search { |
|
103
|
+
self.bf_search { |node|
|
104
104
|
count += 1
|
105
105
|
level = Math.log(count, 2).floor
|
106
106
|
block_width = width / (2**level)
|
107
|
+
val = node.to_s
|
107
108
|
str += "\n" if 2**level == count and count > 1
|
108
|
-
|
109
|
+
space = [(block_width + val.size) / 2, val.size + 1].max
|
110
|
+
str += val.ljust(space, ' ').rjust(block_width, ' ')
|
109
111
|
false # keep searching to visit every node
|
110
112
|
}
|
111
113
|
str
|
data/test/names.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: compsci
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rick Hull
|
@@ -10,6 +10,20 @@ bindir: bin
|
|
10
10
|
cert_chain: []
|
11
11
|
date: 2017-10-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: buildar~> 3.0
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: minitest
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -38,6 +52,62 @@ dependencies:
|
|
38
52
|
- - "~>"
|
39
53
|
- !ruby/object:Gem::Version
|
40
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: flog
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: flay
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: roodi
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: ruby-prof
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
41
111
|
description: Trees, Heaps, Timers, Error fitting, etc
|
42
112
|
email:
|
43
113
|
executables: []
|
@@ -58,6 +128,7 @@ files:
|
|
58
128
|
- lib/compsci/fit.rb
|
59
129
|
- lib/compsci/heap.rb
|
60
130
|
- lib/compsci/names.rb
|
131
|
+
- lib/compsci/names/greek.rb
|
61
132
|
- lib/compsci/node.rb
|
62
133
|
- lib/compsci/timer.rb
|
63
134
|
- lib/compsci/tree.rb
|