gh_task_hw5 2.0.0 → 3.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.
- checksums.yaml +4 -4
- data/lib/classes.rb +165 -0
- data/lib/gh_task_hw5.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8d29793cb74f6925f19849a58f5c234c29dccbf4fb39ea83c4182dbb1da865b5
|
4
|
+
data.tar.gz: d1d4355fdbbc5b19333969d403b62e31433491f1dc944b8b4955645df49bdf46
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0fe20ee2150d63767e2dbd103e26bd4f7911fc9cd1dcc9c497a57851397ba32616c3de06b008c08b0bae2e34b80eb4b56730da5833532a7484c2b177188567d5
|
7
|
+
data.tar.gz: 9ea974ab5ffacd64edbba8b16a1b55bfe2fbffef33e0628961f3c877ab150f5d44e800eafa41aa36987bdfa1081cdacc112149e9ad962feb4c08326afae9bfc2
|
data/lib/classes.rb
ADDED
@@ -0,0 +1,165 @@
|
|
1
|
+
require 'colorize'
|
2
|
+
require 'pry'
|
3
|
+
|
4
|
+
class Test
|
5
|
+
def initalizer(actual, expected, comment)
|
6
|
+
@actual = actual
|
7
|
+
@expected = expected
|
8
|
+
@comment = comment
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.result(expected, actual, comment)
|
12
|
+
if actual == expected
|
13
|
+
puts "Data comparison PASSED in #{comment} task.".green
|
14
|
+
else
|
15
|
+
puts "Data comparison FAILED in #{comment} task.".red
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
class Cube
|
21
|
+
def self.volume(edge)
|
22
|
+
edge**3
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.cube_plane_square(edge)
|
26
|
+
edge**2
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
class Average
|
31
|
+
def self.count(numbers)
|
32
|
+
summury_elements_array = numbers.inject { |sum, n| sum + n }.to_f
|
33
|
+
summury_elements_array / numbers.length.to_f
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
class GeometricMean
|
38
|
+
def self.count(numbers)
|
39
|
+
multiple = numbers.inject(1) { |elem, n| elem * n }
|
40
|
+
result = Math.exp(Math.log(multiple) / numbers.length.to_f)
|
41
|
+
result.round(4)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
class GeometricMeanModule
|
46
|
+
def self.count(numbers)
|
47
|
+
multiple = numbers.inject(1) { |elem, n| elem.abs * n.abs }
|
48
|
+
result = Math.exp(Math.log(multiple) / numbers.length.to_f)
|
49
|
+
result.round(4)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
class Triangle
|
54
|
+
# angle must be hash
|
55
|
+
# side must be hash
|
56
|
+
# triangle sides must have key a:, b:, c:
|
57
|
+
# side a: is hypotenuse
|
58
|
+
def initialize(angle = 0, side = 0)
|
59
|
+
@angle = angle
|
60
|
+
@side = side
|
61
|
+
end
|
62
|
+
|
63
|
+
def datatype_error
|
64
|
+
raise 'Variable @angle must be a Hash!!!' unless @angle.is_a?(Hash)
|
65
|
+
end
|
66
|
+
|
67
|
+
def angle_value_90
|
68
|
+
@angle.value?(90)
|
69
|
+
end
|
70
|
+
|
71
|
+
def angle_value_60
|
72
|
+
@angle.value?(60)
|
73
|
+
end
|
74
|
+
|
75
|
+
def same_sides
|
76
|
+
@side[:b] == @side[:c]
|
77
|
+
end
|
78
|
+
|
79
|
+
def differ_sides
|
80
|
+
@side[:b] != @side[:c]
|
81
|
+
end
|
82
|
+
|
83
|
+
def angle_value_90_same_sides
|
84
|
+
angle_value_90 && same_sides
|
85
|
+
end
|
86
|
+
|
87
|
+
def angle_value_90_differ_sides
|
88
|
+
angle_value_90 && differ_sides
|
89
|
+
end
|
90
|
+
|
91
|
+
def angle_value_90_angle_value_60_differ_sides
|
92
|
+
angle_value_90 && angle_value_60 && differ_sides
|
93
|
+
end
|
94
|
+
|
95
|
+
def angle_value_60_same_sides
|
96
|
+
angle_value_60 && same_sides
|
97
|
+
end
|
98
|
+
|
99
|
+
def angle_value_60_differ_sides
|
100
|
+
angle_value_60 && differ_sides
|
101
|
+
end
|
102
|
+
|
103
|
+
def type_definer
|
104
|
+
datatype_error
|
105
|
+
if angle_value_90_same_sides
|
106
|
+
'angle_90_same_cathetus'
|
107
|
+
elsif angle_value_90_differ_sides
|
108
|
+
'Triangle_90_differ_cathetus'
|
109
|
+
elsif angle_value_90_angle_value_60_differ_sides
|
110
|
+
'Triangle_90_differ_cathetus'
|
111
|
+
elsif angle_value_60_same_sides
|
112
|
+
'Right triangle'
|
113
|
+
elsif angle_value_60_differ_sides
|
114
|
+
'Various side triangle 60'
|
115
|
+
else
|
116
|
+
'Various side triangle'
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
def square
|
121
|
+
case type_definer
|
122
|
+
when 'Triangle_90_differ_cathetus'
|
123
|
+
(@side[:b] * @side[:c] / 2).round(4)
|
124
|
+
when 'Right triangle'
|
125
|
+
(0.5 * @side[:a] * height).round(4)
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
def radius_circle_inside_triangle
|
130
|
+
(square / (perimeter / 2)).round(4)
|
131
|
+
end
|
132
|
+
|
133
|
+
def hypotenuse
|
134
|
+
Math.sqrt(@side.values.max**2 + @side.values.min**2).round(4)
|
135
|
+
end
|
136
|
+
|
137
|
+
def cathetus
|
138
|
+
hypotenuse = @side.values.max
|
139
|
+
cathetus = @side.values.min
|
140
|
+
Math.sqrt(hypotenuse**2 - cathetus**2).round(4)
|
141
|
+
end
|
142
|
+
|
143
|
+
def perimeter
|
144
|
+
@side.values.inject { |sum, n| sum + n }.to_f.round(4)
|
145
|
+
end
|
146
|
+
|
147
|
+
def height
|
148
|
+
small_kathetus = @side[:a].to_f / 2.to_f
|
149
|
+
Math.sqrt(@side[:a]**2.to_f - small_kathetus**2).round(4)
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
class Circle
|
154
|
+
def initialize(circle_length)
|
155
|
+
@circle_length = circle_length
|
156
|
+
end
|
157
|
+
|
158
|
+
def radius_by_length
|
159
|
+
@circle_length / (2 * 3.14)
|
160
|
+
end
|
161
|
+
|
162
|
+
def square
|
163
|
+
((radius_by_length**2) * 3.14).round(4)
|
164
|
+
end
|
165
|
+
end
|
data/lib/gh_task_hw5.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gh_task_hw5
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nick Quaranto
|
@@ -44,6 +44,7 @@ executables: []
|
|
44
44
|
extensions: []
|
45
45
|
extra_rdoc_files: []
|
46
46
|
files:
|
47
|
+
- lib/classes.rb
|
47
48
|
- lib/gh_task_hw5.rb
|
48
49
|
homepage: http://rubygems.org/gems/gh_task_hw5
|
49
50
|
licenses:
|