matrices_p9 0.0.1 → 1.0.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
@@ -5,10 +5,6 @@ require 'rspec/core/rake_task'
5
5
  RSpec::Core::RakeTask.new
6
6
  task :default => :spec
7
7
 
8
- desc "Run spec"
9
- task :spec do
10
- sh "cd spec \n rspec -I. matrices_spec.rb"
11
- end
12
8
 
13
9
  desc "Run UnitTest"
14
10
  task :test do
data/lib/fraccion.rb CHANGED
@@ -1,11 +1,11 @@
1
-
2
- #require "./gcd.rb"
3
- #Programa que trabaja con fracciones
4
- #Adriana Rolo Inchausti, Luis Antonio Orta Mendes
5
-
1
+ #Clase para trabajar con fracciones.
6
2
  class Fraccion
7
- attr_reader :denominador, :numerador
8
-
3
+ #Valor de numerador
4
+ attr_reader :denominador
5
+
6
+ #Valor de denominador
7
+ attr_reader :numerador
8
+ #Crea una fraccion con num como numerador y denomin como denominador
9
9
  def initialize(num, denomin)
10
10
  #atributo
11
11
  mcd=gcd(num,denomin)
@@ -24,13 +24,12 @@ attr_reader :denominador, :numerador
24
24
  end
25
25
 
26
26
 
27
- # Metodos getter de Numerador y denominador
28
-
27
+ # Retorna el valor del numerador
29
28
  def num
30
29
  return @numerador
31
30
  end
32
31
 
33
-
32
+ #Retorna el valor del denominador
34
33
  def denom
35
34
  return @denominador
36
35
  end
@@ -154,8 +153,7 @@ attr_reader :denominador, :numerador
154
153
  end
155
154
 
156
155
 
157
- #Sobrecarga de operadores de comparación devuelve true en caso de que sea cierto y falso en caso contrario
158
- #Mayor que
156
+ #Sobrecarga de operadores de comparación devuelve true en caso de que el numero con el que se invoca es mayor que el segundo y falso en caso contrario
159
157
  def > (otro)
160
158
  if (@numerador/@denominador > otro.numerador/otro.denominador)
161
159
  return true
@@ -165,7 +163,8 @@ attr_reader :denominador, :numerador
165
163
 
166
164
  end
167
165
 
168
- #menor que
166
+
167
+ #Sobrecarga de operadores de comparación devuelve true en caso de que el numero con el que se invoca es menor que el segundo y falso en caso contrario
169
168
  def < (otro)
170
169
  if (@numerador/@denominador < otro.numerador/otro.denominador)
171
170
  return true
@@ -174,7 +173,9 @@ attr_reader :denominador, :numerador
174
173
  end
175
174
 
176
175
  end
177
- #mayor igual que
176
+
177
+
178
+ #Sobrecarga de operadores de comparación devuelve true en caso de que el numero con el que se invoca es mayor o igual que el segundo y falso en caso contrario
178
179
  def >= (otro)
179
180
  if (@numerador/@denominador >= otro.numerador/otro.denominador)
180
181
  return true
@@ -183,7 +184,9 @@ attr_reader :denominador, :numerador
183
184
  end
184
185
 
185
186
  end
186
- #menos igual que
187
+
188
+
189
+ #Sobrecarga de operadores de comparación devuelve true en caso de que el numero con el que se invoca es menor que el segundo y falso en caso contrario
187
190
  def <= (otro)
188
191
  if (@numerador/@denominador <= otro.numerador/otro.denominador)
189
192
  return true
@@ -192,7 +195,8 @@ attr_reader :denominador, :numerador
192
195
  end
193
196
 
194
197
  end
195
- #Coerce
198
+
199
+ #Coerce. se usa para multiplicar numeros por fracciones
196
200
  def coerce(other)
197
201
  [self, other]
198
202
  end
data/lib/matrices_p9.rb CHANGED
@@ -1,13 +1,21 @@
1
+ require "matrices_p9/version"
1
2
  require "fraccion.rb"
2
3
 
4
+ #Clase abstracta de la que heredan matriz densa y dispersa. No se puede crear un objeto de esta clase.
3
5
  class Matriz
4
- attr_accessor :fil, :col
6
+
7
+ #Modulo para comparar
5
8
  include Comparable
6
9
 
10
+ #Numero de filas
11
+ attr_accessor :fil
12
+
13
+ #Numero de columnas
14
+ attr_accessor :col
15
+ #Se almacena el valor de las filas y las columnas segun se le pasen por parametros.
7
16
  def initialize(f, c)
8
- #atributo
9
- @fil=f.to_i; #Numero de filas
10
- @col=c.to_i; #Numero de columnas
17
+ @fil=f.to_i;
18
+ @col=c.to_i;
11
19
  end
12
20
 
13
21
 
@@ -19,18 +27,27 @@ include Comparable
19
27
  temp = MatrizDensa.new(self.fil, self.col, nil)
20
28
  if other.instance_of?MatrizDensa
21
29
 
22
- for i in (0...@fil.to_i)
23
- for j in (0...@col.to_i)
24
- temp.mat[i][j] = (self.mat[i][j]) + (other.mat[i][j])
30
+ #for i in (0...@fil.to_i)
31
+ @fil.to_i.times do |i|
32
+
33
+ #for j in (0...@col.to_i)
34
+ @col.to_i.times do |j|
35
+ temp.mat[i][j] = (@mat[i][j]) + (other.mat[i][j])
36
+
25
37
  end
26
38
  end
27
39
  end
28
40
 
29
41
  if other.instance_of?MatrizDispersa
30
- for i in (0...@fil.to_i)
31
- for j in (0...@col.to_i)
42
+ #for i in (0...@fil.to_i)
43
+ @fil.to_i.times do |i|
44
+
45
+ #for j in (0...@col.to_i)
46
+ @col.to_i.times do |j|
47
+
32
48
  encontrado = 0
33
- for k in (0...other.posx.size)
49
+ #for k in (0...other.posx.size)
50
+ other.posx.size.times do |k|
34
51
  if (i==other.posx[k] and j==other.posy[k] and encontrado==0)
35
52
  temp.mat[i][j] = (self.mat[i][j]) + (other.valor[k])
36
53
  encontrado = 1
@@ -48,10 +65,14 @@ include Comparable
48
65
  if self.instance_of?MatrizDispersa
49
66
  if other.instance_of?MatrizDensa
50
67
  temp = MatrizDensa.new(self.fil, self.col, nil)
51
- for i in (0...@fil.to_i)
68
+ #for i in (0...@fil.to_i)
69
+ @fil.to_i.times do |i|
70
+
52
71
  for j in (0...@col.to_i)
53
72
  encontrado = 0
54
- for k in (0...self.posx.size.to_i)
73
+ #for k in (0...self.posx.size.to_i)
74
+ self.posx.size.times do |k|
75
+
55
76
  if (i==self.posx[k] and j==self.posy[k] and encontrado==0)
56
77
  temp.mat[i][j] = (other.mat[i][j]) + (self.valor[k])
57
78
  encontrado = 1
@@ -71,9 +92,13 @@ include Comparable
71
92
  temp.posx = self.posx
72
93
  temp.posy = self.posy
73
94
 
74
- for j in (0...other.posx.size.to_i)
95
+ #for j in (0...other.posx.size.to_i)
96
+ other.posx.size.to_i.times do |j|
97
+
75
98
  encontrado = false
76
- for k in (0...self.posx.size.to_i)
99
+ #for k in (0...self.posx.size.to_i)
100
+ self.posx.size.times do |k|
101
+
77
102
  if(other.posx[j] == temp.posx[k] and other.posy[j] == temp.posy[k])
