tasks_gem 0.1.9 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2e8a6c3f3ce3438643e429617d424b5c59afecab3f31f9c5489c67fa324dee17
4
- data.tar.gz: 443580e8cee882e8bce468b9e62e83c1f9ea7d4c97918ee694938ae18cc0fd0a
3
+ metadata.gz: f9382afb6b2684e0b0403d6d34618d640037d02115d4dca6f39ef65fea7e8e74
4
+ data.tar.gz: 50854ed34a380f428f68091d80082f7f1454f237e1908993d1f23c020330f306
5
5
  SHA512:
6
- metadata.gz: 5a6aa5a7f13d17d2c40deea2f6a02633eed2defb2658a581681b4faed7f0bdd855a32820c509bac91ae58aece1bad085b5243140106995c080d4555a8e633adc
7
- data.tar.gz: c6ca6d91b51ceafd83007bcf280c9158123e7c3275fb3d3377c5ccfebff9a4ea96315eef3406a8fa1cdf07ef47b6dfdb29b2d1a9fdbf6ac410924af3490e2aab
6
+ metadata.gz: 43169e4fee4fa726f8468d6e5f667ed98c3d1b5a92c6bbfed15592417517a7ec1ba3ecd24553fb4a22915a193b06132e0f0d9502d933c428f35ffab5a6cd73e7
7
+ data.tar.gz: 3de63dbb6217211696faa9d2aef312210fc48caa18439f7f598f8fdbe2bd0690bcc043d1bcf68977eb5618157c617b999f685780dbd13fca7a31995a72f55609
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- tasks_gem (0.1.8)
4
+ tasks_gem (0.1.9)
5
5
  run_tests (~> 0.1.3)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  50 tasks
4
4
  https://rubygems.org/gems/tasks_gem
5
5
 
