Advertisement
Guest User

Untitled

a guest
May 23rd, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 0.96 KB | None | 0 0
  1. #Дана папка с изображениями, кол-во файлов изображений не ограничено.
  2. #Необходимо вывести в массив хешей, где содержится информация о названии файла и количестве его повторений
  3. #Пример:
  4. #result = [{filenames: ['file1.png', ....], count: 10}, {filenames: ['file3.png',...], count: 9}]
  5. #Решение
  6. dir_name = ARGV[0]
  7.  
  8. abort "No dirname in arg" if dir_name.nil?
  9.  
  10. dir_pattern = "#{dir_name}/**/*"
  11. file_arr = Dir.glob(dir_pattern).reject { |f| File.directory?(f) }
  12.  
  13. def hash_files(files)
  14.   files.each_with_object(Hash.new [] ) do |file, res|
  15.     res[File.basename(file)] += [file]
  16.   end
  17. end
  18.  
  19. def results(files)
  20.   res = []
  21.   hash_files(files).each do |key, value|
  22.     elem = {}
  23.     elem[:filenames] = [key] + value
  24.     elem[:count] = value.count
  25.     res << elem
  26.   end
  27.   res
  28. end
  29.  
  30. puts results(file_arr)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement