1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| def read(year)
require 'rubyXL'
file_path = "#{year}.xlsx"
workbook = RubyXL::Parser.parse(file_path)
worksheet = workbook[0]
row = worksheet.map {|row| row && row.cells.each { |cell| cell && cell.value != nil}}.size
#找高間隔
yl = (1..row-1).map {|y| y + 1 if worksheet[y][1].value == "日" }.compact.push(row)
#計算幾排
hl = yl.take(4).each_with_index.map {|y, idx| (yl[idx+1] - y - 2) / 2 }
#寬間隔(固定)
xl = [1, 8, 15]
(0..3).map do |y|
(0..2).map do |x|
(0..(7 * hl[y]-1)).map do |i|
cx = xl[x] + i % 7
cy = yl[y] + (i / 7) * 2
cell = worksheet[cy][cx]
if cell.value
cell.fill_color == "FFFF99FF" ? 1 : 0
end
end.join
end
end.flatten(1)
end
def holiday
[["1000011000001100000110000011000", "0011000001100011111100011001", "0011000001100000110000011000000", "100111110000011000001100000110", "0000110000011000001100000110000", "011000001100000111000011000001", "1000001100000110000011000001100", "0001100000110000011000001100000", "110000011000001100000111000011", "0000011001001100000110000011000", "001100000110000011000001100000", "1100000110000011000000100000111"],
["1000110000011000000100000110000", "0111111111000001100000010001", "1110000011000001100000110000011", "000111100000110000011000001100", "0001100000110000011000001100000", "110000111000001100000110000011", "0000011000001100000110000011000", "0011000001100000110000011000001", "100000110000111000001100000110", "0000010001111000001100000110000", "011000001100000110000011000001", "1000001100000110000011000001100"]]
end
def check_holiday(y, m, d)
true if holiday[y-2018][m-1][d-1] == "1"
end
# [read(107), read(108)]
# check_holiday(2019, 12, 28)
|