2024-04-11 21:51:53 +09:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2024-04-15 22:48:09 +09:00
|
|
|
COLUMNS = 3
|
|
|
|
files = []
|
2024-04-11 21:51:53 +09:00
|
|
|
|
2024-04-15 22:48:09 +09:00
|
|
|
def run(files)
|
2024-04-23 07:45:29 +09:00
|
|
|
served_files = serve_files(files)
|
|
|
|
sliced_files = slice_files(served_files)
|
|
|
|
filled_files = fill_files(sliced_files)
|
|
|
|
arrange_files(filled_files)
|
2024-04-11 21:51:53 +09:00
|
|
|
end
|
|
|
|
|
2024-04-23 07:45:29 +09:00
|
|
|
def serve_files(_files)
|
|
|
|
Dir.glob('*')
|
2024-04-11 21:51:53 +09:00
|
|
|
end
|
|
|
|
|
2024-04-23 07:45:29 +09:00
|
|
|
def slice_files(served_files)
|
|
|
|
columns_size = served_files.size.ceildiv(COLUMNS)
|
|
|
|
served_files.each_slice(columns_size).to_a
|
2024-04-11 21:51:53 +09:00
|
|
|
end
|
|
|
|
|
2024-04-23 07:45:29 +09:00
|
|
|
def fill_files(sliced_files)
|
|
|
|
array_size = sliced_files.map(&:size).max
|
|
|
|
sliced_files.each do |slice|
|
2024-04-15 22:48:09 +09:00
|
|
|
slice << '' while slice.size < array_size
|
2024-04-11 21:51:53 +09:00
|
|
|
end
|
2024-04-23 07:45:29 +09:00
|
|
|
sliced_files.transpose
|
2024-04-11 21:51:53 +09:00
|
|
|
end
|
|
|
|
|
2024-04-23 07:45:29 +09:00
|
|
|
def arrange_files(filled_files)
|
|
|
|
string_count = filled_files.flatten.map(&:size).max
|
|
|
|
filled_files.each do |arrange|
|
2024-04-15 22:48:09 +09:00
|
|
|
arrange.each do |arranged|
|
2024-04-23 07:45:29 +09:00
|
|
|
print arranged.ljust(string_count + 5)
|
2024-04-11 21:51:53 +09:00
|
|
|
end
|
|
|
|
puts
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2024-04-15 22:48:09 +09:00
|
|
|
run(files)
|