6
- Book with tasks http://libgen.io/book/index.php?md5=02CEF7BC8F9FAF75690C1CBE83BE3B70
6
+ [Book with tasks](http://libgen.io/book/index.php?md5=02CEF7BC8F9FAF75690C1CBE83BE3B70)
7
7
 
8
8
  ## Installation
9
9
 
@@ -27,20 +27,22 @@ Example:
27
27
  ```ruby
28
28
  require 'tasks'
29
29
 
30
- print Tasks::Task.number_array(digit: 2356), "\n"
31
- print Tasks::Task.task_1(number_a: 2, number_b: 5), "\n"
30
+ Tasks::Task.task_1(a: 2, b: 5)
32
31
  ```
33
-
34
- All methods:
32
+ Return array with numbers of all tasks:
33
+ ```ruby
34
+ Tasks::Task.all_tasks
35
+ ```
36
+ Return task condition by number:
35
37
  ```ruby
36
- print Tasks::Task.methods(false), "\n"
38
+ Tasks::Task.conditions(num: 1)
37
39
  ```
38
40
  Example use: https://github.com/marina8915/tasks-rails
39
41
 
40
42
  ## Dependencies:
41
43
 
42
- run_tests ~> 0.1.1
43
- https://rubygems.org/gems/run_tests
44
+ [run_tests](https://rubygems.org/gems/run_tests) ~> 0.1.3
45
+
44
46
 
45
47
  ## Development
46
48
 
data/lib/conditions.rb ADDED
@@ -0,0 +1,79 @@
1
+ CONDITIONS = {
2
+ 1 => 'Даны два действительных числа a и b. Получить их сумму, разность и произведение.',
3
+ 2 => 'Даны действительные числа x и y. Получить (|x| -|y|)/(1 + xy) ',
4
+ 3 => 'Дана длина ребра куба. Найти объем куба и площадь его боковой поверхности.',
5
+ 6 => 'Даны катеты прямоугольного треугольника. Найти его гипотенузу и площадь.',
6
+ 8 => 'Определить периметр правильного n-угольника, описанного около окружности радиуса r.',
7
+ 9 => 'Три сопротивления R1, R2, R3 соединены параллельно. Найти сопротивление соединения.',
8
+ 10 => 'Определить время падения камня на поверхность земли с высоты h.',
9
+ 12 => 'Дана сторона равностороннего треугольника. Найти площадь этого треугольника.',
10
+ 13 => 'Вычислить период колебания маятника длины l.',
11
+ 15 => 'Даны гипотенуза и катет прямоугольного треугольника. Найти второй катет и радиус
12
+ вписанной окружности.',
13
+ 16 => 'Известна длина окружности. Найти площадь круга, ограниченного этой окружностью.',
14
+ 24 => 'Вычислить расстояние между двумя точками с координатами x1,y1 и x2,y2.',
15
+ 30 => 'Дано действительное число х. Не пользуясь никакими другими арифметическими операциями,
16
+ кроме умножения, сложения и вычитания, вычислить: 1−2x +3x^2 −4x^3 и 1+2x +3x^2 +4x^3.
17
+ Разрешается использовать не более восьми операций.',
18
+ 33 => 'Даны действительные числа х, у. Получить: max (x, y), min (x, y).',
19
+ 34 => 'Даны действительные числа x, y, z. Получить: min (x, y, z), max(x, y, z).',
20
+ 39 => 'Даны два действительных числа. Вывести первое число, если оно больше второго, и оба числа, если это не так.',
21
+ 41 => 'Даны три действительных числа. Выбрать из них те, которые принадлежат интервалу (1, 3).',
22
+ 43 => 'Даны три действительных числа. Возвести в квадрат те из них, значения которых неотрицательны.',
23
+ 62 => 'Определить, является ли данное целое число четным.',
24
+ 64 => 'Дано натуральное число n (n > 99). Определить число сотен в нем.',
25
+ 65 => 'Дано натуральное число n (n>99). Выяснить, верно ли, что n^2 равно кубу суммы цифр числа n.',
26
+ 67 => 'Дано натуральное число n (n ≤ 100):
27
+ а) Сколько цифр в числе n?
28
+ б) Чему равна сумма его цифр?
29
+ в) Найти последнюю цифру числа n.
30
+ г) Найти первую цифру числа n.
31
+ д) В предположении, что n ≥ 10, найти предпоследнюю цифру числа n.',
32
+ 182 => 'Дано натуральное число n.В массиве a1, …, an найти количество и сумму тех членов
33
+ данной последовательности, которые делятся на 5 и не делятся на 7.',
34
+ 185 => 'Дано натуральное число n. Получить удвоенную сумму всех положительных членов последовательности a1, …, an.',
35
+ 191 => 'Дано натуральное число n. Заменить все большие семи члены последовательности a1, …, an числом 7.
36
+ Вычислить количество таких членов.',
37
+ 205 => 'Дано натуральное число n. Получить max(a1, …, an) и sqrt(a1^2 + ... +an^2).',
38
+ 207 => 'Дано натуральное число n. Выбросить из записи числа n цифры 0 и 5,
39
+ оставив прежним порядок остальных цифр. Например, из числа 59015509 должно получиться 919.',
40
+ 224 => 'Дано натуральное число n. Получить все его натуральные делители.',
41
+ 225 => 'Дано натуральное число n. Получить все такие натуральные q, что n делится на q^2 и не делится на q^3.',
42
+ 230 => 'Дано натуральное число n. Найти длину наименьшего отрезка числовой оси, содержащего числа
43
+ a1, …, an.',
44
+ 272 => 'Даны действительные числа а1901, a1902, …,аn – количество осадков (в миллиметрах),
45
+ выпавших в Москве в течение первых n лет нашего столетия.
46
+ Надо вычислить среднее количество осадков и отклонение от среднего для каждого года.',
47
+ 279 => 'Дано действительные числа n. Вычислить для a1, …, an, b1, …, bn:
48
+ (a1+bn)(a2+bn-1)...(an+b1).',
49
+ 302 => 'Дано натуральное число n. Сколько различных цифр встречается в его десятичной записи?',
50
+ 317 => 'Дано натуральное число n, для a1, …, a10 вычислить a1 + a2^2 + ... + a10^10',
51
+ 325 => 'Дано натуральное число n. Получить все простые делители этого числа.',
52
+ 328 => 'Найти 100 первых простых чисел.',
53
+ 536 => 'Дано натуральное число n. Выяснить, имеются ли среди чисел a1, ..., an совпадающие.',
54
+ 555 => 'Дано натуральное n. Получить первые n строк треугольника Паскаля.
55
+ Треугольником Паскаля называется числовой треугольник в котором по краям стоят единицы,
56
+ а каждое число внутри равно сумме двух стоящих над ним в ближайшей строке сверху.',
57
+ 561 => 'Дано натуральное число n. Среди чисел 1, ..., n найти все такие,
58
+ запись которых совпадает с последними цифрами записи их квадрата (как, например, 6^2 = 36, 25^2 = 625 и т. д.).',
59
+ 606 => 'Даны действительные положительные числа a, b, c, d.
60
+ Выяснить, можно ли построить четырехугольник с такими длинами сторон.',
61
+ 697 => 'Для матриц А и В размера k × m и m × l соответственно найти произведение АВ.',
62
+ 698 => 'Для квадратной матрицы прядка n. Получить матрицуА^2.',
63
+ 699 => 'Для квадратных матриц А и В порядка n. Получить матрицу АВ–ВА.',
64
+ 704 => 'Для квадратных матриц A, B и C порядка n. Получить матрицу (A+B)C.',
65
+ 710 => 'Для матрицы А размера m × n. Получить транспонированную матрицу А* (ее размер – m × n ).',
66
+ 822 => 'Дан номер года. Указать число дней в этом году.',
67
+ 823 => 'Даны натуральные числа n, m (n ≤ m ).
68
+ Определить, сколько из чисел n, n+1, ..., m являются номерами високосных годов.',
69
+ 831 => 'День учителя ежегодно отмечается в первое воскресенье октября. Дано натуральное число n, означающее номер года.
70
+ Определить число, на которое в октябре указанного года приходится День учителя.',
71
+ 986 => '«Угадай число». Программа с помощью датчика случайных чисел выбирает число в диапазоне от 0 до 9.
72
+ Попробуйте угадать это числ.',
73
+ 988 => '«Ипподром». Играющий выбирает одну из трех лошадей, состязающихся на бегах, и выигрывает,
74
+ если его лошадь приходит первой. Скорость передвижения лошадей на разных этапах выбирается программой
75
+ с помощью датчика случайных чисел.
76
+ Введите номер лошади: 1 => Watercolor, 2 => Alpha, 3 => Gallop',
77
+ 1009 => '«100 спичек». Из кучки, первоначально содержащей 100 спичек, двое играющих поочередно берут
78
+ по несколько спичек: не менее одной и не более десяти. Проигрывает взявший последнюю спичку.'
79
+ }
data/lib/tasks.rb CHANGED
@@ -1,5 +1,6 @@
1
- require "tasks/version"
2
- require "matrix"
1
+ require 'tasks/version'
2
+ require 'matrix'
3
+ require 'conditions'
3
4
 
