Calendar: Difference between revisions
Content added Content deleted
m (→{{header|REXX}}: elided some stray garbage that seemed to be introduced by using an @ character in the outut.) |
|||
Line 3,531: | Line 3,531: | ||
26 27 28 29 30 31 23 24 25 26 27 28 29 28 29 30 31 |
26 27 28 29 30 31 23 24 25 26 27 28 29 28 29 30 31 |
||
30 </pre> |
30 </pre> |
||
=={{header|Julia}}== |
|||
<lang julia>using Dates |
|||
const pagesizes = Dict( "lpr" => [132, 66], "tn3270" => [80, 43]) |
|||
pagefit(prn) = haskey(pagesizes, prn) ? |
|||
[div(pagesizes[prn][1], 22), div(pagesizes[prn][2], 12)] : [1, 1] |
|||
pagecols(prn) = haskey(pagesizes, prn) ? pagesizes[prn][1] : 20 |
|||
function centerobject(x, cols) |
|||
content = string(x) |
|||
rpad(lpad(content, div(cols + length(content), 2)), cols) |
|||
end |
|||
function ljustlines(x, cols) |
|||
arr = Vector{String}() |
|||
for s in split(x, "\n") |
|||
push!(arr, rpad(s, cols)[1:cols]) |
|||
end |
|||
join(arr, "\n") |
|||
end |
|||
function formatmonth(yr, mo) |
|||
dt = Date("$yr-$mo-01") |
|||
dayofweekfirst = dayofweek(dt) |
|||
numweeklines = 1 |
|||
str = centerobject(monthname(dt), 20) * "\nMo Tu We Th Fr Sa Su\n" |
|||
str *= " " ^ (3 * (dayofweekfirst - 1)) |
|||
str *= lpad(string(1), 2) |
|||
for i = 2:daysinmonth(dt) |
|||
if (i + dayofweekfirst + 5) % 7 == 0 |
|||
str *= "\n" |
|||
numweeklines += 1 |
|||
str *= lpad(i, 2) |
|||
else |
|||
str *= lpad(string(i), 3) |
|||
end |
|||
end |
|||
str *= "\n\n" |
|||
if numweeklines < 6 |
|||
str *= "\n" |
|||
end |
|||
ljustlines(str, 20) |
|||
end |
|||
function formatyear(displayyear, printertype) |
|||
calmonths = [formatmonth(displayyear, mo) for mo in 1:12] |
|||
columns = pagecols(printertype) |
|||
monthsperline = pagefit(printertype)[1] |
|||
joinspaces = (monthsperline > 1) ? |
|||
div(columns - monthsperline * 20, monthsperline - 1) : 1 |
|||
joinspaces = max(joinspaces, 1) |
|||
str = "\n" * centerobject(displayyear, columns) * "\n" |
|||
monthcal = [split(formatmonth(displayyear, i), "\n") for i in 1:12] |
|||
for i in 1:monthsperline:length(calmonths) - 1 |
|||
for j in 1:length(monthcal[1]) |
|||
monthlines = map(x->monthcal[x][j], i:i + monthsperline - 1) |
|||
str *= rpad(join(monthlines, " " ^ joinspaces), columns) * "\n" |
|||
end |
|||
str *= "\n" |
|||
end |
|||
str |
|||
end |
|||
function lineprintcalendar(years) |
|||
for year in years, printer in keys(pagesizes) |
|||
println(formatyear(year, printer)) |
|||
end |
|||
end |
|||
lineprintcalendar(1969) |
|||
</lang> {{output}} <pre> 1969 |
|||
January February March April May June |
|||
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su |
|||
1 2 3 4 5 1 2 1 2 1 2 3 4 5 6 1 2 3 4 1 |
|||
6 7 8 9 10 11 12 3 4 5 6 7 8 9 3 4 5 6 7 8 9 7 8 9 10 11 12 13 5 6 7 8 9 10 11 2 3 4 5 6 7 8 |
|||
13 14 15 16 17 18 19 10 11 12 13 14 15 16 10 11 12 13 14 15 16 14 15 16 17 18 19 20 12 13 14 15 16 17 18 9 10 11 12 13 14 15 |
|||
20 21 22 23 24 25 26 17 18 19 20 21 22 23 17 18 19 20 21 22 23 21 22 23 24 25 26 27 19 20 21 22 23 24 25 16 17 18 19 20 21 22 |
|||
27 28 29 30 31 24 25 26 27 28 24 25 26 27 28 29 30 28 29 30 26 27 28 29 30 31 23 24 25 26 27 28 29 |
|||
31 30 |
|||
July August September October November December |
|||
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su |
|||
1 2 3 4 5 6 1 2 3 1 2 3 4 5 6 7 1 2 3 4 5 1 2 1 2 3 4 5 6 7 |
|||
7 8 9 10 11 12 13 4 5 6 7 8 9 10 8 9 10 11 12 13 14 6 7 8 9 10 11 12 3 4 5 6 7 8 9 8 9 10 11 12 13 14 |
|||
14 15 16 17 18 19 20 11 12 13 14 15 16 17 15 16 17 18 19 20 21 13 14 15 16 17 18 19 10 11 12 13 14 15 16 15 16 17 18 19 20 21 |
|||
21 22 23 24 25 26 27 18 19 20 21 22 23 24 22 23 24 25 26 27 28 20 21 22 23 24 25 26 17 18 19 20 21 22 23 22 23 24 25 26 27 28 |
|||
28 29 30 31 25 26 27 28 29 30 31 29 30 27 28 29 30 31 24 25 26 27 28 29 30 29 30 31 |
|||
1969 |
|||
January February March |
|||
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su |
|||
1 2 3 4 5 1 2 1 2 |
|||
6 7 8 9 10 11 12 3 4 5 6 7 8 9 3 4 5 6 7 8 9 |
|||
13 14 15 16 17 18 19 10 11 12 13 14 15 16 10 11 12 13 14 15 16 |
|||
20 21 22 23 24 25 26 17 18 19 20 21 22 23 17 18 19 20 21 22 23 |
|||
27 28 29 30 31 24 25 26 27 28 24 25 26 27 28 29 30 |
|||
31 |
|||
April May June |
|||
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su |
|||
1 2 3 4 5 6 1 2 3 4 1 |
|||
7 8 9 10 11 12 13 5 6 7 8 9 10 11 2 3 4 5 6 7 8 |
|||
14 15 16 17 18 19 20 12 13 14 15 16 17 18 9 10 11 12 13 14 15 |
|||
21 22 23 24 25 26 27 19 20 21 22 23 24 25 16 17 18 19 20 21 22 |
|||
28 29 30 26 27 28 29 30 31 23 24 25 26 27 28 29 |
|||
30 |
|||
July August September |
|||
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su |
|||
1 2 3 4 5 6 1 2 3 1 2 3 4 5 6 7 |
|||
7 8 9 10 11 12 13 4 5 6 7 8 9 10 8 9 10 11 12 13 14 |
|||
14 15 16 17 18 19 20 11 12 13 14 15 16 17 15 16 17 18 19 20 21 |
|||
21 22 23 24 25 26 27 18 19 20 21 22 23 24 22 23 24 25 26 27 28 |
|||
28 29 30 31 25 26 27 28 29 30 31 29 30 |
|||
October November December |
|||
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su |
|||
1 2 3 4 5 1 2 1 2 3 4 5 6 7 |
|||
6 7 8 9 10 11 12 3 4 5 6 7 8 9 8 9 10 11 12 13 14 |
|||
13 14 15 16 17 18 19 10 11 12 13 14 15 16 15 16 17 18 19 20 21 |
|||
20 21 22 23 24 25 26 17 18 19 20 21 22 23 22 23 24 25 26 27 28 |
|||
27 28 29 30 31 24 25 26 27 28 29 30 29 30 31 |
|||
</pre> |
|||
=={{header|Kotlin}}== |
=={{header|Kotlin}}== |
||
{{trans|D}} |
{{trans|D}} |