math_wild 0.0.2

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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/math_wild.rb +155 -0
  3. metadata +43 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 128223a5ca521d2dfcc53722f9dc0736021439889b883cae584ff211678cf9aa
4
+ data.tar.gz: d30667a1a074de4d3487bdaebd0626d145bd5178d0e6740b7e728800fc04a2c2
5
+ SHA512:
6
+ metadata.gz: 99d9b99c64e3f4c038d8c4cd989d78be13e79eef1c593c53bbcfa034dcc1ac2378e48c2d270c15be5b67a03f19be1e9ab89a962e5acdfef6dcfa496e7fe93bfc
7
+ data.tar.gz: 4f0a05fcdaada9a821f1c3340e09e89a8f18c37002910dc686bd857fceedb79d9b33dfe7ff230bb4335eccb6de137acc38994037034812184ce7a2355a1f52f2
data/lib/math_wild.rb ADDED
@@ -0,0 +1,155 @@
1
+ # !/usr/bin/env ruby
2
+
3
+ # collection of Aritmethic dunctions
4
+ class MathWild
5
+ # class aux functions
6
+ def initialize
7
+ self
8
+ end
9
+
10
+ class << self
11
+ # covert string into a number
12
+ def to_num(arg)
13
+ return arg.to_f if arg.to_f.is_a?(Float)
14
+ end
15
+
16
+ # verify if an argument is a number
17
+ # return true if is a number or false if not
18
+ def number?(arg)
19
+ arg.is_a?(Integer) || arg.is_a?(Float)
20
+ end
21
+
22
+ # verify if an array only has numbers
23
+ def arr_number?(args)
24
+ args.each do |arg|
25
+ return false unless number?(arg)
26
+ end
27
+ true
28
+ end
29
+
30
+ # sum
31
+ # simple sum function
32
+ def sum(*args)
33
+ result = 0
34
+ args.each do |element|
35
+ return 0 unless number?(element)
36
+
37
+ result += element
38
+ end
39
+ result
40
+ end
41
+
42
+ # to sum a array of numbers
43
+ def sum_arr(args)
44
+ return 0 unless arr_number?(args)
45
+
46
+ result = 0
47
+ args.each do |element|
48
+ return 0 unless number? element
49
+
50
+ result += element
51
+ end
52
+ result
53
+ end
54
+
55
+ #to subtract
56
+ def sub(*args)
57
+ result = args.first
58
+ args[1..].each do |element|
59
+ return 0 unless number?(element)
60
+
61
+ result -= element
62
+ end
63
+ result
64
+ end
65
+
66
+ def sub_arr(args)
67
+ return 0 unless arr_number?(args)
68
+
69
+ result = args.first
70
+ args[1..].each do |element|
71
+ return 0 unless number? element
72
+
73
+ result -= element
74
+ end
75
+ result
76
+ end
77
+
78
+ #to multiply
79
+ def mul(*args)
80
+ result = args.first
81
+ args[1..].each do |element|
82
+ return 0 unless number?(element)
83
+
84
+ result *= element
85
+ end
86
+ result
87
+ end
88
+
89
+ def mul_arr(args)
90
+ return 0 unless arr_number?(args)
91
+
92
+ result = args.first
93
+ args[1..].each do |element|
94
+ return 0 unless number? element
95
+
96
+ result *= element
97
+ end
98
+ result
99
+ end
100
+
101
+ # to devide
102
+ # todo: improve it
103
+ def dev(*args)
104
+ result = args.first
105
+ args[1..].each do |element|
106
+ return 0 unless number?(element) && element != 0
107
+ result /= element
108
+ end
109
+ result
110
+ end
111
+ def dev_arr(args)
112
+ return 0 unless arr_number?(args)
113
+
114
+ result = args.first
115
+ args[1..].each do |element|
116
+ return 0 unless number?(element) && element != 0
117
+ result /= element
118
+ end
119
+ result
120
+ end
121
+
122
+
123
+
124
+
125
+ # forced sum
126
+ # try to sum even with an string or array and ignore if is not possible to convert
127
+ def force_sum(*args)
128
+ result = 0
129
+ args.each do |element|
130
+ if element.is_a?(Array)
131
+ element = sum_arr(element)
132
+ else
133
+ element = to_num(element)
134
+ return 0 unless number?(element)
135
+ end
136
+ result += element
137
+ end
138
+ result
139
+ end
140
+
141
+ def force_sub(*args)
142
+ result = args.first
143
+ args[1..].each do |element|
144
+ if element.is_a?(Array)
145
+ element = sum_arr(element)
146
+ else
147
+ element = to_num(element)
148
+ return 0 unless number?(element)
149
+ end
150
+ result -= element
151
+ end
152
+ result
153
+ end
154
+ end
155
+ end
metadata ADDED
@@ -0,0 +1,43 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: math_wild
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Wilder 'W1ldr' Ribeiro
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-03-14 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A study collection of function to help simple math
14
+ email: dewillribeiro@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/math_wild.rb
20
+ homepage: https://rubygems.org/gems/**
21
+ licenses:
22
+ - MIT
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubygems_version: 3.3.25
40
+ signing_key:
41
+ specification_version: 4
42
+ summary: Math collection
43
+ test_files: []