math_tasker 0.1.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 +7 -0
- data/.gitignore +8 -0
- data/Gemfile +8 -0
- data/README.md +48 -0
- data/Rakefile +2 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/conditions.rb +103 -0
- data/lib/tasks.rb +401 -0
- data/lib/tasks/version.rb +3 -0
- data/math_tasker.gemspec +37 -0
- data/tasks-0.1.0.gem +0 -0
- metadata +97 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: b03702251b1d8a0ecdf07fb194aa0f26443ae2416330882d559c23e1ba3fd86a
|
4
|
+
data.tar.gz: af8148e39a44326fe5de6a4d9a037af23a47aede754b95ea04c3836f62f604c0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: fd3c3eca44fbcc5f3f5a03d441a4ffea44847ae3ecfdd05d03dc5d90d9c4a2ae724fbab3bc2db1acb26e84167628c85a711a9b394657098d500c7292454e8e2f
|
7
|
+
data.tar.gz: 130fe40a4b5fbeaea68f63379a2661bc04117470a264178deb593a79e8c658efde2f50be9bc1b7cd51fdb6216c5d15c98e59850cb570b53393966070ee6e677e
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
# Tasks
|
2
|
+
|
3
|
+
Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/tasks`. To experiment with that code, run `bin/console` for an interactive prompt.
|
4
|
+
|
5
|
+
TODO: Delete this and the text above, and describe your gem
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
Add this line to your application's Gemfile:
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
gem 'tasks'
|
13
|
+
```
|
14
|
+
|
15
|
+
And then execute:
|
16
|
+
|
17
|
+
$ bundle
|
18
|
+
|
19
|
+
Or install it yourself as:
|
20
|
+
|
21
|
+
$ gem install tasks
|
22
|
+
|
23
|
+
## Usage
|
24
|
+
|
25
|
+
Use class MathExercises to solve tasks.
|
26
|
+
Use .conditions method to show the conditions of task
|
27
|
+
Use .task<number> methods to solve tasks
|
28
|
+
|
29
|
+
Example:
|
30
|
+
MathExercises.conditions(number: 1) - conditions of task 1 is shown up
|
31
|
+
MathExercises.task1(a: 1, b: 2) - task 1 is is solved with input (a: 1, b: 2)
|
32
|
+
## Development
|
33
|
+
|
34
|
+
After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
35
|
+
|
36
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
37
|
+
|
38
|
+
## Contributing
|
39
|
+
|
40
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/tasks. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
41
|
+
|
42
|
+
## License
|
43
|
+
|
44
|
+
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
45
|
+
|
46
|
+
## Code of Conduct
|
47
|
+
|
48
|
+
Everyone interacting in the Tasks project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/tasks/blob/master/CODE_OF_CONDUCT.md).
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "tasks"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
data/lib/conditions.rb
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
# this const is used to keep conditions of tasks
|
2
|
+
CONDITIONS = { 1 => "Даны два действительных числа a и b. Получить их сумму, разность и произведение.",
|
3
|
+
2 => "Даны действительные числа x и y. Получить\n
|
4
|
+
x − y\n
|
5
|
+
1 + xy",
|
6
|
+
3 => "Дана длина ребра куба. Найти объем куба и площадь боковой поверхности.",
|
7
|
+
4 => "Даны два действительных положительных числа. Найти\n
|
8
|
+
среднее арифметическое и среднее геометрическое этих чисел.",
|
9
|
+
5 => "Даны два действительных числа. Найти среднее\n
|
10
|
+
арифметическое этих чисел и среднее геометрическое их модулей.",
|
11
|
+
6 => "Даны катеты прямоугольного треугольника.\n
|
12
|
+
Найти его гипотенузу и площадь.",
|
13
|
+
8 => "Определить периметр правильного n -угольника, описанного\n
|
14
|
+
около окружности радиуса r.",
|
15
|
+
9 => "Три сопротивления R1, R2, R3 соединены паралельно. Найти сопротивление соединения.",
|
16
|
+
10 => "Определить время падения камня на поверхность земли с высоты h.",
|
17
|
+
12 => "Дана сторона равностороннего треугольника. Найти площадь этого треугольника.",
|
18
|
+
13 => "Вычислить период колебания маятника длины l",
|
19
|
+
15 => "Даны гипотенуза и катет прямоугольного треугольника.\n
|
20
|
+
Найти второй катет и радиус вписанной окружности.",
|
21
|
+
16 => "Известна длина окружности. Найти площадь круга,
|
22
|
+
ограниченного этой окружностью.",
|
23
|
+
17 => "Найти площадь кольца, внутренний радиус которого равен 20,\n
|
24
|
+
а внешний – заданному числу r (r>20).",
|
25
|
+
24 => "Вычислить расстояние между двумя точками с
|
26
|
+
координатами x 1 , y 1 и x 2 , y 2 .",
|
27
|
+
25 => "Треугольник задан координатами своих вершин. Найти:\n
|
28
|
+
а) периметр треугольника;\n
|
29
|
+
б) площадь треугольника.",
|
30
|
+
28 => "Дано действительное число х. Не пользуясь никакими\n
|
31
|
+
другими арифметическими операциями, кроме умножения, сложения и\n
|
32
|
+
вычитания, вычислить\n
|
33
|
+
2x^4 − 3x^3 + 4x^2 − 5x + 6 .\n
|
34
|
+
Разрешается использовать не более четырех умножений и четырех сложений и вычитаний.",
|
35
|
+
33 => "Даны действительные числа х, у. Получить:\n
|
36
|
+
а) max (x, y);\n
|
37
|
+
б) min (x, y);\n
|
38
|
+
в) max (x, y) , min (x, y).",
|
39
|
+
34 => "Даны действительные числа x, y, z. Получить:\n
|
40
|
+
а) max (x, y, z);\n
|
41
|
+
б) min (x, y, z), max(x, y, z).",
|
42
|
+
35 => "Даны действительные числа x, y, z. Вычислить:\n
|
43
|
+
а) max (x + y + z, xyz);\n
|
44
|
+
б) min**2 (x + y + z/2, xyz) +1.",
|
45
|
+
36 => "Дано действительные числа a, b, c. Проверить, выполняются ли неравенства a<b<c.",
|
46
|
+
37 => "Даны действительные числа a, b, c. Удвоить эти числа, если\n
|
47
|
+
a ≥ b ≥ c , и заменить их абсолютными значениями, если это не так.",
|
48
|
+
39 => "Даны два действительных числа. Вывести первое число,\n
|
49
|
+
если оно больше второго, и оба числа, если это не так.",
|
50
|
+
40 => "Даны два действительных числа. Заменить первое число\n
|
51
|
+
нулем, если оно меньше или равно второму, и оставить числа без\n
|
52
|
+
изменения в противном случае.",
|
53
|
+
41 => "Дано три действительных числа. Выбрать из них те, которые принадлежат интервалу (1, 3).",
|
54
|
+
42 => "Даны действительные числа x, y (x ≠ y). Меньшее из этих\n
|
55
|
+
двух чисел заменить их полусуммой, а большее – их удвоенным произведением.",
|
56
|
+
43 => "Даны три действительных числа. Возвести в квадрат те из них, значения которых неотрицательны.",
|
57
|
+
55 => "Даны действительные положительные числа a , b , c , d .
|
58
|
+
Выяснить, можно ли прямоугольник со сторонами a , b уместить\n
|
59
|
+
внутри прямоугольника со сторонами c , d так, чтобы каждая из сторон\n
|
60
|
+
одного прямоугольника была параллельна или перпендикулярна\n
|
61
|
+
каждой стороне второго прямоугольника.",
|
62
|
+
62 => "Определить, является ли данное целое число четным.",
|
63
|
+
64 => "Дано натуральное число n (n>99). Определить число сотен в нем.",
|
64
|
+
65 => "Дано натуральное число n (n>99). Выяснить, верно ли, что n^2 равно кубу суммы цифр числа n",
|
65
|
+
73 => "Даны целые числа k, l. Если числа не равны, то заменить\n
|
66
|
+
каждое из них одним и тем же числом, равным большему из исходных,\n
|
67
|
+
а если равны, то заменить числа нулями.",
|
68
|
+
75 => "Доказать, что любую целочисленную денежную сумму,\n
|
69
|
+
большую 7 руб., можно выплатить без сдачи трешками и пятерками.",
|
70
|
+
77 => "Дано натуральное число n. Вычислить:\n
|
71
|
+
a) 2^n ;\n
|
72
|
+
б) n!;",
|
73
|
+
87 => "Даны натуральное n, m. Получить сумму m последних цифр числа n.",
|
74
|
+
107 => "Дано целое число m > 1. Получить наибольшее целое k, при котором 4^k < m .",
|
75
|
+
108 => "Дано натуральное число n. Получить наименьшее число вида 2^r , превосходящее n",
|
76
|
+
140 => "Вычислить значение выражения\n
|
77
|
+
3 a + 4\n
|
78
|
+
a − 5 a − 9 для а = 1, 2, ..., 100",
|
79
|
+
148 => "Получить таблицу температур по Цельсию от 0 до 100\n
|
80
|
+
градусов и их эквивалентов по шкале Фаренгейта, используя для\n
|
81
|
+
перевода формулу",
|
82
|
+
182 => "Даны натуральное число n , целые числа a 1 , ... , a n . Найти\n
|
83
|
+
количество и сумму тех членов данной последовательности, которые\n
|
84
|
+
делятся на 5 и не делятся на 7.",
|
85
|
+
235 => "Даны натуральные числа n и m. Получить (m ! + n !)/( m + n )!",
|
86
|
+
251 => "дана строка символов; подсчитать, сколько раз среди символов строки встречается буква x",
|
87
|
+
323 => "Дано натуральное число n. Получить все натуральные числа, меньшие n и взаимно простые с ним.",
|
88
|
+
327 => "Даны натуральные числа a, b (a ≤ b).\n
|
89
|
+
Получить все простые числа p, удовлетворяющие неравенствам a ≤ p ≤ b.",
|
90
|
+
328 => "Найти 100 первых простых чисел.",
|
91
|
+
606 => "Даны действительные положительные числа a, b, c, d.\n
|
92
|
+
Выяснить, можно ли построить четырехугольник с такими длинами сторон.",
|
93
|
+
621 => "Даны действительные числа a, b, c, d. Выяснить, можно ли\n
|
94
|
+
прямоугольник со сторонами a, b целиком уместить в прямоугольнике со сторонами c, d",
|
95
|
+
809 => "Дано натуральное число п. Получить символьное\n
|
96
|
+
представление п в виде последовательности цифр и пробелов\n
|
97
|
+
отделяющих группы по три цифры, начиная справа. Например, если\n
|
98
|
+
n=1753967, то должно получиться 1 753 967.",
|
99
|
+
811 => "Дано натуральное число n, равное выраженной в копейках\n
|
100
|
+
цене некоторого товара, например 317, 5005, 100 и т. д. Выразить цену\n
|
101
|
+
в рублях и копейках, например 3 руб. 17 коп., 50 руб. 05 коп.,\n
|
102
|
+
1 руб. 00 коп. и т.д. (число копеек записывается всегда двумя цифрами).",
|
103
|
+
822 => "Дан номер года. Указать число дней в этом году." }
|
data/lib/tasks.rb
ADDED
@@ -0,0 +1,401 @@
|
|
1
|
+
require "tasks/version"
|
2
|
+
|
3
|
+
module Tasks
|
4
|
+
require 'prime'
|
5
|
+
load 'conditions.rb'
|
6
|
+
|
7
|
+
class MathExercises
|
8
|
+
# puts task - conditions
|
9
|
+
def conditions(number:)
|
10
|
+
$number = number
|
11
|
+
CONDITIONS[number] # Const from file conditions.rb
|
12
|
+
end
|
13
|
+
|
14
|
+
# line is used to solve task25
|
15
|
+
def line(a, b)
|
16
|
+
Math.sqrt((b[0] - a[0])**2 + (b[1] - a[1])**2)
|
17
|
+
end
|
18
|
+
|
19
|
+
# factorial is used to solve task235
|
20
|
+
def factorial(a)
|
21
|
+
(1..a).inject(:*) || 1
|
22
|
+
end
|
23
|
+
|
24
|
+
# gcd is used to solve task323
|
25
|
+
def gcd(a, b)
|
26
|
+
if (a % b).zero?
|
27
|
+
b
|
28
|
+
else
|
29
|
+
gcd(b, a % b)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def task1(a:, b:)
|
34
|
+
$a = a
|
35
|
+
$b = b
|
36
|
+
sum = a + b
|
37
|
+
diff = a - b
|
38
|
+
mult = a * b
|
39
|
+
[sum, diff, mult]
|
40
|
+
end
|
41
|
+
|
42
|
+
def task2(x:, y:)
|
43
|
+
$x = x
|
44
|
+
$y = y
|
45
|
+
(x - y).abs / (1 + (x * y).abs)
|
46
|
+
end
|
47
|
+
|
48
|
+
def task3(a: )
|
49
|
+
$a = a
|
50
|
+
volume = a**3
|
51
|
+
square = (a**2) * 4
|
52
|
+
[volume, square]
|
53
|
+
end
|
54
|
+
|
55
|
+
def task4(a: , b: )
|
56
|
+
$a = a
|
57
|
+
$b = b
|
58
|
+
average =(a + b) / 2
|
59
|
+
geometric = Math.sqrt(a * b)
|
60
|
+
[average, geometric]
|
61
|
+
end
|
62
|
+
|
63
|
+
def task5(a: , b: )
|
64
|
+
$a = a
|
65
|
+
$b = b
|
66
|
+
average =(a + b) / 2
|
67
|
+
geometric = Math.sqrt((a * b).abs)
|
68
|
+
[average, geometric]
|
69
|
+
end
|
70
|
+
|
71
|
+
def task6(a: , b: )
|
72
|
+
$a = a
|
73
|
+
$b = b
|
74
|
+
hypotenuse = Math.hypot(a, b)
|
75
|
+
square = (a * b) / 2
|
76
|
+
[hypotenuse, square]
|
77
|
+
end
|
78
|
+
|
79
|
+
def task8(corners: , radius: )
|
80
|
+
$corners = corners
|
81
|
+
$radius = radius
|
82
|
+
(2 * radius * Math.tan(Math::PI / corners)) * corners
|
83
|
+
end
|
84
|
+
|
85
|
+
def task9(r1: , r2: , r3: )
|
86
|
+
$r1 = r1
|
87
|
+
$r2 = r2
|
88
|
+
$r3 = r3
|
89
|
+
Float(1 / (r1**-1 + r2**-1 + r3**-1))
|
90
|
+
end
|
91
|
+
|
92
|
+
def task10(h: )
|
93
|
+
$h = h
|
94
|
+
Math.sqrt(2 * (h / 9.8))
|
95
|
+
end
|
96
|
+
|
97
|
+
def task12(a: )
|
98
|
+
$a = a
|
99
|
+
0.43301270189 * a**2
|
100
|
+
end
|
101
|
+
|
102
|
+
def task13(l: )
|
103
|
+
$l = l
|
104
|
+
2 * Math::PI * Math.sqrt(l / 9.8 )
|
105
|
+
end
|
106
|
+
|
107
|
+
def task15(hypotenuse: , leg1: )
|
108
|
+
$hypotenuse = hypotenuse
|
109
|
+
$leg1 = leg1
|
110
|
+
leg2 = Math.sqrt(hypotenuse**2 - leg1**2)
|
111
|
+
radius = (leg1 + leg2 - hypotenuse) / 2
|
112
|
+
[leg2, radius]
|
113
|
+
end
|
114
|
+
|
115
|
+
def task16(l: )
|
116
|
+
$l = l
|
117
|
+
Math::PI * (l / (2 * Math::PI))**2
|
118
|
+
end
|
119
|
+
|
120
|
+
def task17(radius: )
|
121
|
+
$radius = radius
|
122
|
+
(Math::PI * radius**2) - (Math::PI * 20**2)
|
123
|
+
end
|
124
|
+
|
125
|
+
def task24(x1: , y1: , x2: , y2: )
|
126
|
+
$x1 = x1
|
127
|
+
$y1 = y1
|
128
|
+
$x2 = x2
|
129
|
+
$y2 = y2
|
130
|
+
a = [x1, y1]
|
131
|
+
b = [x2, y2]
|
132
|
+
Math.sqrt((b[0] - a[0])**2 + (b[1] - a[1])**2)
|
133
|
+
end
|
134
|
+
|
135
|
+
def task25(x1: , y1: , x2: , y2: , x3: , y3: )
|
136
|
+
$x1 = x1
|
137
|
+
$y1 = y1
|
138
|
+
$x2 = x2
|
139
|
+
$y2 = y2
|
140
|
+
$x3 = x3
|
141
|
+
$y3 = y3
|
142
|
+
a, b, c, = [x1, y1], [x2, y2], [x3, y3]
|
143
|
+
perimeter = line(a, b) + line(b, c) + line(a, c)
|
144
|
+
p = perimeter / 2
|
145
|
+
square = Math.sqrt(p * (p - line(a, b)) * (p - line(b, c)) * (p - line(a, c)))
|
146
|
+
[perimeter, square]
|
147
|
+
end
|
148
|
+
|
149
|
+
def task28(x: )
|
150
|
+
$x = x
|
151
|
+
x * (x * (x * (2 * x - 3) + 4) - 5) + 6
|
152
|
+
end
|
153
|
+
|
154
|
+
def task33(x: , y: )
|
155
|
+
$x = x
|
156
|
+
$y = y
|
157
|
+
[[x, y].max , [x, y].min]
|
158
|
+
end
|
159
|
+
|
160
|
+
def task35(x: , y: , z: )
|
161
|
+
$x = x
|
162
|
+
$y = y
|
163
|
+
$z = z
|
164
|
+
xyz = [x, y, z]
|
165
|
+
part_a = [xyz.inject(0){ |res, elem| res + elem }, xyz.inject(1){ |res, elem| res * elem }].max
|
166
|
+
part_b = (([((1..2).to_a.inject(0){ |res, elem| res + elem } + xyz[2] / 2), xyz.inject(1){ |res, elem| res * elem }].min)**2) + 1
|
167
|
+
[part_a, part_b]
|
168
|
+
end
|
169
|
+
|
170
|
+
def task36(a: , b: , c: )
|
171
|
+
$a = a
|
172
|
+
$b = b
|
173
|
+
$c = c
|
174
|
+
if b > a && c > b
|
175
|
+
true
|
176
|
+
else
|
177
|
+
false
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
def task_37(a: , b:, c: )
|
182
|
+
$a = a
|
183
|
+
$b = b
|
184
|
+
$c = c
|
185
|
+
if a >= b && b >= c
|
186
|
+
a *= 2
|
187
|
+
b *= 2
|
188
|
+
c *= 2
|
189
|
+
else
|
190
|
+
a = a.abs
|
191
|
+
b = b.abs
|
192
|
+
c = c.abs
|
193
|
+
end
|
194
|
+
[a, b, c]
|
195
|
+
end
|
196
|
+
|
197
|
+
def task39(a: , b: )
|
198
|
+
$a = a
|
199
|
+
$b = b
|
200
|
+
a > b ? [a] : [a, b]
|
201
|
+
end
|
202
|
+
|
203
|
+
def task40(a: , b: )
|
204
|
+
$a = a
|
205
|
+
$b = b
|
206
|
+
a <= b ? [0, b] : [a, b]
|
207
|
+
end
|
208
|
+
|
209
|
+
def task41(a: , b: , c: )
|
210
|
+
$a = a
|
211
|
+
$b = b
|
212
|
+
$c = c
|
213
|
+
nums = [a, b, c]
|
214
|
+
nums.each { |num| (1..3).include?(num) ? num : nums.delete(num) }
|
215
|
+
nums
|
216
|
+
end
|
217
|
+
|
218
|
+
def task42(x: , y: )
|
219
|
+
$x = x
|
220
|
+
$y = y
|
221
|
+
x < y && x != y ? [(x + y) / 2, (x * y) * 2] : [(x * y) * 2 , (x + y) / 2]
|
222
|
+
end
|
223
|
+
|
224
|
+
def task43(a: , b: , c: )
|
225
|
+
$a = a
|
226
|
+
$b = b
|
227
|
+
$c = c
|
228
|
+
nums = []
|
229
|
+
[a, b, c].each { |elem| elem > 0 ? nums.push(elem**2) : nums.push(elem) }
|
230
|
+
nums
|
231
|
+
end
|
232
|
+
|
233
|
+
def task55(a: , b: , c: , d: )
|
234
|
+
$a = a
|
235
|
+
$b = b
|
236
|
+
$c = c
|
237
|
+
$d = d
|
238
|
+
fig1 = [a, b]
|
239
|
+
fig2 = [ c, d]
|
240
|
+
fig1.max <= fig2.max && fig1.min <= fig2.min ? true : false
|
241
|
+
end
|
242
|
+
|
243
|
+
def task62(a: )
|
244
|
+
$a = a
|
245
|
+
a.even? ? true : false
|
246
|
+
end
|
247
|
+
|
248
|
+
def task64(n: )
|
249
|
+
$n = n
|
250
|
+
n > 99 ? n / 100 : 0
|
251
|
+
end
|
252
|
+
|
253
|
+
def task65(n: )
|
254
|
+
$n = n
|
255
|
+
n.to_s.split("").map(&:to_i) == n**2 ? true : false
|
256
|
+
end
|
257
|
+
|
258
|
+
def task73(k: , l: )
|
259
|
+
$k = k
|
260
|
+
$l = l
|
261
|
+
k != l ? new_k = new_l = [k, l].max : new_k = new_l = 0
|
262
|
+
[new_k, new_l]
|
263
|
+
end
|
264
|
+
|
265
|
+
def task75(n: )
|
266
|
+
$n = n
|
267
|
+
((n % 5) % 3 == 0) || ((n % 3) % 5 == 0) ? true : false
|
268
|
+
end
|
269
|
+
|
270
|
+
def task77(n: )
|
271
|
+
$n = n
|
272
|
+
[2**n, ((1..n).inject(:*) || 1)]
|
273
|
+
end
|
274
|
+
|
275
|
+
def task87(n: , m: )
|
276
|
+
$n = n
|
277
|
+
$m = m
|
278
|
+
(n.to_s.split("").map(&:to_i)).last(m).inject(0){ |res, elem| res = res + elem }
|
279
|
+
end
|
280
|
+
|
281
|
+
def task107(m: )
|
282
|
+
$m = m
|
283
|
+
k = 0
|
284
|
+
k += 1 until (4 ** k) >= m
|
285
|
+
k
|
286
|
+
end
|
287
|
+
|
288
|
+
def task108(n: )
|
289
|
+
$n = n
|
290
|
+
r = 0
|
291
|
+
r += 1 until (2**r) > n
|
292
|
+
r
|
293
|
+
end
|
294
|
+
|
295
|
+
def task140(n: 100)
|
296
|
+
$n = n
|
297
|
+
results = []
|
298
|
+
(1..n).each { |elem| results.push((3 * elem +4) / (elem**2 - (5 * elem) -9)) }
|
299
|
+
results
|
300
|
+
end
|
301
|
+
|
302
|
+
def task148(n: 100)
|
303
|
+
$n = n
|
304
|
+
temp_hash ={}
|
305
|
+
(1..n).each { |c| temp_hash[c] = ((9 / 5) * c) + 32 }
|
306
|
+
temp_hash
|
307
|
+
end
|
308
|
+
|
309
|
+
def task182(n: )
|
310
|
+
$n = n
|
311
|
+
sum = 0
|
312
|
+
count = 0
|
313
|
+
(0..n).each do |elem|
|
314
|
+
if (elem % 5) == 0 && (elem % 7) != 0
|
315
|
+
sum += elem
|
316
|
+
count += 1
|
317
|
+
end
|
318
|
+
end
|
319
|
+
[sum, count]
|
320
|
+
end
|
321
|
+
|
322
|
+
def task235(n: , m: )
|
323
|
+
$n = n
|
324
|
+
$m = m
|
325
|
+
(factorial(m) + factorial(n)) / factorial(m + n)
|
326
|
+
end
|
327
|
+
|
328
|
+
def task251(text: )
|
329
|
+
$text = text
|
330
|
+
count = text.split('').map(&:to_s).select { |item| item.include?("x") }
|
331
|
+
count.length
|
332
|
+
end
|
333
|
+
|
334
|
+
def task323(n: )
|
335
|
+
$n = n
|
336
|
+
nums = []
|
337
|
+
(1..n).each do |x|
|
338
|
+
if x < n
|
339
|
+
gcd(n, x) == 1 ? nums.push(x) : nums
|
340
|
+
end
|
341
|
+
end
|
342
|
+
nums
|
343
|
+
end
|
344
|
+
|
345
|
+
def task327(a: , b: )
|
346
|
+
$a = a
|
347
|
+
$b = b
|
348
|
+
nums = []
|
349
|
+
(a..b).each { |elm| Prime.prime?(elm) ? nums.push(elm) : nums }
|
350
|
+
nums
|
351
|
+
end
|
352
|
+
|
353
|
+
def task328(n: 100)
|
354
|
+
$n = n
|
355
|
+
Prime.first(n)
|
356
|
+
end
|
357
|
+
|
358
|
+
def task606(a: , b: , c: , d: )
|
359
|
+
$a = a
|
360
|
+
$b = b
|
361
|
+
$c = c
|
362
|
+
$d = d
|
363
|
+
arr = [a, b, c, d]
|
364
|
+
arr.max >= (arr.delete_if{ |x| x == arr.max }.inject(0){ |res, elem| res + elem }) ? "Possible" : "Impossible"
|
365
|
+
end
|
366
|
+
|
367
|
+
def task621(a: , b: , c: , d: )
|
368
|
+
$a = a
|
369
|
+
$b = b
|
370
|
+
$c = c
|
371
|
+
$d = d
|
372
|
+
fig1 = [a, b]
|
373
|
+
fig2 = [c, d]
|
374
|
+
fig1.inject(0){ |res, elem| res + elem } <= fig2.inject(0){ |res, elem| res + elem } ? "It is possible" : "It is not possible"
|
375
|
+
end
|
376
|
+
|
377
|
+
def task809(n: )
|
378
|
+
$n = n
|
379
|
+
number = n.to_s.split('').map(&:to_s)
|
380
|
+
i = 3
|
381
|
+
(number.length / 3).times do
|
382
|
+
number.insert((number.length - i), " ")
|
383
|
+
i += 4
|
384
|
+
end
|
385
|
+
number.join
|
386
|
+
end
|
387
|
+
|
388
|
+
def task811(n: )
|
389
|
+
$n = n
|
390
|
+
rur = n / 100
|
391
|
+
penny = n - (rur * 100)
|
392
|
+
penny.to_s.split('').map(&:to_s).length == 1 ? (penny.insert(0, "0")) : penny
|
393
|
+
"the prise is #{rur} rur. #{penny} penny."
|
394
|
+
end
|
395
|
+
|
396
|
+
def task822(year: )
|
397
|
+
$year = year
|
398
|
+
(year % 4).zero? && year % 100 != 0 || (year % 400).zero? ? "366 days in #{year}" : "365 days in #{year}"
|
399
|
+
end
|
400
|
+
end
|
401
|
+
end
|
data/math_tasker.gemspec
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
|
2
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require "tasks/version"
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "math_tasker"
|
8
|
+
spec.version = Tasks::VERSION
|
9
|
+
spec.authors = ["AlexProtsiuk"]
|
10
|
+
spec.email = ["alex_is_ok@yahoo.com"]
|
11
|
+
|
12
|
+
spec.summary = %q{Gem for solving some math tasks}
|
13
|
+
spec.homepage = ""
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
17
|
+
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
18
|
+
# if spec.respond_to?(:metadata)
|
19
|
+
# spec.metadata["allowed_push_host"] = "
|
20
|
+
# else
|
21
|
+
# raise "RubyGems 2.0 or newer is required to protect against " \
|
22
|
+
# "public gem pushes."
|
23
|
+
#end
|
24
|
+
|
25
|
+
# Specify which files should be added to the gem when it is released.
|
26
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
27
|
+
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
28
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
29
|
+
end
|
30
|
+
spec.bindir = "exe"
|
31
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
32
|
+
spec.require_paths = ["lib"]
|
33
|
+
|
34
|
+
spec.add_development_dependency "bundler", "~> 1.16"
|
35
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
36
|
+
spec.add_development_dependency "testsuite", "~> 0.1.0"
|
37
|
+
end
|
data/tasks-0.1.0.gem
ADDED
Binary file
|
metadata
ADDED
@@ -0,0 +1,97 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: math_tasker
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- AlexProtsiuk
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-11-18 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.16'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.16'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: testsuite
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.1.0
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.1.0
|
55
|
+
description:
|
56
|
+
email:
|
57
|
+
- alex_is_ok@yahoo.com
|
58
|
+
executables: []
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- ".gitignore"
|
63
|
+
- Gemfile
|
64
|
+
- README.md
|
65
|
+
- Rakefile
|
66
|
+
- bin/console
|
67
|
+
- bin/setup
|
68
|
+
- lib/conditions.rb
|
69
|
+
- lib/tasks.rb
|
70
|
+
- lib/tasks/version.rb
|
71
|
+
- math_tasker.gemspec
|
72
|
+
- tasks-0.1.0.gem
|
73
|
+
homepage: ''
|
74
|
+
licenses:
|
75
|
+
- MIT
|
76
|
+
metadata: {}
|
77
|
+
post_install_message:
|
78
|
+
rdoc_options: []
|
79
|
+
require_paths:
|
80
|
+
- lib
|
81
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
82
|
+
requirements:
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
requirements: []
|
92
|
+
rubyforge_project:
|
93
|
+
rubygems_version: 2.7.7
|
94
|
+
signing_key:
|
95
|
+
specification_version: 4
|
96
|
+
summary: Gem for solving some math tasks
|
97
|
+
test_files: []
|