diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..723ef36 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea \ No newline at end of file diff --git a/lesson1.rb b/lesson1.rb index 5f2c9a4..ed28717 100644 --- a/lesson1.rb +++ b/lesson1.rb @@ -1,14 +1,28 @@ require 'date' class Lesson1 def sum(val = 0) - # TODO + sum = 0 + val.to_s.split('').each { |n| sum += n.to_i } + sum end def age(birthday) - # TODO + if birthday.is_a? String + days = (Date.parse(birthday) - Date.today).to_i.abs + years = days / 365 + hours = days * 24 + minutes = hours * 60 + "Я живу #{years} года или #{days} дней или #{hours} + часов или #{minutes} минут или #{minutes * 60} секунд" + else + 'Invalid Date Format' + end end def name - # TODO + first_name = gets.chomp + last_name = gets.chomp + extra_name = gets.chomp + "Hello #{first_name} #{last_name} #{extra_name}!" end end diff --git a/my_array.rb b/my_array.rb index 5146e42..b05ce98 100644 --- a/my_array.rb +++ b/my_array.rb @@ -6,58 +6,102 @@ def initialize(arr = []) end def size - # TODO + # @array.size + size = 0 + @array.each { size += 1 } + size end def reverse - # TODO + # @array.reverse + reverse_arr = [] + @array.each { |n| reverse_arr.unshift(n) } + reverse_arr end def max - # TODO + # @array.max + max_value = nil + @array.each do |n| + if max_value.nil? + max_value = n + elsif max_value < n + max_value = n + end + end + max_value end def min - # TODO + # @array.min + min_value = nil + @array.each do |n| + if min_value.nil? + min_value = n + elsif min_value > n + min_value = n + end + end + min_value end def desc - # TODO + @array.sort { |a, b| b <=> a } end def asc - # TODO + @array.sort end def odd - # TODO + odd_arr = [] + @array.each do |n| + odd_arr.push(n) if n.odd? + end + odd_arr end def multiple_to_three - # TODO + multiple_to_three_arr = [] + @array.each do |n| + multiple_to_three_arr.push(n) if (n % 3).zero? + end + multiple_to_three_arr end def uniq - # TODO + @array.uniq end def devide_on_ten - # TODO + devide_on_ten_arr = @array.map { |n| n.to_f / 10 } + devide_on_ten_arr end def chars - # TODO + chars_arr = ('a'..'z').map(&:to_s) + result = [] + @array.each { |n| result.push(chars_arr[n - 1].to_sym) } + result end def switch - # TODO + a = @array + min_index = a.index(a.min) + max_index = a.index(a.max) + min = a.min + max = a.max + a[min_index] = max + a[max_index] = min + a end def before_min - # TODO + min_index = @array.index(@array.min) + @array[0...min_index] end def three_smallest - # TODO + @array.min(3) end end diff --git a/spec/lesson1_spec.rb b/spec/lesson1_spec.rb index d32dba4..7be1494 100644 --- a/spec/lesson1_spec.rb +++ b/spec/lesson1_spec.rb @@ -9,7 +9,7 @@ end describe '#age' do - it { expect(subject.age('03/05/1990')).to include('25') } + it { expect(subject.age('03/05/1990')).to include('28') } it { expect(subject.age(nil)).to eql('Invalid Date Format') } end