4
5
  module Tasks
5
6
  class Error < StandardError; end
@@ -27,16 +28,6 @@ module Tasks
27
28
  array
28
29
  end
29
30
 
30
- # if digit not in diapason lower_bound..top_bound enter new n
31
- def check_digit(digit:, lower_bound: 1, top_bound: 10)
32
- until (lower_bound..top_bound).cover? digit
33
- puts 'incorrect value'
34
- puts 'take again'
35
- digit = gets.to_i
36
- end
37
- digit
38
- end
39
-
40
31
  # array with random digits in diapason lower_bound..y
41
32
  def new_array(quantity:, lower_bound: -100, top_bound: 100)
42
33
  array = []
@@ -59,8 +50,7 @@ module Tasks
59
50
  mult = a * b
60
51
  { sum: sum.round(2),
61
52
  difference: diff.round(2),
62
- multiplication: mult.round(2)
63
- }
53
+ multiplication: mult.round(2) }
64
54
  end
65
55
 
66
56
  def task_2(x:, y:)
@@ -141,6 +131,10 @@ module Tasks
141
131
  { min: array.min, max: array.max }
142
132
  end
143
133
 
134
+ def task_39(digit1:, digit2:)
135
+ digit1 > digit2 ? digit1 : [digit1, digit2]
136
+ end
137
+
144
138
  def task_41(x:, y:, z:)
