Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- This file: -- http://anggtwu.net/LUA/Calendar1.lua.html -- http://anggtwu.net/LUA/Calendar1.lua -- (find-angg "LUA/Calendar1.lua") -- Author: Eduardo Ochs <eduardoochs@gmail.com> -- -- (defun e () (interactive) (find-angg "LUA/Calendar1.lua")) -- «.Calendar» (to "Calendar") -- «.Calendar-tests» (to "Calendar-tests") -- «.Feriados» (to "Feriados") -- «.Feriados-tests» (to "Feriados-tests") -- «.Aulas» (to "Aulas") -- «.Aulas-tests» (to "Aulas-tests") -- «.diasdeaula-2024.1» (to "diasdeaula-2024.1") -- «.diasdeaula» (to "diasdeaula") 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") -- cal_mes_ndias = 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 = 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 = 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, }, } -- «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] = {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) --]] -- _ _ -- / \ _ _| | __ _ ___ -- / _ \| | | | |/ _` / __| -- / ___ \ |_| | | (_| \__ \ -- /_/ \_\__,_|_|\__,_|___/ -- -- «Aulas» (to ".Aulas") Aulas = Class { type = "Aulas", from = function (bigstr) local aulas = Aulas(splitlines(bigstr)) aulas.n = 0 return aulas end, __tostring = function (as) return mytostringv(as) end, __index = { incr = function (as) as.n = as.n + 1; return as end, blogme = function (as, n) n = n or as.n if as[n] then return format(" [GRAY %s]", bitrim(as[n])) end end, latex = function (as, n) n = n or as.n if as[n] then return format(" %s", bitrim(as[n])) end end, }, } -- «Aulas-tests» (to ".Aulas-tests") --[==[ * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) dofile "Calendar1.lua" aulas = Aulas.from [[ um dois ]] = aulas = aulas:blogme(1) = aulas:blogme(2) = aulas:blogme(3) = aulas:blogme() = aulas:incr():blogme() = aulas:incr():blogme() = aulas:incr():blogme() --]==] aulas_c3_bigstr = [=[ 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. Fórmula de Taylor. Fórmula de Taylor. 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. Plano tangente e reta normal. Derivada direcional. Derivadas parciais. Derivadas parciais. Vetor gradiente. 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. P2. Revisão e dúvidas. VR. Revisão e dúvidas. VS. ]=] aulas_c2_bigstr = [=[ Revisão de diferenciação. 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. Exercícios de como estruturar contas e demonstrações. Mudança de variáveis. 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. Mudança de variável na integral definida. P1. Funções não integráveis. Integrais impróprias. Volumes. Volume de sólidos de revolução. 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. ]=] -- «diasdeaula-2024.1» (to ".diasdeaula-2024.1") --[==[ * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) dofile "Calendar1.lua" 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 firstday = cal.days["mar 18"] lastday = cal.days["jul 17"] diasdeaula = VTable(split("2a 3a 4a ")):transp() -- Calculo 2A diasdeaula = VTable(split("2a 4a ")):transp() -- Calculo 3 = firstday = lastday = diasdeaula aulas = Aulas.from(aulas_c2_bigstr) aulas = Aulas.from(aulas_c3_bigstr) = aulas n = 1 aulas.n = 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:blogme(day.yday) local aula = (not fer) and aulas:incr():blogme() printf("[BR] Aula %s (%s %s/%s)%s\n", n, dds, dd, mes, fer or aula or "") n = n + 1 end end n = 1 aulas.n = 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:latex(day.yday) local aula = (not fer) and aulas:incr():latex() printf("%s & %s/%s &%s \\\\\n", n, dd, mes, fer or aula or "") n = n + 1 end end --]==] -- «diasdeaula» (to ".diasdeaula") --[==[ * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) dofile "Calendar1.lua" 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 " = feriados firstday = cal.days["ago 28"] lastday = cal.days["dec 20"] diasdeaula = VTable(split("2a 3a 4a ")):transp() -- Calculo 2A diasdeaula = VTable(split(" 4a 6a")):transp() -- Calculo 3 = firstday = lastday = diasdeaula aulas = Aulas.from(aulas_c2_bigstr) aulas = Aulas.from(aulas_c3_bigstr) = aulas n = 1 aulas.n = 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:blogme(day.yday) local aula = (not fer) and aulas:incr():blogme() printf("[BR] Aula %s (%s %s/%s)%s\n", n, dds, dd, mes, fer or aula or "") n = n + 1 end end n = 1 aulas.n = 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:latex(day.yday) local aula = (not fer) and aulas:incr():latex() printf("%s & %s/%s &%s \\\\\n", n, dd, mes, fer or aula or "") n = n + 1 end end feriados = VTable {} feriados_add = function (dms, label) for yday,md,dds in cal:parse(dms) do print(yday,md,dds, label) feriados[yday] = label end end 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 --]==] -- Local Variables: -- coding: utf-8-unix -- End: