rubylabs 0.7.0 → 0.7.1

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.
@@ -0,0 +1,20 @@
1
+ A 0.069
2
+ C 0.021
3
+ D 0.050
4
+ E 0.069
5
+ F 0.038
6
+ G 0.063
7
+ H 0.025
8
+ I 0.048
9
+ K 0.059
10
+ L 0.094
11
+ M 0.023
12
+ N 0.041
13
+ P 0.058
14
+ Q 0.047
15
+ R 0.056
16
+ S 0.083
17
+ T 0.054
18
+ V 0.060
19
+ W 0.011
20
+ Y 0.031
@@ -0,0 +1,35 @@
1
+ # The binary numbers are Hawaiian words, encoded with a Huffman code based on the
2
+ # letter frequencies in hafreq.txt. The word next to a code is the English translation
3
+ # of the Hawaiian word -- after decoding a string of bits look for the word in a
4
+ # Hawaiian-English dictionary to see if the decoding is correct.
5
+
6
+ 011010 rain
7
+ 001010 sugarcane
8
+ 0011111 carving
9
+ 110011010 night
10
+ 0011000110 duck
11
+ 1100001010 chicken
12
+ 1001110110 swordfish
13
+ 111001101111 large
14
+ 001010111010 leeward
15
+ 110000100010110 island
16
+ 1100001010111010 ocean
17
+ 0001110101111101 octopus
18
+ 0000101110101111 porch
19
+ 1110110111101101 goose
20
+ 0010110110000110 teacher
21
+ 100000111101111111 royalty
22
+ 00110000110001101111 beach
23
+ 11000100001100000010 thankyou
24
+ 11000100011011101111 wind
25
+ 0001010100000010000110 friend
26
+ 0011000110000111111000110 morning
27
+ 0001100110011101000001111 happy
28
+ 110001000110000111110011111 year
29
+ 00010100111010001111111001110 hospitality
30
+ 1100010000011110001111111101111 visitor
31
+ 11000100010110100001111111101101 mother
32
+ 00011000001000110000111110011111 pineapple
33
+ 110001101111011010001011011101101 imp
34
+ 0011011110011011000100001111111101101 daughter
35
+ 000101101100001100001011011000011011100110001011011100110001011010110011011010011110 triggerfish
@@ -0,0 +1,16 @@
1
+ # Letter frequencies for the Hawaiian alphabet
2
+ # Source: http://www.cryptogram.org/cdb/words/frequency.html
3
+
4
+ ' 0.068
5
+ A 0.262
6
+ E 0.072
7
+ H 0.045
8
+ I 0.084
9
+ K 0.106
10
+ L 0.044
11
+ M 0.032
12
+ N 0.083
13
+ O 0.106
14
+ P 0.030
15
+ U 0.059
16
+ W 0.009
@@ -0,0 +1,5 @@
1
+ A 0.45
2
+ E 0.12
3
+ I 0.15
4
+ O 0.18
5
+ U 0.10
@@ -0,0 +1,6 @@
1
+ # A small 4-body system to demonstrate the simulator
2
+
3
+ a 1.4e18 50 70 0 0 1 0 10 #ff6666
4
+ b 1.2e16 50 225 0 -1000 2 0 3 #ff6666
5
+ c 2.1e16 175 -75 0 -1 -5 0 5 #ff6666
6
+ d 4.5e16 300 -75 0 -5 2 0 6 #ff6666
@@ -0,0 +1,17 @@
1
+ # Solar system data, downloaded from JPL, from ephemeris created for Jan 1, 1970
2
+ # Format for each line:
3
+ # name, mass, posx, posy, posz, velx, vely, velz, dia, color
4
+ # where mass is in grams; posx, posy, and posz are the 3d position vector (in meters)
5
+ # and velx, vely, and velz is the 3D velocity vector (m/sec). The last two items are
6
+ # for the visualization -- radius (in pixels) and color for drawing the body.
7
+
8
+ sun 1.9891E+30 0 0 0 0 0 0 10 #ffff00
9
+ mercury 3.302E+23 3.83713E+10 2.877025E+10 -1.175808E+09 -38787.67 41093.05 6918.461 3 #ffcc66
10
+ venus 4.8685E+24 -5.377313E+09 -1.085956E+11 -1.164748E+09 34741.48 -1865.747 -2031.506 5 #800080
11
+ earth 5.9736E+24 -2.700743E+10 1.446007E+11 9686451 -29770.44 -5568.042 0.3961261 5 #0000ff
12
+ mars 6.4185E+23 1.983825E+11 7.422924E+10 -3.334841E+09 -7557.626 24761.27 704.7457 4 #ff0000
13
+ jupiter 1.89813E+27 -7.496502E+11 -3.201711E+11 1.811155E+10 4982.522 -11417.83 -64.66531 7 #ffffbf
14
+ saturn 5.68319E+26 1.082806E+12 8.510841E+11 -5.793461E+10 -6487.118 7565.952 125.4422 6 #0080ff
15
+ uranus 8.68103E+25 -2.724616E+12 -2.894003E+11 3.428801E+10 671.3469 -7099.093 -35.04028 5 #008080
16
+ neptune 1.0241E+26 -2.328072E+12 -3.891086E+12 1.337436E+11 4633.961 -2767.423 -49.57268 5 #004080
17
+ pluto 1.314E+22 -4.551135E+12 3.175277E+11 1.282177E+12 635.998 -5762.115 440.8821 2 #dddddd
@@ -0,0 +1,5 @@
1
+ # Two body system: a 6.6 pound watermelon and the earth. The melon is
2
+ # initially stationary on the the earth's surface.
3
+
4
+ melon 3000 0 6.371E6 0 0 0 0 10 pink
5
+ earth 5.9736E+24 0 0 0 0 0 0 1000 darkgreen
@@ -0,0 +1,55 @@
1
+ % Driving distances (in minutes) between Pac-10 stadiums
2
+
3
+ Seattle Pullman 320
4
+ Seattle Corvallis 317
5
+ Seattle Eugene 338
6
+ Seattle Berkeley 863
7
+ Seattle Stanford 914
8
+ Seattle Pasadena 1190
9
+ Seattle Los_Angeles 1190
10
+ Seattle Tempe 1620
11
+ Seattle Tucson 1800
12
+
13
+ Pullman Corvallis 470
14
+ Pullman Eugene 492
15
+ Pullman Berkeley 1070
16
+ Pullman Stanford 1123
17
+ Pullman Pasadena 1437
18
+ Pullman Los_Angeles 1437
19
+ Pullman Tempe 1560
20
+ Pullman Tucson 1680
21
+
22
+ Corvallis Eugene 55
23
+ Corvallis Berkeley 572
24
+ Corvallis Stanford 624
25
+ Corvallis Pasadena 898
26
+ Corvallis Los_Angeles 899
27
+ Corvallis Tempe 1268
28
+ Corvallis Tucson 1379
29
+
30
+ Eugene Berkeley 526
31
+ Eugene Stanford 578
32
+ Eugene Pasadena 852
33
+ Eugene Los_Angeles 852
34
+ Eugene Tempe 1222
35
+ Eugene Tucson 1332
36
+
37
+ Berkeley Stanford 58
38
+ Berkeley Pasadena 369
39
+ Berkeley Los_Angeles 371
40
+ Berkeley Tempe 740
41
+ Berkeley Tucson 857
42
+
43
+ Stanford Pasadena 370
44
+ Stanford Los_Angeles 371
45
+ Stanford Tempe 740
46
+ Stanford Tucson 858
47
+
48
+ Pasadena Los_Angeles 16
49
+ Pasadena Tempe 373
50
+ Pasadena Tucson 483
51
+
52
+ Los_Angeles Tempe 375
53
+ Los_Angeles Tucson 486
54
+
55
+ Tempe Tucson 122
data/data/tsp/test.txt ADDED
@@ -0,0 +1,2 @@
1
+ % [[443, 493], [496, 981], [539, 666], [617, 337], [698, 224], [750, 450], [850, 850], [987, 237]]
2
+ % a.each { |p| Canvas.circle(p[0]/3, p[1]/3, 3, :fill => 'darkblue') }
data/lib/tsplab.rb CHANGED
@@ -48,43 +48,28 @@ city is assigned a one-letter key.
48
48
  =end
49
49
 
50
50
  def initialize(matrix)
51
- matrixfilename = matrix.to_s + ".txt"
52
- matrixfilename = File.join(@@dataDirectory, matrixfilename)
53
- raise "Matrix not found: #{matrixfilename}" unless File.exists?(matrixfilename)
54
-
55
- @key = ?A
56
- @cities = Hash.new # initially a map from name string to one-letter key
57
- @matrix = Hash.new
58
-
59
- File.open(matrixfilename).each do |line|
60
- next if line.chomp.length == 0
61
- rec = line.split(/\t/)
62
- i = getKey(rec[0])
63
- j = getKey(rec[1])
64
- dist = ((24 * getValue(rec[2]) + getValue(rec[3])) * 60) + getValue(rec[4])
65
- assign(i,j,dist)
66
- assign(j,i,dist)
67
- end
68
-
69
- @cities = @cities.invert # from now on a map from key to name string
70
-
71
- errs = 0
72
- (?A..@key-1).each do |i|
73
- (i+1..@key-1).each do |j|
74
- unless @matrix[i][j] && @matrix[j][i]
75
- errs += 1
76
- puts "CityList.new: missing distance between #{@cities[i]} and #{@cities[j]}"
77
- end
78
- end
51
+ if matrix.class == String || matrix.class == Symbol
52
+ read_file(matrix)
53
+ elsif matrix.class == Array
54
+ make_map(matrix)
55
+ else
56
+ raise "CityList: parameter must be a file name or array of points"
79
57
  end
