Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions movies.rb
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
name_film = ARGV[0]
name_of_film = ARGV[0]
film_bad = "Titanic"
film_good = "Matrix"

if name_film == film_bad
if name_of_film == film_bad
puts "#{film_bad} is a bad movie"
elsif name_film == film_good
elsif name_of_film == film_good
puts "#{film_good} is a good movie"
else
puts "Haven\'t seen #{name_film} yet"
end
end

250 changes: 250 additions & 0 deletions movies.txt

Large diffs are not rendered by default.

5 changes: 3 additions & 2 deletions movies_array.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
name_film = ARGV.first
name = ARGV.first
films = ["Titanic", "Matrix", "Revolver", "Equalizer"]

if films.include?(name_film)
if films.include?(name)
puts "#{name_film} is a good movie"
else
puts "#{name_film} is a bad movie"
end

23 changes: 23 additions & 0 deletions task2.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
if ARGV.length !=1 then
file_name = "movies.txt"
else
file_name = ARGV[0]
end

begin
file = File.open(file_name)
rescue
puts "Ошибка. Файл отсутствует!"
exit
end

file.each do |line|
lines = line.split('|')
# проверяем поле название на наличие Time
if lines[1].match(/Time\s/)
# подсчитываем нужное число * из дробной части рейтинга
x, y = lines[7].to_s.split('.')
y = y.to_i
puts "#{lines[1]} #{"*" * y}"
end
end
39 changes: 39 additions & 0 deletions task3.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
file_name = ARGV[0] || "movies.txt"

if File.exist?(file_name)
file = File.open(file_name)
else
puts "Ошибка. Файл отсутствует!"
exit
end

FIELDS_ORDER = [:link, :title, :year, :country, :date, :genre, :length, :rate, :author, :actors]
films = file.map { |line| FIELDS_ORDER.zip(line.split('|')).to_h }

#выводим 5 самых длинных фильмов
def show(f)
puts "#{ f[:title]} (#{f[:date]} #{f[:genre]}) - #{f[:length] }"
end

films
.sort_by { |f| -f[:length].to_i }
.take(5)
.each { |a| show(a) }

#10 комедий (первые по дате выхода)
films
.select { |f| f[:genre].match(/Comedy/)}
.sort_by { |c| c[:year] }
.take(10)
.each { |a| puts "#{a[:title]} - #{a[:genre]} - #{a[:year]}"}

# список всех режиссёров по алфавиту

films
.sort_by { |f| f[:author].split(' ').reverse.join(" ") }
.uniq{ |f| f[:author] }
.each { |a| puts a[:author]}

# количество фильмов, снятых не в США
puts films.each.count { |f| f[:country] != "USA" }

48 changes: 48 additions & 0 deletions task4.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
require 'ostruct'
require 'csv'
require 'date'

file_name = ARGV[0] || "movies.txt"

if File.exist?(file_name)
file = File.open(file_name)
else
puts "Ошибка. Файл отсутствует!"
exit
end

films = CSV.read(file, col_sep: '|', headers: %i[ link title year country date genre length rate author actors ] ).map { |film| OpenStruct.new film.to_h }

#выводим 5 самых длинных фильмов
def show(f)
puts "#{ f.title} (#{f.date} #{f.genre}) - #{f.length }"
end

films
.sort_by { |f| -f.length.to_i }
.take(5)
.each { |a| show(a) }

#10 комедий (первые по дате выхода)
films
.reject { |c| !c.genre.split(",").include?("Comedy")}
.sort_by(&:year)
.take(10)
.each { |a| puts "#{a.title} - #{a.genre} - #{a.year}"}

# список всех режиссёров по алфавиту
films
.sort_by { |a| a.author.split(' ').reverse.join(" ") }
.uniq(&:author)
.each { |a| puts a.author}

# количество фильмов, снятых не в США
puts films.each.count { |f| f.country != "USA" }

groups = films.reject{ |f|
!f.date.include?('-') }
.group_by{ |f|
Date.strptime( f.date, '%Y-%m').mon
}.sort

groups.map { |month, group| puts "#{ Date.strptime(month.to_s, '%m').strftime('%B') } - #{group.count}" }