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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/classes.rb +165 -0
  3. data/lib/gh_task_hw5.rb +1 -1
  4. metadata +2 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5644c5e8cf7d14519d308cc983d45cfa88fb9a7f3f4fc386cbf25c44ee723da3
4
- data.tar.gz: ed57fb6916ad1d139e1519d5d533a1f84b77eb06cd30b936a067c74172d20e46
3
+ metadata.gz: 8d29793cb74f6925f19849a58f5c234c29dccbf4fb39ea83c4182dbb1da865b5
4
+ data.tar.gz: d1d4355fdbbc5b19333969d403b62e31433491f1dc944b8b4955645df49bdf46
5
5
  SHA512:
6
- metadata.gz: d5acdabd774edd4868667aeea41cba30b2fa02d205b04300917b82c62fc2696c06d96ffa258c798a45b7d8c2e84957ea7729956e49330e100878efab5cb4f570
7
- data.tar.gz: 61712e842423c5cc3b60814227a264a5c778c0c056765126db15a516be972cdbb3d16ae2eec448aa1ff1e87ed79b2bd0f2057bc5b990664b4f0cb6c6b2eb3062
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
@@ -1,5 +1,5 @@
1
1
  def tasks
2
- require './classes'
2
+ # require './classes'
3
3
  require 'gh_gem_hw5_test_suite'
4
4
 
5
5
  # -----------------------------------------------------------------
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: 2.0.0
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: