|
Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- This file:
-- http://anggtwu.net/LUA/Calendar2.lua.html
-- http://anggtwu.net/LUA/Calendar2.lua
-- (find-angg "LUA/Calendar2.lua")
-- Author: Eduardo Ochs <eduardoochs@gmail.com>
--
-- (defun o () (interactive) (find-angg "LUA/Calendar1.lua"))
-- (defun e () (interactive) (find-angg "LUA/Calendar2.lua"))
-- «.Calendar» (to "Calendar")
-- «.Calendar-tests» (to "Calendar-tests")
-- «.Feriados» (to "Feriados")
-- «.Feriados-tests» (to "Feriados-tests")
-- «.Basic» (to "Basic")
-- «.Basic-tests» (to "Basic-tests")
VTable.__index.transp = function (vt)
for _,k in ipairs(keys(vt)) do local v=vt[k]; vt[v]=k end
return vt
end
mod = function (a,b) return select(2, divmod(a,b)) end
--[[
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "Calendar1.lua"
= VTable { 10, 20}:transp()
= VTable { "a", "b"}:transp()
= VTable {a=10, b=20}:transp()
= divmod(32, 10)
= mod(32, 10)
--]]
-- ____ _ _
-- / ___|__ _| | ___ _ __ __| | __ _ _ __
-- | | / _` | |/ _ \ '_ \ / _` |/ _` | '__|
-- | |__| (_| | | __/ | | | (_| | (_| | |
-- \____\__,_|_|\___|_| |_|\__,_|\__,_|_|
--
-- «Calendar» (to ".Calendar")
-- Based on: (find-angg "LUA/Calendar1.lua" "Calendar")
cal_mes_ndias_nonleap = VTable {31, 28, 31, 30, 31, 30, -- jan fev mar abr mai jun
31, 31, 30, 31, 30, 31} -- jul ago set out nov dez
cal_mes_ndias_leap = VTable {31, 29, 31, 30, 31, 30, -- jan fev mar abr mai jun
31, 31, 30, 31, 30, 31} -- jul ago set out nov dez
cal_mes_ndias = cal_mes_ndias_leap
cal_mes = VTable(split"jan fev mar abr mai jun jul ago set out nov dez"):transp()
cal_mon = VTable(split"jan feb mar apr may jun jul aug sep oct nov dec"):transp()
cal_dds = VTable(split"dom 2a 3a 4a 5a 6a sab"):transp()
cal_wkd = VTable(split"sun mon tue wed tue fri sat"):transp()
cal_wkdn = function (s) return cal_dds[s] or cal_wkd[s] end
Calendar = Class {
type = "Calendar",
new = function (jan1)
return Calendar {jan1 = cal_wkdn(jan1)}
end,
startingwith = function (jan1)
return Calendar.new(jan1):makedays():transp()
end,
__index = {
wkdn = function (cal, yday)
local n = yday + cal.jan1 - 1
return mod(n-1, 7) + 1
end,
makedays = function (cal)
local days = VTable {}
for monthn=1,12 do
local mes = cal_mes[monthn]
local mon = cal_mon[monthn]
local mdays = cal_mes_ndias[monthn]
for mday=1,mdays do
local yday = #days + 1
local wkdn = cal:wkdn(yday)
local dds = cal_dds[wkdn]
local wkd = cal_wkd[wkdn]
local day = HTable {month=mon, mes=mes,
day=mday, yday=yday, dd=format("%02d", mday),
dds=dds, wkd=wkd, wkdn=wkdn}
table.insert(days, day)
end
end
cal.days = days
return cal
end,
transp = function (cal)
for i=1,#cal.days do
local day = cal.days[i]
local mes_dd = day.mes.." "..day.dd
local mon_dd = day.month.." "..day.dd
cal.days[mes_dd] = day
cal.days[mon_dd] = day
end
return cal
end,
--
format = function (cal, fmt, d)
local day = cal.days[d]
return (fmt:gsub("<(.-)>", day))
end,
parse = function (cal, dstr) return cow(function ()
for dd,mmm in dstr:gmatch("([0-9]+)/([a-z]+)") do
local mmm_dd = mmm.." "..dd
local day = cal.days[mmm_dd]
local yday = day.yday
coy(yday, mmm_dd, day.dds)
end
end)
end,
testparse = function (cal, dstr)
for yday,md,dds in cal:parse(datas) do
print(yday, md, dds)
end
end
},
}
-- «Calendar-tests» (to ".Calendar-tests")
--[[
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "Calendar1.lua"
-- 2024:
cal = Calendar.startingwith("mon")
= cal.days[4]
= cal.days[60]
= cal.days[61]
= cal:format("<dd>/<mes>", 4)
-- 2023:
cal = Calendar.new("sun")
= cal:wkdn(4)
= cal:wkdn(7)
= cal:wkdn(8)
= cal:wkdn(10)
cal = Calendar.startingwith("sun")
= cal.days[4]
= cal:format("<dd>/<mes>", 4)
--]]
-- _____ _ _
-- | ___|__ _ __(_) __ _ __| | ___ ___
-- | |_ / _ \ '__| |/ _` |/ _` |/ _ \/ __|
-- | _| __/ | | | (_| | (_| | (_) \__ \
-- |_| \___|_| |_|\__,_|\__,_|\___/|___/
--
-- «Feriados» (to ".Feriados")
Feriados = Class {
type = "Feriados",
__tostring = function (fe) return mytostringv(fe) end,
__index = {
add = function (fe, bigstr)
local datas,cor,label = bigstr:match("^(.-)::%s*(%S+)%s+(.*)")
for yday,md,dds in cal:parse(datas) do
fe[yday] = HTable {cor, bitrim(label)}
end
end,
blogme = function (fe, yday)
if fe[yday] then return format(" [%s %s]", fe[yday][1], fe[yday][2]) end
end,
latex = function (fe, yday)
if fe[yday] then return format(" \\it %s", fe[yday][2]) end
end,
},
}
-- «Feriados-tests» (to ".Feriados-tests")
--[[
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "Calendar1.lua"
-- 2024:
cal = Calendar.startingwith("mon")
feriados = Feriados {}
= feriados
feriados:add " 01/jan 29/mar 10/apr 21/apr 01/may 07/sep :: FER Feriado "
feriados:add " 12/oct 02/nov 15/nov 20/nov 25/dez 31/dez :: FER Feriado "
feriados:add " 12/feb 13/feb 14/feb 30/may 31/may 28/oct 24/dec :: FER Ponto facultativo "
= feriados
-- 2023:
cal = Calendar.startingwith("sun")
feriados = Feriados {}
= feriados
feriados:add " 07/set 12/out 02/nov 15/nov 20/nov :: FER Feriado "
feriados:add " 08/set 13/out 03/nov :: FER Ponto facultativo "
feriados:add " 16/out 17/out 18/out 19/out 20/out :: FER Semana Acadêmica "
feriados:add " 03/out :: FER Vou repor esta aula em outro dia "
= feriados
= feriados:blogme(290)
= feriados:blogme(-42)
--]]
-- ____ _
-- | __ ) __ _ ___(_) ___
-- | _ \ / _` / __| |/ __|
-- | |_) | (_| \__ \ | (__
-- |____/ \__,_|___/_|\___|
--
-- «Basic» (to ".Basic")
basic_2023 = function ()
cal_mes_ndias = cal_mes_ndias_leap
cal = Calendar.startingwith("sun")
feriados = Feriados {}
feriados:add " 07/set 12/out 02/nov 15/nov 20/nov :: FER Feriado "
feriados:add " 08/set 13/out 03/nov :: FER Ponto facultativo "
feriados:add " 16/out 17/out 18/out 19/out 20/out :: FER Semana Acadêmica "
feriados:add " 03/out :: FER Vou repor esta aula em outro dia "
end
basic_2024 = function ()
cal_mes_ndias = cal_mes_ndias_leap
cal = Calendar.startingwith("mon")
feriados = Feriados {}
feriados:add " 01/jan 29/mar 10/apr 21/apr 01/may 07/sep :: FER Feriado "
feriados:add " 12/oct 02/nov 15/nov 20/nov 25/dez 31/dez :: FER Feriado "
feriados:add " 12/feb 13/feb 14/feb 30/may 31/may 28/oct 24/dec :: FER Ponto facultativo "
end
basic_2024_1 = function ()
basic_2024()
firstday = cal.days["mar 18"]
lastday = cal.days["jul 17"]
end
basic_2024_1_C2 = function ()
basic_2024_1()
diasdeaula = VTable(split("2a 3a 4a ")):transp()
end
basic_2024_1_C3 = function ()
basic_2024_1()
diasdeaula = VTable(split("2a 4a ")):transp()
end
basic_dias_de_aula = function () return cow(function ()
local k,n = 0,0
for i=firstday.yday,lastday.yday do
local day = cal.days[i]
local dds,dd,mes = day.dds,day.dd,day.mes
if diasdeaula[dds] then
local fer = feriados[i]
k=k+1
if fer
then coy(i, day, dds, dd, mes, k, nil, fer)
else n=n+1; coy(i, day, dds, dd, mes, k, n, nil)
end
end
end
end)
end
-- «Basic-tests» (to ".Basic-tests")
--[==[
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "Calendar2.lua"
basic_2024_1_C2()
basic_2024_1_C3()
= firstday
= lastday
= feriados
= feriados[101]
= feriados:blogme(101)
= feriados:latex (101)
= feriados:latex (102) -- nil
for i,day,dds,dd,mes,k,n,fer in basic_dias_de_aula() do
print(day)
end
for i,day,dds,dd,mes,k,n,fer in basic_dias_de_aula() do
print(i,dds,dd,mes,k,n,fer)
end
= feriados
--]==]
-- _ _
-- / \ _ _| | __ _ ___
-- / _ \| | | | |/ _` / __|
-- / ___ \ |_| | | (_| \__ \
-- /_/ \_\__,_|_|\__,_|___/
--
-- «Aulas» (to ".Aulas")
Aulas = Class {
type = "Aulas",
from = function (bigstr)
local aulas = Aulas(map(bitrim, splitlines(bigstr)))
return aulas
end,
__tostring = function (as) return mytostringv(as) end,
__index = {
blogme = function (as, n)
if as[n] then return format(" [GRAY %s]", bitrim(as[n])) end
end,
latex = function (as, n)
if as[n] then return format(" %s", bitrim(as[n])) end
end,
blogme_all = function (as)
local out = ""
local add = function (...) out = out..format(...) end
for i,day,dds,dd,mes,k,n,fer in basic_dias_de_aula() do
if fer
then add("Aula %s (%s %s/%s) %s\n", k,dds,dd,mes, feriados:blogme(i) or "")
else add("Aula %s (%s %s/%s) %s\n", k,dds,dd,mes, aulas:blogme(n) or n.."/"..k)
end
end
return out
end,
latex_all = function (as)
local out = ""
local add = function (...) out = out..format(...) end
for i,day,dds,dd,mes,k,n,fer in basic_dias_de_aula() do
if fer
then add("%s & %s/%s (%s) & %s \\\\\n", k,dd,mes,dds, feriados:latex(i) or "")
else add("%s & %s/%s (%s) & %s \\\\\n", k,dd,mes,dds, aulas:latex(n) or n.."/"..k)
end
end
return out
end,
},
}
-- «Aulas-tests» (to ".Aulas-tests")
--[==[
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "Calendar2.lua"
aulas = Aulas.from [[
um
dois
]]
= aulas
= aulas:blogme(1)
= aulas:blogme(2)
= aulas:blogme(3)
= aulas:blogme()
basic_2024_1_C3()
aulas = Aulas.from "Um \n Dois \n Tres \n Q \n C \n S \n S \n O"
= aulas
= aulas:blogme_all()
= aulas:latex_all()
--]==]
--[==[
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "Calendar2.lua"
basic_2024_1_C3()
aulas = Aulas.from(aulas_c3_bigstr)
= aulas
= aulas:blogme_all()
= aulas:latex_all()
for i,day,dds,dd,mes,k,n,fer in basic_dias_de_aula() do
if fer
then printf("Aula %s (%s %s/%s) %s\n", k,dds,dd,mes, feriados:blogme(i) or "")
else printf("Aula %s (%s %s/%s) %s\n", k,dds,dd,mes, aulas:blogme(n) or "")
end
end
for i,day,dds,dd,mes,k,n,fer in basic_dias_de_aula() do
if fer
then printf("%s & %s/%s (%s) & %s \\\\\n", k,dd,mes,dds, feriados:latex(i) or "")
else printf("%s & %s/%s (%s) & %s \\\\\n", k,dd,mes,dds, aulas:latex(n) or "")
end
end
-- (c2m232plcp 2 "plano-de-curso")
-- (c2m232plca "plano-de-curso")
--]==]
-- (c3m241plcp 2 "conteudo-programatico")
-- (c3m241plca "conteudo-programatico")
aulas_c3_bigstr = [=[
Revisão de notações para conjuntos e técnicas básicas.
Revisão de notações para conjuntos e técnicas básicas.
Revisão de pontos e vetores.
Função vetorial de uma variável real: definição e exemplos, derivada.
Função vetorial de uma variável real: definição e exemplos, derivada.
Limite e continuidade. Definição e propriedades.
Variáveis dependentes e diferenciais.
Variáveis dependentes e diferenciais.
Fórmula de Taylor para funções vetoriais.
Funções reais de duas variáveis: gráficos e conjuntos de nível.
Funções reais de duas variáveis: gráficos e conjuntos de nível.
Derivadas parciais.
Fórmula de Taylor para superfícies.
Plano tangente e reta normal.
Vetor gradiente.
Derivada direcional.
Diferencial total.
Funções homogêneas.
Derivadas parciais de ordens superiores.
Regra da cadeia.
P1.
Função diferenciável. Uma condição suficiente para diferenciabilidade.
Noções de conjuntos abertos e fechados no $\R^n$.
Noções de conjuntos abertos e fechados no $\R^n$.
Máximos e mínimos sobre um compacto.
Extremos relativos. Condição necessária para a existência de extremos relativos.
Ponto crítico. Teste da derivada segunda.
Multiplicadores de Lagrange.
P2.
Revisão e dúvidas.
VR.
Revisão e dúvidas.
VS.
Vista de prova da VS.
]=]
aulas_c2_bigstr = [=[
Revisão de notações para conjuntos e técnicas básicas.
Revisão de notações para conjuntos e técnicas básicas.
Revisão de diferenciação.
Integral definida, integral como área, introdução aos TFCs, propriedades da integral.
Integral definida, integral como área, introdução aos TFCs, propriedades da integral.
Revisão de como justificar cada passo de uma demonstração.
Definição de solução de EDO. Integração como EDO. Integral indefinida.
Integração por partes.
Frações parciais.
Frações parciais.
Exercícios de como estruturar contas e demonstrações.
Mudança de variável na integral definida.
Mudança de variável na integral indefinida.
Integrais de potências de senos e cossenos.
Substituição trigonométrica.
Substituição trigonométrica.
Substituição trigonométrica.
Somas de Riemann.
Somas de Riemann.
Somas de Riemann.
Somas de Riemann.
TFC1 e TFC2.
P1.
Funções não integráveis.
Volumes. Volume de sólidos de revolução.
Volumes. Volume de sólidos de revolução.
Integrais impróprias.
Comprimento de arco.
Campos de direções. EDOs com variáveis separáveis.
Condições iniciais.
EDOs lineares de ordens 1 e 2 com coeficientes constantes.
Espaço de soluções. A álgebra das funções infinitamente diferenciáveis de $\R$ em $\R$.
Revisão de números complexos.
Identidades trigonométricas.
Soluções reais para o problema da vibração amortecida.
EDOs exatas.
EDOs exatas.
EDOs lineares não homogêneas.
Introdução a variação de parâmetros.
Introdução a séries de Taylor e MacLaurin.
Revisão de sequências convergentes e divergentes.
Revisão de séries convergentes e divergentes. Teste da integral.
Teste da razão e da raiz. Raio de convergência.
Revisão e dúvidas.
P2.
Revisão e dúvidas.
Revisão e dúvidas.
VR.
Revisão e dúvidas.
Revisão e dúvidas.
VS.
Vista de prova da VS.
]=]
--[==[
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "Calendar2.lua"
basic_2024_1_C2()
aulas = Aulas.from(aulas_c2_bigstr)
= aulas
= aulas:blogme_all()
= aulas:latex_all()
basic_2024_1_C3()
aulas = Aulas.from(aulas_c3_bigstr)
= aulas
= aulas:blogme_all()
= aulas:latex_all()
--]==]
-- Local Variables:
-- coding: utf-8-unix
-- End: