RubMat 2.1.5 → 2.1.6

Sign up to get free protection for your applications and to get access to all the features.
data/README.md ADDED
@@ -0,0 +1,9 @@
1
+ RubMat
2
+ ============
3
+
4
+ Docs link is http://github.com/regularlambda/RubMat/doc/index.html
5
+
6
+ Special thanks for Emirhan Aksu for his contributions
7
+ Special thanks for Martin Watson for his contributions
8
+
9
+ Works like a charm!
data/Rakefile CHANGED
@@ -8,15 +8,14 @@ require 'rake/testtask'
8
8
 
9
9
  spec = Gem::Specification.new do |s|
10
10
  s.name = 'RubMat'
11
- s.version = '2.1.5'
12
- s.has_rdoc = true
13
- s.extra_rdoc_files = ['README', 'LICENSE', 'gplv3.png', 'RubMat.png']
11
+ s.version = '2.1.6'
12
+ s.extra_rdoc_files = ['README.md', 'LICENSE', 'gplv3.png', 'RubMat.png']
14
13
  s.summary = 'Discrete Mathematics solver and Usable Library'
15
14
  s.description = s.summary
16
- s.author = 'Matthew Manahan'
15
+ s.author = 'Mahmut Bulut'
17
16
  s.email = 'scienceblock@gmail.com'
18
- # s.executables = ['your_executable_here']
19
- s.files = %w(LICENSE README Rakefile gplv3.png RubMat.png) + Dir.glob("{bin,lib,spec}/**/*")
17
+ s.executables = ['rubmat.rb']
18
+ s.files = %w(LICENSE README.md Rakefile gplv3.png RubMat.png) + Dir.glob("{bin,lib,spec}/**/*")
20
19
  s.require_path = "lib"
21
20
  s.bindir = "bin"
22
21
  s.homepage = 'http://regularlambda.github.com/RubMat'
@@ -28,14 +27,14 @@ Rake::GemPackageTask.new(spec) do |p|
28
27
  p.need_zip = true
29
28
  end
30
29
 
31
- Rake::RDocTask.new do |rdoc|
32
- files =['README', 'LICENSE', 'lib/**/*.rb', 'lib/**/*.yml']
33
- rdoc.rdoc_files.add(files)
34
- rdoc.main = "README" # page to start on
35
- rdoc.title = "RubMat Docs"
36
- rdoc.rdoc_dir = 'doc/rdoc' # rdoc output folder
37
- rdoc.options << '--line-numbers'
38
- end
30
+ #Rake::RDocTask.new do |rdoc|
31
+ # files =['README.md', 'LICENSE', 'lib/**/*.rb', 'lib/**/*.yml']
32
+ # rdoc.rdoc_files.add(files)
33
+ # rdoc.main = "README" # page to start on
34
+ # rdoc.title = "RubMat Docs"
35
+ # rdoc.rdoc_dir = 'doc/rdoc' # rdoc output folder
36
+ # rdoc.options << '--line-numbers'
37
+ #end
39
38
 
40
39
  Rake::TestTask.new do |t|
41
40
  t.test_files = FileList['test/**/*.rb']
data/bin/rubmat.rb ADDED
@@ -0,0 +1,124 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # AUTHOR: Mahmut Bulut
4
+ require 'rubygems'
5
+ require 'yaml'
6
+ require 'librbdiscrete.rb'
7
+ require 'fixnumexpand.rb'
8
+ require 'commander'
9
+ require 'help'
10
+
11
+ puts "===RubMat===
12
+ Copyright (C) <2011> <Mahmut Bulut>
13
+ This program comes with ABSOLUTELY NO WARRANTY; for details type 'help'.
14
+ This is free software, and you are welcome to redistribute it
15
+ under certain conditions; type `certain' for details."
16
+ puts ""
17
+ begin
18
+ command = ask(">=> ")
19
+ #command = commn.chomp!
20
+ # Read arguments and defines commands
21
+ # Will handle command line whitespaces
22
+
23
+ if (command == 'help')
24
+ puts help()
25
+ end
26
+ if (command == 'certain')
27
+ puts "To see certain conditions please visit http://www.gnu.org/licenses/gpl-2.0.html#SEC3"
28
+ end
29
+ if (command == 'factorial')
30
+ n = ask("Enter N value: ", Integer)
31
+ puts factorial(n)
32
+ end
33
+ if (command == 'binsearch')
34
+ begin
35
+ binary = ask("Enter array name with [ & ] suffix: ")
36
+ size = ask("Enter size of search range: ", Integer)
37
+ search_key = ask("Enter search delimiter key", Integer)
38
+ low = ask("Lower limit: ", Integer)
39
+ middle = ask("Medium limit: ", Integer)
40
+ high = ask("High limit: ", Integer)
41
+ puts binary_search(binary, size, search_key, low, middle, high)
42
+ rescue => error
43
+ puts error
44
+ end
45
+ end
46
+ if (command == 'birdseye')
47
+ n = ask("Enter workspace mass number: ", Integer)
48
+ k = ask("Enter selection mass number: ", Integer)
49
+ puts birds_eye(n, k)
50
+ end
51
+ if (command == 'combinatorial')
52
+ glb = ask("Enter global set objects number: ", Integer)
53
+ ksb = ask("Enter k-subset objects number: ", Integer)
54
+ puts combinatorial(glb, ksb)
55
+ end
56
+ if (command == 'distpres')
57
+ presnum = ask("Present number: ", Integer)
58
+ puts dist_pres(presnum)
59
+ end
60
+ if (command == 'eagleview')
61
+ m = ask("Enter m value: ", Integer)
62
+ t = ask("Enter t value: ", Integer)
63
+ puts eagle_view(m, t)
64
+ end
65
+ if (command == 'fermatlittle')
66
+ p = ans("Enter power number: ", Integer)
67
+ a = ans("Enter base number:", Integer)
68
+ puts fermat_little(p, a)
69
+ end
70
+ if (command == 'fib')
71
+ n = ans("Enter the last incremental number: ", Integer)
72
+ puts fib(n)
73
+ end
74
+ if (command == 'isprime')
75
+ raise RuntimeError.new("Have some critical issues closed to next minor version")
76
+ # nb = ask("Control number: ", Integer)
77
+ # puts is_prime(nb)
78
+ end
79
+ if (command == 'iterativefact')
80
+ begin
81
+ itrtnum = ask("Enter the factorial input: ", Integer)
82
+ throw :ball if (itrtnum >= MAX_INTEGER)
83
+ puts iterative_fact(itrtnum)
84
+ end
85
+ catch(:ball) do
86
+ raise ArgumentError.new("iterative factorial couldn't take this value's load. Terminated.")
87
+ end
88
+ end
89
+ if (command == 'sigma')
90
+ inta = ask("Enter a value: ", Integer)
91
+ intx = ask("Enter x value: ", Integer)
92
+ intb = ask("Enter b value: ", Integer)
93
+ pw = ask("Enter power value: ", Integer)
94
+ puts sigma(inta, intx, intb, pw)
95
+ end
96
+ if (command == 'stirling')
97
+ begin
98
+ strln = ask("Enter stirling procedure value: ", Integer)
99
+ throw :glass if (strln >= MAX_INTEGER)
100
+ puts stirling(strln)
101
+ end
102
+ catch(:glass) do
103
+ raise ArgumentError.new("stirling couldn't take this value's load. Terminated.")
104
+ end
105
+ end
106
+ if (command == 'subset')
107
+ gen = ask("Enter mass objects number: ", Integer)
108
+ zerosbst = agree("Include zero subset?")
109
+ puts subset(gen, zerosbst)
110
+ end
111
+ if (command == 'fibsum')
112
+ n = ask("Enter n value: ", Integer)
113
+ puts sum_of_fib(n)
114
+ end
115
+ if (command == 'twinprdx')
116
+ mass = ask("Enter mass number: ", Integer)
117
+ puts twin_prdx(mass)
118
+ end
119
+ if (command == 'uipow')
120
+ base = ask("Enter base value: ", Integer)
121
+ exp = ask("Enter power value: ", Integer)
122
+ puts ui_pow(base, exp)
123
+ end
124
+ end until(command == 'exit')
data/lib/help.rb ADDED
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env ruby
2
+ def help
3
+ puts "
4
+ Valid Commands
5
+ ===============
6
+ help Show this manpage
7
+ certain Show certain conditions page
8
+ factorial Recursive definition of factorial
9
+ 'n' is the number which will calculated in procedure
10
+ binsearch *binary => array
11
+ *size => binary array's size
12
+ *search_key => Compare string
13
+ *General values
14
+ *low => low value representation
15
+ *middle => middle value representation
16
+ *high => high value representation
17
+ birdseye Bird's Eye View Procedure
18
+ combinatorial 'glb' represents is General mass of combinatorial approach
19
+ 'klb' represents is Selection mass of combinatorial approach
20
+ distpres 'presnum' value represents Present count.
21
+ eagleview Eagle View Procedure
22
+ fermatlittle Fermat Little Theorem's Procedural Representation
23
+ fib Additive recursive definition of Fibonacci
24
+ isprime Is Prime Procedure
25
+ 'nb' is the input argument number of procedure
26
+ iterativefact Iterative factorial of procedural representation
27
+ sigma Sigma procedure's simple procedure is rely on '(ax+b)^pw'
28
+ a represented by inta;
29
+ b represented by intb;
30
+ x represented by intx;
31
+ power represented by pw.
32
+ stirling 'strln' is the stirling number in stirling formula
33
+ subset 'zerosbst' variable, decision mechanism of zero subset is included or not included
34
+ 'gen' is the general mass elements(objects) number
35
+ fibsum Fibonacci Sum Procedure
36
+ twinprdx Twin Paradox Lemma Solution Procedure
37
+ Selection mass represented by 'mass' value
38
+ uipow Non-balanced power calculation procedure
39
+ "
40
+ end
data/lib/librbdiscrete.rb CHANGED
@@ -5,6 +5,7 @@ require 'yaml'
5
5
 
6
6
  EVALUE = 2.718281828459045235360287471352662497757247093
7
7
  PIVALUE = 3.141592653589793238462643383279502884197169399
8
+ MAX_INTEGER = 1073741823
8
9
 
9
10
  err = "An error occured during during procedure"
10
11
 
@@ -20,7 +21,7 @@ factorial(n)
20
21
  Iterative factorial definition
21
22
  =end
22
23
  def factorial( n )
23
- if n <= 1
24
+ if (n <= 1)
24
25
  return 1
25
26
  else
26
27
  return n*factorial( n-1 ).to_i
@@ -78,21 +79,19 @@ Subset Procedure v1.1.3
78
79
  = SYNOPSIS
79
80
  subset(gen, zerosbst)
80
81
  'zerosbst' variable, decision mechanism of zero subset is included or not included
81
- 'gen' is the
82
+ 'gen' is the general mass elements(objects) number
82
83
 
83
84
  = DESCRIPTION
84
85
  Calculate subset number of input arguments
85
86
  =end
86
87
  def subset(gen, zerosbst)
87
88
  main = case (zerosbst)
88
- when zerosbst == 'y'
89
+ when zerosbst == true
89
90
  rslt = ui_pow(2, gen) - 1
90
91
  return rslt
91
- when zerosbst == 'n'
92
+ when zerosbst == false
92
93
  rslt = ui_pow(2, gen)
93
94
  return rslt
94
- else
95
- puts "Enter 'y' or 'n' char"
96
95
  end
97
96
  return main
98
97
  end
@@ -247,7 +246,7 @@ Additive recursive definition of Fibonacci
247
246
  def fib(n)
248
247
  if (n <= 1)
249
248
  return n;
250
- elsif
249
+ else
251
250
  return fib(n-1)+fib(n-2);
252
251
  end
253
252
  end
@@ -286,11 +285,11 @@ end
286
285
  Binary Search Spec. Procedure v1.5.9
287
286
 
288
287
  = SYNOPSIS
289
- binary_search(binary, size, searchKey, low, middle, high)
288
+ binary_search(binary, size, search_key, low, middle, high)
290
289
  == Binary search
291
290
  *binary => array
292
291
  *size => binary array's size
293
- *searchKey => Compare string
292
+ *search_key => Compare string
294
293
  *General values
295
294
  *low => low value representation
296
295
  *middle => middle value representation
@@ -299,13 +298,13 @@ binary_search(binary, size, searchKey, low, middle, high)
299
298
  = DESCRIPTION
300
299
  Binary search
301
300
  =end
302
- def binary_search(binary, size, searchKey, low, middle, high)
301
+ def binary_search(binary, size, search_key, low, middle, high)
303
302
  while (low <= high)
304
303
  middle=(low+high)/2;
305
304
  print_row(binary, size, low, middle, high);
306
- if (searchKey == binary[middle])
305
+ if (search_key == binary[middle])
307
306
  return middle;
308
- elsif (searchKey <= binary[middle])
307
+ elsif (search_key <= binary[middle])
309
308
  high=middle-1
310
309
  else
311
310
  low=middle+1
@@ -351,7 +350,7 @@ sum_of_fib(n)
351
350
  Basic reps
352
351
 
353
352
  = DESCRIPTION
354
- Bird's Eye View Procedure
353
+ Fibonacci Sum Procedure
355
354
  =end
356
355
  def sum_of_fib(n)
357
356
  return fib(n+2)-1;
@@ -375,18 +374,18 @@ Is Prime Procedure
375
374
  =end
376
375
  def is_prime(nb)
377
376
  test = count = 0
378
- if (nb != 1)
377
+ if (nb == 1)
379
378
  return -1
380
379
  end
381
380
  for i in 2..nb-1
382
381
  count++
383
382
  if (nb % i == 0)
384
- test = 1
383
+ test = false
385
384
  end
386
385
  end
387
386
  if (!test)
388
387
  return 1
389
- elsif
388
+ else
390
389
  return 0
391
390
  end
392
391
  end
@@ -404,9 +403,34 @@ Fermat Little Theorem's Procedural Representation
404
403
  (('WARNING'))((-Modular representation maybe couldn't evaluated-))
405
404
  =end
406
405
  def fermat_little(p, a)
406
+ begin
407
407
  if(p%(ui_pow(a, (p-1))-1) == 0)
408
408
  return 0
409
- elsif
409
+ else
410
410
  return 1
411
411
  end
412
+ end
413
+ rescue
414
+ begin
415
+ ArgumentError.new("High load. Terminated.")
416
+ end
417
+ end
418
+
419
+ =begin
420
+ = NAME
421
+ to_bool v.0.0.1
422
+
423
+ =SYNOPSIS
424
+ to_bool(void)
425
+ =DESCRIPTION
426
+ to bool is convert integer valus to string boolean
427
+ =end
428
+ def to_bool
429
+ if (self.to_bool == 1)
430
+ puts "TRUE"
431
+ elsif (self.to_bool == 0)
432
+ puts "FALSE"
433
+ elsif (self.to_bool == -1)
434
+ puts "NaN"
435
+ end
412
436
  end
data/lib/rubmat.rb ADDED
@@ -0,0 +1,124 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # AUTHOR: Mahmut Bulut
4
+ require 'rubygems'
5
+ require 'yaml'
6
+ require 'librbdiscrete.rb'
7
+ require 'fixnumexpand.rb'
8
+ require 'commander'
9
+ require 'help'
10
+
11
+ puts "===RubMat===
12
+ Copyright (C) <2011> <Mahmut Bulut>
13
+ This program comes with ABSOLUTELY NO WARRANTY; for details type 'help'.
14
+ This is free software, and you are welcome to redistribute it
15
+ under certain conditions; type `certain' for details."
16
+ puts ""
17
+ begin
18
+ command = ask(">=> ")
19
+ #command = commn.chomp!
20
+ # Read arguments and defines commands
21
+ # Will handle command line whitespaces
22
+
23
+ if (command == 'help')
24
+ puts help()
25
+ end
26
+ if (command == 'certain')
27
+ puts "To see certain conditions please visit http://www.gnu.org/licenses/gpl-2.0.html#SEC3"
28
+ end
29
+ if (command == 'factorial')
30
+ n = ask("Enter N value: ", Integer)
31
+ puts factorial(n)
32
+ end
33
+ if (command == 'binsearch')
34
+ begin
35
+ binary = ask("Enter array name with [ & ] suffix: ")
36
+ size = ask("Enter size of search range: ", Integer)
37
+ search_key = ask("Enter search delimiter key", Integer)
38
+ low = ask("Lower limit: ", Integer)
39
+ middle = ask("Medium limit: ", Integer)
40
+ high = ask("High limit: ", Integer)
41
+ puts binary_search(binary, size, search_key, low, middle, high)
42
+ rescue => error
43
+ puts error
44
+ end
45
+ end
46
+ if (command == 'birdseye')
47
+ n = ask("Enter workspace mass number: ", Integer)
48
+ k = ask("Enter selection mass number: ", Integer)
49
+ puts birds_eye(n, k)
50
+ end
51
+ if (command == 'combinatorial')
52
+ glb = ask("Enter global set objects number: ", Integer)
53
+ ksb = ask("Enter k-subset objects number: ", Integer)
54
+ puts combinatorial(glb, ksb)
55
+ end
56
+ if (command == 'distpres')
57
+ presnum = ask("Present number: ", Integer)
58
+ puts dist_pres(presnum)
59
+ end
60
+ if (command == 'eagleview')
61
+ m = ask("Enter m value: ", Integer)
62
+ t = ask("Enter t value: ", Integer)
63
+ puts eagle_view(m, t)
64
+ end
65
+ if (command == 'fermatlittle')
66
+ p = ans("Enter power number: ", Integer)
67
+ a = ans("Enter base number:", Integer)
68
+ puts fermat_little(p, a)
69
+ end
70
+ if (command == 'fib')
71
+ n = ans("Enter the last incremental number: ", Integer)
72
+ puts fib(n)
73
+ end
74
+ if (command == 'isprime')
75
+ raise RuntimeError.new("Have some critical issues closed to next minor version")
76
+ # nb = ask("Control number: ", Integer)
77
+ # puts is_prime(nb)
78
+ end
79
+ if (command == 'iterativefact')
80
+ begin
81
+ itrtnum = ask("Enter the factorial input: ", Integer)
82
+ throw :ball if (itrtnum >= MAX_INTEGER)
83
+ puts iterative_fact(itrtnum)
84
+ end
85
+ catch(:ball) do
86
+ raise ArgumentError.new("iterative factorial couldn't take this value's load. Terminated.")
87
+ end
88
+ end
89
+ if (command == 'sigma')
90
+ inta = ask("Enter a value: ", Integer)
91
+ intx = ask("Enter x value: ", Integer)
92
+ intb = ask("Enter b value: ", Integer)
93
+ pw = ask("Enter power value: ", Integer)
94
+ puts sigma(inta, intx, intb, pw)
95
+ end
96
+ if (command == 'stirling')
97
+ begin
98
+ strln = ask("Enter stirling procedure value: ", Integer)
99
+ throw :glass if (strln >= MAX_INTEGER)
100
+ puts stirling(strln)
101
+ end
102
+ catch(:glass) do
103
+ raise ArgumentError.new("stirling couldn't take this value's load. Terminated.")
104
+ end
105
+ end
106
+ if (command == 'subset')
107
+ gen = ask("Enter mass objects number: ", Integer)
108
+ zerosbst = agree("Include zero subset?")
109
+ puts subset(gen, zerosbst)
110
+ end
111
+ if (command == 'fibsum')
112
+ n = ask("Enter n value: ", Integer)
113
+ puts sum_of_fib(n)
114
+ end
115
+ if (command == 'twinprdx')
116
+ mass = ask("Enter mass number: ", Integer)
117
+ puts twin_prdx(mass)
118
+ end
119
+ if (command == 'uipow')
120
+ base = ask("Enter base value: ", Integer)
121
+ exp = ask("Enter power value: ", Integer)
122
+ puts ui_pow(base, exp)
123
+ end
124
+ end until(command == 'exit')
data/lib/statics.yml CHANGED
@@ -1,4 +1,4 @@
1
- ## AUTHOR : Matthew Manahan
1
+ ## AUTHOR : Mahmut Bulut
2
2
  ---
