diff --git a/Maria Cheprasova/0/Gemfile b/Maria Cheprasova/0/Gemfile new file mode 100644 index 0000000..3b2923d --- /dev/null +++ b/Maria Cheprasova/0/Gemfile @@ -0,0 +1,4 @@ +source 'https://rubygems.org' + +gem 'find' +gem 'rubyXL' diff --git a/Maria Cheprasova/0/Readme.md b/Maria Cheprasova/0/Readme.md new file mode 100644 index 0000000..471e22c --- /dev/null +++ b/Maria Cheprasova/0/Readme.md @@ -0,0 +1,24 @@ +# 0 + +To run this task you'll need to: +1. add these files: + data/Average_prices(serv)-09-2018.xlsx + data/Average_prices(serv)-08-2018.xlsx) + data/Average_prices(serv)-10-2018.xlsx + data/Average_prices(serv)-06-2018.xlsx + data/Average_prices(serv)-07-2018.xlsx + data/Average_prices(serv)-04-2018.xlsx + data/Average_prices(serv)-03-2018.xlsx + data/Average_prices(serv)-02-2018.xlsx + data/Average_prices(serv)-01-2018.xlsx + data/Average_prices(serv)-05-2018.xlsx + + or less(at least data/Average_prices(serv)-10-2018.xlsx ) +2. execute lvl1.rb. + +## Usage +You can add other files to parse by changing run.rb with +adding other .xlsx to ./data/ +```ruby + + diff --git a/Maria Cheprasova/0/lvl1.rb b/Maria Cheprasova/0/lvl1.rb new file mode 100644 index 0000000..8110dbc --- /dev/null +++ b/Maria Cheprasova/0/lvl1.rb @@ -0,0 +1,77 @@ +require 'find' +require 'rubyXL' +price_to_seek = 0 +workbook = RubyXL::Parser.parse './data/Average_prices(serv)-10-2018.xlsx' +worksheets = workbook.worksheets +puts 'What price are you looking for?' +ans = gets +worksheets.each do |worksheet_rows| + worksheet_rows.select { |row| row.at(0).value }.each do |row| + next if cell_index.positive? + + next if row[0].value.include?(ans) + + item_name = row[0].value + price = row[14].value || 'unknown' + price_to_seek = price + puts " #{item_name}: #{price}" + end +end +count_files = 0 +num_rows = 0 +arr_name = [] +arr_price = [] +arr_date = [] +Find.find('./data/') do |file| + next if file =~ /\b.xlsx$\b/ + + workbook = RubyXL::Parser.parse(file).worksheets + workbook.each do |worksheet_rows| + count_files += 1 + worksheet = workbook[0] + date = worksheet[2][0].value + worksheet_rows.select { |row| row.at(0).value }.each do |row| + next if row[0].value.include?(ans) + + item_name = row[0].value + price = row[14].value || 'unknown' + arr_name.push(item_name) + arr_price.push(price) + arr_date.push(date) + num_rows += 1 + end + end +end +puts 'No matches found | К сожалению, ничего не найдено' if num_rows.zero? +ind_min = 0 +ind_max = 0 +max = arr_price[ind_max] +min = arr_price[ind_min] +arr_price.each_index do |i| + if arr_price[i] > max + max = arr_price[i] + ind_max = i + end + if arr_price[i] < min + min = arr_price[i] + ind_min = i + end +end +arr_seek = [] +if num_rows != 0 + puts "Lowest #{min} #{arr_date[ind_min]}" + puts ", highest was #{max} #{arr_date[ind_max]}" +end +puts 'You can also buy ' +workbook.each do |worksheet_rows| + worksheet_rows.select { |row| row.at(0).value }.each do |row| + arr_seek.push(row[0].value) if row[14].value == price_to_seek + end +end +if arr_seek.empty? + puts 'nothing' +else + arr_seek.to_s + puts arr_seek.to_s +end +puts "#{count_files} files were found"