78
103
  temp.valor[k] = temp.valor[k] + other.valor[j]
79
104
  encontrado = true
@@ -94,25 +119,36 @@ include Comparable
94
119
  return nil
95
120
  end
96
121
  end
97
-
122
+ #Sobrecarga del operador de resta, recibe como parametros dos matrices y devuelve una matriz con el resultado de la suma de forma A-B= (Aij+Bij)
123
+
98
124
  def -(other)
99
125
  if(self.fil == other.fil and self.col == other.col)
100
126
  # SELF Matrices densas
101
127
  if self.instance_of?MatrizDensa
102
128
  temp = MatrizDensa.new(self.fil, self.col, nil)
103
129
  if other.instance_of?MatrizDensa
104
- for i in (0...@fil.to_i)
105
- for j in (0...@col.to_i)
130
+ #for i in (0...@fil.to_i)
131
+ @fil.to_i.times do |i|
132
+
133
+ #for j in (0...@col.to_i)
134
+ @col.to_i.times do |j|
135
+
106
136
  temp.mat[i][j] = (self.mat[i][j]) - (other.mat[i][j])
107
137
  end
108
138
  end
109
139
  end
110
140
 
111
141
  if other.instance_of?MatrizDispersa
112
- for i in (0...@fil.to_i)
113
- for j in (0...@col.to_i)
142
+ #for i in (0...@fil.to_i)
143
+ @fil.to_i.times do |i|
144
+
145
+ #for j in (0...@col.to_i)
146
+ @col.to_i.times do |j|
147
+
114
148
  encontrado = 0
115
- for k in (0...other.posx.size)
149
+ #for k in (0...other.posx.size)
150
+ other.posx.size.times do |k|
151
+
116
152
  if (i==other.posx[k] and j==other.posy[k] and encontrado==0)
117
153
  temp.mat[i][j] = (self.mat[i][j]) - (other.valor[k])
118
154
  encontrado = 1
@@ -130,10 +166,16 @@ include Comparable
130
166
  if self.instance_of?MatrizDispersa
131
167
  if other.instance_of?MatrizDensa
132
168
  temp = MatrizDensa.new(self.fil, self.col, nil)
133
- for i in (0...@fil.to_i)
134
- for j in (0...@col.to_i)
169
+ #for i in (0...@fil.to_i)
170
+ @fil.to_i.times do |i|
171
+
172
+ #for j in (0...@col.to_i)
173
+ @col.to_i.times do |j|
174
+
135
175
  encontrado = 0
136
- for k in (0...self.posx.size.to_i)
176
+ #for k in (0...self.posx.size.to_i)
177
+ self.posx.size.times do |k|
178
+
137
179
  if (i==self.posx[k] and j==self.posy[k] and encontrado==0)
138
180
  temp.mat[i][j] = (other.mat[i][j]) - (self.valor[k])
139
181
  encontrado = 1
@@ -153,9 +195,13 @@ include Comparable
153
195
  temp.posx = self.posx
154
196
  temp.posy = self.posy
155
197
 
156
- for j in (0...other.posx.size.to_i)
198
+ #for j in (0...other.posx.size.to_i)
199
+ other.posx.size.times do |j|
200
+
157
201
  encontrado = false
158
- for k in (0...self.posx.size.to_i)
202
+ #for k in (0...self.posx.size.to_i)
203
+ self.posx.size.times do |k|
204
+
159
205
  if(other.posx[j] == temp.posx[k] and other.posy[j] == temp.posy[k])
160
206
  temp.valor[k] = temp.valor[k] - other.valor[j]
161
207
  encontrado = true
@@ -179,13 +225,15 @@ include Comparable
179
225
 
180
226
  end
181
227
 
182
-
228
+ #Clase que hereda de la clase matriz. Almacena matrices densas.
183
229
  class MatrizDensa < Matriz