80
- raise "CityList.new: errors in input file" if errs > 0
81
-
82
58
  end
83
59
 
84
60
  def inspect()
85
61
  n = @matrix.length
86
62
  return sprintf "TSPLab::CityList (%d x %d)", n, n-1
87
63
  end
64
+
65
+ def dump
66
+ (?A..@key-1).each do |i|
67
+ (i+1..@key-1).each do |j|
68
+ printf "%s %s %d\n", @cities[i], @cities[j], @matrix[i][j]
69
+ end
70
+ end
71
+ return true
72
+ end
88
73
 
89
74
  def size()
90
75
  return @key - ?A
@@ -116,6 +101,50 @@ city is assigned a one-letter key.
116
101
  # get a time value from an input line, save a distance
117
102
 
118
103
  private
104
+
105
+ def read_file(fn)
106
+ matrixfilename = fn.to_s + ".txt"
107
+ matrixfilename = File.join(@@dataDirectory, matrixfilename)
108
+ raise "Matrix not found: #{matrixfilename}" unless File.exists?(matrixfilename)
109
+
110
+ @key = ?A
111
+ @cities = Hash.new # initially a map from name string to one-letter key
112
+ @matrix = Hash.new
113
+
114
+ File.open(matrixfilename).each do |line|
115
+ next if line.chomp.length == 0
116
+ next if line[0] == ?%
117
+ rec = line.split
118
+ i = getKey(rec[0])
119
+ j = getKey(rec[1])
120
+ dist = rec[2].to_i
121
+ assign(i,j,dist)
122
+ assign(j,i,dist)
123
+ end
124
+
125
+ @cities = @cities.invert # from now on a map from key to name string
126
+
127
+ errs = 0
128
+ (?A..@key-1).each do |i|
129
+ (i+1..@key-1).each do |j|
130
+ unless @matrix[i][j] && @matrix[j][i]
131
+ errs += 1
132
+ puts "CityList.new: missing distance between #{@cities[i]} and #{@cities[j]}"
133
+ end
134
+ end
135
+ end
136
+ raise "CityList.new: errors in input file" if errs > 0
137
+ end
138
+
139
+ def make_map(a)
140
+ @key = ?A + a.length - 1
141
+ @cities = Hash.new
142
+ @matrix = Hash.new
143
+ for i in 0...a.length
144
+ for j in i...a.length
145
+ end
146
+ end
147
+ end
119
148
 
120
149
  def getKey(s)
121
150
  if @cities[s] == nil
@@ -387,7 +416,15 @@ inherited from a parent, and incremented whenever a mutation or crossover is app
387
416
 
388
417
  return best
389
418
  end
390
-
419
+
420
+ # Make a random set of n cities on a 1000 x 1000 grid
421
+
422
+ def random_cities(n)
423
+ a = Array.new
424
+ n.times { x = rand(1000); y = rand(1000); a << [x,y] }
425
+ return a
426
+ end
427
+
391
428
  def checkout(matrix, filename = nil)
392
429
  matrixfilename = matrix.to_s + ".txt"
393
430
  matrixfilename = File.join(@@dataDirectory, matrixfilename)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubylabs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - conery
@@ -39,7 +39,15 @@ files:
39
39
  - bin/statistics2-0.53/statistics2.rb
40
40
  - bin/statistics2-0.53/t-inv.rb
41
41
  - bin/statistics2.rb
42
+ - data/arrays/cars.txt
43
+ - data/arrays/colors.txt
44
+ - data/arrays/fruit.txt
45
+ - data/arrays/wordlist.txt
42
46
  - data/eliza/doctor.txt
47
+ - data/huffman/aafreq.txt
48
+ - data/huffman/hacodes.txt
49
+ - data/huffman/hafreq.txt
50
+ - data/huffman/hvfreq.txt
43
51
  - data/mars/chang1.txt
44
52
  - data/mars/dwarf.txt
45
53
  - data/mars/ferret.txt
@@ -53,7 +61,11 @@ files:
53
61
  - data/mars/test_hello.txt
54
62
  - data/mars/test_mult.txt
55
63
  - data/mars/test_threads.txt
56
- - data/solar.dat
64
+ - data/spheres/fourbody.txt
65
+ - data/spheres/solarsystem.txt
66
+ - data/spheres/urey.txt
67
+ - data/tsp/pac10.txt
68
+ - data/tsp/test.txt
57
69
  - lib/bitlab.rb
58
70
  - lib/elizalab.rb
59
71
  - lib/encryptionlab.rb