145
139
  array = [x, y, z]
146
140
  array.select { |x| x <= 3 && x >= 1 }
@@ -392,58 +386,54 @@ module Tasks
392
386
 
393
387
  def task_986(n:)
394
388
  digit = rand(0..9)
395
- digit_user = check_digit(digit: n.to_i, lower_bound: 0, top_bound: 9)
389
+ digit_user = n.to_i
390
+ return 'incorrect value' unless (0..9).cover? digit_user
391
+
396
392
  digit_user != digit ? hint(digit1: digit_user, digit2: digit) : 'Right you are!'
397
393
  end
398
394
 
399
395
  # place of the horse, task 988
400
- def horses_num(run:, horse_num:)
401
- run.map! { |x| x + rand(1..100) }
402
- text = if run[horse_num - 1] == run.max
403
- 'First'
404
- elsif run[horse_num - 1] == run.min
405
- 'Last'
406
- else
407
- 'Second'
408
- end
409
- puts text
410
- run
396
+ def horse_place(run:, horse_num:)
397
+ horse_num -= 1
398
+ if run[horse_num] == run.max
399
+ 'Victory!'
400
+ elsif run[horse_num] == run.min
401
+ 'Last.'
402
+ else
403
+ 'Second.'
404
+ end
411
405
  end
412
406
 
413
407
  def task_988(horse_num:)
414
408
  horse_num = horse_num.to_i
415
- horse_num = 1 if (1..3).include? horse_num
409
+ return 'incorrect value' unless (1..3).cover? horse_num
410
+
416
411
  finish = 500
417
412
  horses_run = []
418
413
  3.times { horses_run.push(rand(1..100)) }
419
414
  while horses_run.max < finish
420
- horses_run = horses_num(run: horses_run, horse_num: horse_num)
415
+ horses_run.map! { |x| x + rand(1..100) }
421
416
  end
422
- horses_run[horse_num - 1] >= finish ? 'Victory!' : 'Try again.'
417
+ horse_place(run: horses_run, horse_num: horse_num)
423
418
  end
424
419
 
425
- # result game 100 matches
426
- def matches_result(first:, second:)
427
- if first > second
428
- 'First is won'
429
- elsif first == second
430
- 'Won friendship'
431
- else
432
- 'Second is won'
433
- end
420
+ # return array with numbers of all tasks
421
+ def all_tasks
422
+ method_name = 'task_'
423
+ methods = Task.methods(false)
424
+ tasks = methods.select { |elem| elem.to_s.include? method_name }
425
+ tasks.map! { |elem| elem.to_s.delete method_name }
426
+ tasks.map!(&:to_i).sort!
434
427
  end
435
428
 
436
- def task_1009
437
- puts 'Game - 100 matches \n must take from 1 to 10 matches'
438
- first_player = 0
439
- second_player = 0
440
- until first_player >= 100 || second_player >= 100
441
- puts 'first player'
442
- first_player += check_digit(digit: gets.to_i)
443
- puts 'second player'
444
- second_player += check_digit(digit: gets.to_i)
429
+ # return task condition by number
430
+ def conditions(num:)
431
+ num = num.to_i
432
+ if all_tasks.include? num
433
+ CONDITIONS[num]
434
+ else
435
+ 'Task not found.'
445
436
  end
446
- puts matches_result(first: first_player, second: second_player)
447
437
  end
448
438
  end
449
439
  end
data/lib/tasks/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Tasks
2
- VERSION = "0.1.9"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tasks_gem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - marina8915
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-11-19 00:00:00.000000000 Z
11
+ date: 2018-11-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -82,6 +82,7 @@ files:
82
82
  - Rakefile
83
83
  - bin/console
84
84
  - bin/setup
85
+ - lib/conditions.rb
85
86
  - lib/tasks.rb
86
87
  - lib/tasks/version.rb
87
88
  - tasks.gemspec