184
- attr_accessor :mat
185
- def initialize(f,c,e)
230
+ #Array bidimensional que representa la matriz
231
+ attr_accessor :mat
232
+ #crea una matriz con n filas, m columnas y almacena los valores que se le pasan por parámetros
233
+ def initialize(f,c,e)
234
+
186
235
  super(f,c)
187
- @mat = Array.new(@fil.to_i){Array.new(@col.to_i)}
188
-
236
+ @mat = Array.new(@fil.to_i){Array.new(@col.to_i)} #k2
189
237
  if (e != nil)
190
238
  #Rellenamos la matriz con lo valores recibidos
191
239
  for i in (0...@fil.to_i)
@@ -195,8 +243,8 @@ attr_accessor :mat
195
243
  end
196
244
  end
197
245
  end
198
- # Metodos getter devuelve el valor de una posicion determinada
199
-
246
+
247
+ # Metodo getter que devuelve el valor de una posicion determinada
200
248
  def pos(a,b)
201
249
  @mat[a][b]
202
250
  end
@@ -205,11 +253,14 @@ attr_accessor :mat
205
253
  def to_s
206
254
  "#{@mat}"
207
255
  end
208
-
256
+
257
+ #funcion que calcula el mayor valor que se encuentra en la matriz
209
258
  def max
210
259
  m = self.mat[0][0]
211
260
  for i in (0...@fil.to_i)
212
- for j in (0...@col.to_i)
261
+ #for j in (0...@col.to_i)
262
+ @col.to_i.times do |j|
263
+
213
264
  if (self.mat[i][j] > m)
214
265
  m = self.mat[i][j]
215
266
  end
@@ -217,11 +268,13 @@ attr_accessor :mat
217
268
  end
218
269
  return m
219
270
  end
220
-
271
+
272
+ #funcion que calcula el menor valor que se encuentra en la matriz
221
273
  def min
222
274
  m = self.mat[0][0]
223
275
  for i in (0...@fil.to_i)
224
- for j in (0...@col.to_i)
276
+ #for j in (0...@col.to_i)
277
+ @col.to_i.times do |j|
225
278
  if (self.mat[i][j] < m)
226
279
  m = self.mat[i][j]
227
280
  end
@@ -230,8 +283,8 @@ attr_accessor :mat
230
283
  return m
231
284
  end
232
285
 
233
- #Operador de comparacion (Modulo comparable). se comparan por la suma de sus componentes ¡¡¡¡¡¡PONERLO EN LA CLASE MADRE!!!!!!
234
286
 
287
+ #Operador de comparacion (Modulo comparable). se comparan por la suma de sus componentes.
235
288
  def <=> (other)
236
289
  return nil unless other.is_a?MatrizDensa
237
290
  c1=0
@@ -252,9 +305,21 @@ end
252
305
 
253
306
 
254
307
 
308
+ #Clase que hereda de la clase Matriz. Almacena matrices dispersas (matrices que la mayoria de sus posiciones son nulas 0)
255
309
 
256
310
  class MatrizDispersa < Matriz
257
- attr_accessor :posx, :posy, :valor
311
+ #Almacena las filas en que se encuentra algun valor
312
+ attr_accessor :posx
313
+
314
+ #Almacena las columnas en que se encuentra algun valor
315
+ attr_accessor :posy
316
+
317
+ #Almacena los valores correspondientes
318
+ attr_accessor :valor
319
+
320
+
321
+
322
+ # se recibe el valor de filas, columnas, los dos arrays con las posiciones en que hay valores y los valores correspondientes
258
323
  def initialize(f,c,posx, posy, valor)
259
324
  super(f,c)
260
325
  @posx = posx
@@ -262,7 +327,8 @@ attr_accessor :posx, :posy, :valor
262
327
  @valor = valor
263
328
 
264
329
  end
265
-
330
+
331
+ #Mdevuelve la matriz en forma de string
266
332
  def to_s
267
333
  s=String.new
268
334
  s << "["
@@ -271,7 +337,8 @@ attr_accessor :posx, :posy, :valor
271
337
  end
272
338
  s << "]"
273
339
  end
274
-
340
+
341
+ #devuelve el mayor valor almacenado en la matriz
275
342
  def max
276
343
  m = self.valor[0]
277
344
  for i in (0...self.valor.size.to_i)
@@ -281,7 +348,8 @@ attr_accessor :posx, :posy, :valor
281
348
  end
282
349
  return m
283
350
  end
284
-
351
+
352
+ #devuelve el menor valor almacenado en la matriz
285
353
  def min
286
354
  m = self.valor[0]
287
355
  for i in (0...self.valor.size.to_i)
@@ -291,7 +359,7 @@ attr_accessor :posx, :posy, :valor
291
359
  end
292
360
  return m
293
361
  end
294
-
362
+ #Retorna el valor correspondiente a las posiciones que se le pasen como parámetros
295
363
  def pos(a,b)
296
364
  for i in (0...self.posx.size)
297
365
  if(posx[i]==a and posy[i]==b)
@@ -304,8 +372,11 @@ attr_accessor :posx, :posy, :valor
304
372
  end
305
373
 
306
374
 
307
-
308
-
375
+ #|i,j, mat1,mat2| mat2[i][j] = (mat1[i][j]) + (mat2[i][j]) return mat2
376
+
377
+
378
+ # f = Proc.new{|i,j, mat1, mat2| mat2[i][j] = (mat1[i][j]) + (mat2[i][j]) puts "#{mat2[i][j]}"}
379
+ # f.call(1,1,[[1,2],[1,2]],[[1,2],[1,2]])
309
380
 
310
381
 
311
382
 
@@ -1,3 +1,5 @@
1
+ #Modulo version
1
2
  module MatricesP9
2
- VERSION = "0.0.1"
3
+ #version
4
+ VERSION = "1.0.0"
3
5
  end
@@ -1,14 +1,17 @@
1
1
  require 'matrices_p9'
2
2
 
3
+ #expectativas para la clase Matriz y sus clase hijas ( Densas y Dispersas)
3
4
  describe Matriz do
4
5
  before :each do
5
6
  #Matrices densas
6
7
  @m1 = MatrizDensa.new(3,3,[1,2,3,4,5,6,7,8,9])
7
8
  @m2 = MatrizDensa.new(3,3,[1,2,3,4,5,6,7,8,9])
9
+ @mm1 = MatrizDensa.new(2,2,[1,1,1,1])
8
10
 
9
11
  #Matrices dispersas
10
12
  @m3 = MatrizDispersa.new(3,3,[0,1,2],[0,1,2],[1,2,3])
11
13
  @m4 = MatrizDispersa.new(3,3,[0,1,2],[0,1,2],[1,2,3])
14
+ @mm2 = MatrizDispersa.new(2,2,[0],[0],[Fraccion.new(1,2)])
12
15
 
13
16
  #Matrices densas con fracciones
14
17
  @m5 = MatrizDensa.new(2,2,[Fraccion.new(1,2),Fraccion.new(1,3),Fraccion.new(1,4),Fraccion.new(1,5)])
@@ -115,7 +118,17 @@ describe Matriz do
115
118
  end
116
119
 
117
120
  end
121
+ #Prueba de modificacion
122
+
123
+ describe "#Operaciones de suma entre matrices densas y dispersas con fracciones." do
118
124
 
125
+ it "Suma" do
126
+ (@mm1+@mm2).to_s().should eq("[[3/2, 1], [1, 1]]")
127
+
128
+ end
129
+
130
+
131
+ end
119
132
 
120
133
 
121
134
 
@@ -1,12 +1,11 @@
1
- # Pruebas unitarias de la clase matriz densa
2
1
 
3
2
  require 'fraccion'