3
3
  EVALUE: 2.718281828459045235360287471352662497757247093
4
4
  PIVALUE: 3.141592653589793238462643383279502884197169399
metadata CHANGED
@@ -1,43 +1,45 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: RubMat
3
3
  version: !ruby/object:Gem::Version
4
- hash: 1
4
+ hash: 7
5
5
  prerelease:
6
6
  segments:
7
7
  - 2
8
8
  - 1
9
- - 5
10
- version: 2.1.5
9
+ - 6
10
+ version: 2.1.6
11
11
  platform: ruby
12
12
  authors:
13
- - Matthew Manahan
13
+ - Mahmut Bulut
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-06-20 00:00:00 Z
18
+ date: 2011-07-08 00:00:00 Z
19
19
  dependencies: []
20
20
 
21
21
  description: Discrete Mathematics solver and Usable Library
22
22
  email: scienceblock@gmail.com
23
- executables: []
24
-
23
+ executables:
24
+ - rubmat.rb
25
25
  extensions: []
26
26
 
27
27
  extra_rdoc_files:
28
- - README
28
+ - README.md
29
29
  - LICENSE
30
30
  - gplv3.png
31
31
  - RubMat.png
32
32
  files:
33
33
  - LICENSE
34
- - README
34
+ - README.md
35
35
  - Rakefile
36
36
  - gplv3.png
37
37
  - RubMat.png
38
+ - bin/rubmat.rb
38
39
  - lib/fixnumexpand.rb
40
+ - lib/help.rb
39
41
  - lib/librbdiscrete.rb
40
- - lib/main.rb
42
+ - lib/rubmat.rb
41
43
  - lib/statics.yml
42
44
  homepage: http://regularlambda.github.com/RubMat
43
45
  licenses: []
data/README DELETED
@@ -1,4 +0,0 @@
1
- == RubMat ==
2
- ============
3
-
4
- DOCUMENTATION OF PROJECT
data/lib/main.rb DELETED
@@ -1,13 +0,0 @@
1
- #!/usr/bin/ruby
2
-
3
- # AUTHOR: Matthew Manahan
4
-
5
- require 'yaml'
6
- require 'librbdiscrete.rb'
7
- require 'fixnumexpand.rb'
8
-
9
- puts "===RubMat===
10
- Copyright (C) <2011> <Matthew Manahan>
11
- This program comes with ABSOLUTELY NO WARRANTY; for details type 'help'.
12
- This is free software, and you are welcome to redistribute it
13
- under certain conditions; type `certain' for details."