4
3
  require 'matrices_p9'
5
4
  require "test/unit"
6
5
 
7
-
6
+ # Pruebas unitarias de la clase matriz densa
8
7
  class Test_MatrizDensa < Test::Unit::TestCase
9
-
8
+ #prueba para suma de matrices densas
10
9
  def test_1
11
10
 
12
11
  assert_equal "[[2, 4, 6], [8, 10, 12], [14, 16, 18]]", (MatrizDensa.new(3,3,[1,2,3,4,5,6,7,8,9]) + MatrizDensa.new(3,3,[1,2,3,4,5,6,7,8,9])).to_s
@@ -1,11 +1,10 @@
1
- # Pruebas unitarias de la clase matriz dispersa
2
1
  require "fraccion"
3
2
  require "matrices_p9"
4
3
  require "test/unit"
5
4
 
6
-
5
+ # Pruebas unitarias de la clase matriz dispersa
7
6
  class Test_MatrizDispersa < Test::Unit::TestCase
8
-
7
+ #Prueba con matrices dispersas
9
8
  def test_1
10
9
 
11
10
  assert_equal "[[0,0,2][1,1,4][2,2,6]]", (MatrizDispersa.new(3,3,[0,1,2],[0,1,2],[1,2,3]) + MatrizDispersa.new(3,3,[0,1,2],[0,1,2],[1,2,3])).to_s
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: matrices_p9
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-11-19 00:00:00.000000000 Z
12
+ date: 2013-11-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -42,6 +42,53 @@ files:
42
42
  - README.md
43
43
  - README.md~
44
44
  - Rakefile
45
+ - doc/Fraccion.html
46
+ - doc/Gemfile.html
47
+ - doc/Gemfile~.html
48
+ - doc/Guardfile.html
49
+ - doc/LICENSE_txt.html
50
+ - doc/MatricesP9.html
51
+ - doc/Matriz.html
52
+ - doc/MatrizDensa.html
53
+ - doc/MatrizDispersa.html
54
+ - doc/Rakefile.html
55
+ - doc/Rakefile~.html
56
+ - doc/Test_MatrizDensa.html
57
+ - doc/Test_MatrizDispersa.html
58
+ - doc/created.rid
59
+ - doc/images/brick.png
60
+ - doc/images/brick_link.png
61
+ - doc/images/bug.png
62
+ - doc/images/bullet_black.png
63
+ - doc/images/bullet_toggle_minus.png
64
+ - doc/images/bullet_toggle_plus.png
65
+ - doc/images/date.png
66
+ - doc/images/find.png
67
+ - doc/images/loadingAnimation.gif
68
+ - doc/images/macFFBgHack.png
69
+ - doc/images/package.png
70
+ - doc/images/page_green.png
71
+ - doc/images/page_white_text.png
72
+ - doc/images/page_white_width.png
73
+ - doc/images/plugin.png
74
+ - doc/images/ruby.png
75
+ - doc/images/tag_green.png
76
+ - doc/images/wrench.png
77
+ - doc/images/wrench_orange.png
78
+ - doc/images/zoom.png
79
+ - doc/index.html
80
+ - doc/js/darkfish.js
81
+ - doc/js/jquery.js
82
+ - doc/js/quicksearch.js
83
+ - doc/js/thickbox-compressed.js
84
+ - doc/lib/fraccion_rb.html
85
+ - doc/lib/matrices_p9/version_rb.html
86
+ - doc/lib/matrices_p9_rb.html
87
+ - doc/rdoc.css
88
+ - doc/spec/matrices_p9_spec_rb.html
89
+ - doc/test/tc_MatrizDensa_rb.html
90
+ - doc/test/tc_MatrizDispersa_rb.html
91
+ - doc/tmp/rspec_guard_result.html
45
92
  - lib/fraccion.rb
46
93
  - lib/matrices_p9.rb
47
94
  - lib/matrices_p9/version.rb