|
Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- This file:
-- http://anggtwu.net/LUA/Calendar3.lua.html
-- http://anggtwu.net/LUA/Calendar3.lua
-- (find-angg "LUA/Calendar3.lua")
-- Author: Eduardo Ochs <eduardoochs@gmail.com>
--
-- (defun e () (interactive) (find-angg "LUA/Calendar3.lua"))
--
-- «.Feriados» (to "Feriados")
-- «.Feriados-2024.2» (to "Feriados-2024.2")
-- «.Feriados-tests» (to "Feriados-tests")
-- «.KTable» (to "KTable")
-- «.NQuadros» (to "NQuadros")
-- «.NQuadros-tests» (to "NQuadros-tests")
-- «.NQuadros-emacsqs» (to "NQuadros-emacsqs")
-- «.Dia» (to "Dia")
-- «.Dia-tests» (to "Dia-tests")
-- «.Materia0» (to "Materia0")
-- «.Materia0-tests» (to "Materia0-tests")
-- «.Materia0-quadros» (to "Materia0-quadros")
load_sqlite() -- (find-angg "LUA/lua50init.lua" "load_sqlite")
-- (find-angg "LUA/SQLite1.lua" "dates_between")
-- _____ _ _
-- | ___|__ _ __(_) __ _ __| | ___ ___
-- | |_ / _ \ '__| |/ _` |/ _` |/ _ \/ __|
-- | _| __/ | | | (_| | (_| | (_) \__ \
-- |_| \___|_| |_|\__,_|\__,_|\___/|___/
--
-- «Feriados» (to ".Feriados")
--
Feriados = Class {
type = "Feriados",
from = function (bigstr)
local T = VTable {}
local pat = "^%s*(%S+)%s+(.*)"
for _,li in ipairs(splitlines(bigstr)) do
local when,rest = li:match(pat)
if when:match":" then
local date1,date2 = when:match("^([^:]+):(.*)")
for _,date in ipairs(dates_between(date1,date2)) do
table.insert(T, HTable {date,rest})
end
else
table.insert(T, HTable {when,rest})
end
end
local S = Set.new()
for _,kv in ipairs(T) do S:add(kv[1], kv[2]) end
return Feriados {T=T, S=S}
end,
__index = {
},
}
-- «Feriados-2024.2» (to ".Feriados-2024.2")
--
feriados_2024_2_bigstr = [=[
2024-10-12 Nossa Senhora Aparecida
2024-10-14:2024-10-18 Semana Acadêmica
2024-10-28 Dia do Servidor Público
2024-11-02 Finados
2024-11-15 Proclamação da República
2024-11-20 Dia da Consciência Negra
2024-12-24 Véspera do Natal
2024-12-25 Natal
2024-12-31 Véspera do Ano Novo
2024-12-23:2025-01-05 Recesso
]=]
feriados_2024_2 = Feriados.from(feriados_2024_2_bigstr)
-- «Feriados-tests» (to ".Feriados-tests")
--[[
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "Calendar3.lua"
= feriados_2024_2.T
= feriados_2024_2.S
= feriados_2024_2.S:ksc("\n")
for k,v in feriados_2024_2.S:gen() do
print(k,v)
end
--]]
meses = VTable(split("jan fev mar abr mai jun jul ago set out nov dez"))
--[[
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "Calendar3.lua"
= meses
= meses[5]
--]]
-- _ _______ _ _
-- | |/ /_ _|_ _| |__ | | ___
-- | ' / | |/ _` | '_ \| |/ _ \
-- | . \ | | (_| | |_) | | __/
-- |_|\_\ |_|\__,_|_.__/|_|\___|
--
-- «KTable» (to ".KTable")
-- (find-angg "LUA/lua50init.lua" "HTable-and-VTable")
--
KTable = Class {
type = "KTable",
__tostring = mytostringv,
__index = {
ks = function (kt) return sortedkeys(kt) end,
vs = function (kt)
local A = VTable {}
for _,k in ipairs(kt:ks()) do table.insert(A, kt[k]) end
return A
end,
vsc = function (kt,sep)
return table.concat(kt:vs(), sep or "\n")
end,
},
}
-- (find-sh "cd ~/2024.2-C2/ && ls *.jpg")
-- (find-angg "LUA/lua50init.lua" "Set")
-- _ _ ___ _
-- | \ | |/ _ \ _ _ __ _ __| |_ __ ___ ___
-- | \| | | | | | | |/ _` |/ _` | '__/ _ \/ __|
-- | |\ | |_| | |_| | (_| | (_| | | | (_) \__ \
-- |_| \_|\__\_\\__,_|\__,_|\__,_|_| \___/|___/
--
-- «NQuadros» (to ".NQuadros")
-- Número de (fotos de) quadros em cada dia.
--
NQuadros = Class {
type = "NQuadros",
from0 = function (dir,sem) return NQuadros {dir=dir,sem=sem,ns=Set.new()} end,
from = function (dir,sem) return NQuadros.from0(dir,sem):registerfnames() end,
__index = {
splitdirname = function (nq) return nq.dir:match("^..(..)%.(.)%-C(.)") end,
findpage = function (nq)
local yy,s,m = nq:splitdirname()
return format("find-c%sq%s%spage", m, yy, s)
end,
ls0 = function (nq) return format("cd ~/%s/ && ls *.jpg", nq.dir) end,
ls = function (nq) return getoutput(nq:ls0()) end,
fnames = function (nq) return VTable(split(nq:ls())) end,
pat = "^(....)(..)(..)%-..%-(.)",
splitfname = function (nq,fname) return fname:match(nq.pat) end,
register2 = function (nq,date,n) nq.ns:add(date,n) end,
register4 = function (nq,yyyy,mm,dd,n)
nq:register2(format("%s-%s-%s", yyyy,mm,dd), n+0)
end,
registerfnames = function (nq)
for _,fname in ipairs(nq:fnames()) do
local yyyy,mm,dd,n = nq:splitfname(fname)
nq:register4(yyyy,mm,dd,n+0)
end
return nq
end,
gen2 = function (nq) return nq.ns:gen() end,
gen3 = function (nq) return cow(function ()
local now = 1
for a,b in nq:gen2() do
coy(a,b,now)
now = now + b
end
end)
end,
findpages0 = function (nq)
A = KTable {}
for date,nqs,qinit in nq:gen3() do
local mm,dd = date:match("....%-(..)%-(..)")
local sexp = format('(%s %2s "%s/%s:")', nq:findpage(), qinit, dd, mm)
A[date] = ";; "..sexp
end
return A
end,
findpages = function (nq) return nq:findpages0():vsc() end,
--
cqs0 = function (nq)
local A = KTable {}
for date,nqs,qinit in nq:gen3() do
local yyyy,mm,dd = date:match("(....)%-(..)%-(..)")
local yy,s,m = nq:splitdirname()
local caepro = format("%s%sQ%s", m,nq.sem,qinit)
local cq = format("[C %5s], [Qjpgs %s%s%s %s]",
caepro, yyyy,mm,dd, nqs)
A[date] = cq
end
return A
end,
cqs = function (nq) return nq:cqs0():vsc() end,
--
emacsqs0 = function (nq)
local A = KTable {}
for date,nqs,qinit in nq:gen3() do
local yyyy,mm,dd = date:match("(....)%-(..)%-(..)")
local yy,s,m = nq:splitdirname()
local ds = diasdasemana[db:weekday(date)]
local emacsq = format(";; (find-c%sq%s%spage %2s \"%s %s/%s:\")",
m,yy,s, qinit, ds, dd,mm)
A[date] = emacsq
end
return A
end,
emacsqs = function (nq) return nq:emacsqs0():vsc() end,
},
}
-- «NQuadros-tests» (to ".NQuadros-tests")
--[[
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "Calendar3.lua"
nq = NQuadros {dir="2024.2-C2", sem="i", ns=Set.new()}
= nq:ls0()
= nq:ls()
= nq:fnames()
= nq:registerfnames()
for a,b in nq:gen2() do print(a,b) end
for a,b,c in nq:gen3() do print(a,b,c) end
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "Calendar3.lua"
nq = NQuadros.from("2024.2-C2", "i")
= nq:findpages0()
= nq:findpages()
= nq:cqs0()
= nq:cqs()
= nq:emacsqs()
--]]
-- «NQuadros-emacsqs» (to ".NQuadros-emacsqs")
--[[
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "Calendar3.lua"
-- (find-angg ".emacs" "c2q242")
nq = NQuadros.from("2024.2-C2", "i")
= nq:emacsqs()
-- (find-angg ".emacs" "c3q242")
nq = NQuadros.from("2024.2-C3", "i")
= nq:emacsqs()
--]]
-- ____ _
-- | _ \(_) __ _
-- | | | | |/ _` |
-- | |_| | | (_| |
-- |____/|_|\__,_|
--
-- «Dia» (to ".Dia")
--
Dia = Class {
type = "Dia",
__tostring = function (dia) return mytostring(dia) end,
__index = {
yyyy = function (dia) return dia.date:sub(1,4) end,
mm = function (dia) return dia.date:sub(6,7) end,
dd = function (dia) return dia.date:sub(9,10) end,
mes = function (dia) return meses[dia:mm()+0] end,
format = function (dia,fmt)
local f = function (s)
return Dia.__index[s] and dia[s](dia) or dia[s]
end
return (fmt:gsub("<(.-)>", f))
end,
--
-- [C 2jQ42], [Qjpgs 20241023 4]
cq0 = function (dia) return current_cqs0 and current_cqs0[dia.date] end,
cq = function (dia) return dia:cq0() and ", "..dia:cq0() or "" end,
--
plc_feriado = function (dia)
return dia:format("<a> & <dd>/<mes> (<ds>) & \\it <feriado> \\\\")
end,
plc_normal = function (dia)
return dia:format("<a> & <dd>/<mes> (<ds>) & <prog> \\\\")
end,
plc = function (dia)
return dia.feriado and dia:plc_feriado() or dia:plc_normal()
end,
blogme_feriado = function (dia)
return dia:format("[BR] Aula <a> (<ds> <dd>/<mes>) [FER <feriado>]")
end,
blogme_normal = function (dia)
return dia:format("[BR] Aula <a> (<ds> <dd>/<mes>) [GRAY <prog>]")
end,
blogme_normal = function (dia)
return dia:format("[BR] Aula <a> (<ds> <dd>/<mes>[#, [C 2jQ?], [Qjpgs <yyyy><mm><dd> 4]]) [GRAY <prog>]")
end,
blogme_normal = function (dia)
return dia:format("[BR] Aula <a> (<ds> <dd>/<mes><cq>) [GRAY <prog>]")
end,
blogme = function (dia)
return dia.feriado and dia:blogme_feriado() or dia:blogme_normal()
end,
},
}
-- «Dia-tests» (to ".Dia-tests")
--[[
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "Calendar3.lua"
d = Dia {date="2024-12-25"}
d = Dia {a=26, date="2024-11-18", ds="2a", prog="Bla"}
d = Dia {a=27, date="2024-11-20", ds="4a", feriado="Dia da Consciencia Negra"}
= d
= d:yyyy()
= d:mm()
= d:dd()
= d:mes()
= d:format("_<date>_<mes>_")
= d:format("<a> & <dd>/<mes> (<ds>) & <feriado> \\\\")
= d:plc_feriado()
= d:plc_normal()
= d:plc()
= d:blogme()
nq = NQuadros.from("2024.2-C2", "i")
= nq:cqs0()
= nq:cqs()
current_cqs0 = nq:cqs0()
d = Dia {a=42, date="2024-09-30", ds="9a", prog="Bla"}
= d:blogme()
d = Dia {a=42, date="2024-09-32", ds="9a", prog="Bla"}
= d:blogme()
--]]
-- __ __ _ _ ___
-- | \/ | __ _| |_ ___ _ __(_) __ _ / _ \
-- | |\/| |/ _` | __/ _ \ '__| |/ _` | | | |
-- | | | | (_| | || __/ | | | (_| | |_| |
-- |_| |_|\__,_|\__\___|_| |_|\__,_|\___/
--
-- «Materia0» (to ".Materia0")
--
Materia0 = Class {
type = "Materia0",
from = function (inicio,fim,dss0,feriados)
dss0 = dss0 or "2a 4a"
ferset = feriados and feriados.S or Set.new()
local dss = Set.from(split(dss0))
local dias0 = VTable {}
for _,date in ipairs(dates_between(inicio,fim)) do
local ds = diasdasemana[db:weekday(date)]
if dss:has(ds) then
table.insert(dias0, Dia {date=date, ds=ds, feriado=ferset:get(date)})
end
end
local dias1 = VTable {}
for _,dia in ipairs(dias0) do
if not ferset:has(dia.date) then table.insert(dias1,dia) end
end
for a,dia in ipairs(dias0) do dia.a = a end
for n,dia in ipairs(dias1) do dia.n = n end
return Materia0 {inicio=inicio, fim=fim, dss0=dss0, dias0=dias0, dias1=dias1}
end,
__index = {
setprog = function (m,n,prog)
m.dias1[n].prog = prog
return m
end,
setprogs = function (m,bigstr)
local progs = splitlines(bigstr)
PP(#progs, #m.dias1)
local K = min(#progs, #m.dias1)
for k=1,K do
local prog = progs[k]
m:setprog(k,bitrim(prog))
end
return m
end,
blogmes0 = function (m)
local A = VTable {}
for _,dia in ipairs(m.dias0) do table.insert(A, dia:blogme()) end
return A
end,
blogmes = function (m) return table.concat(m:blogmes0(), "\n") end,
},
}
-- «Materia0-tests» (to ".Materia0-tests")
--[==[
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "Calendar3.lua"
= feriados_2024_2.S
= feriados_2024_2.S:has("2024-12-31")
= feriados_2024_2.S:get("2024-12-31")
C2 = Materia0.from("2024-09-23", "2025-02-06", "2a 3a 4a", feriados_2024_2)
C3 = Materia0.from("2024-09-23", "2025-02-06", "2a 4a", feriados_2024_2)
= C2
= C2.dias0
= C3.dias0
= C2.dias1
= C3.dias1
C3:setprogs(C3_progs)
C2:setprogs(C2_progs)
= C3.dias0
= C2.dias0
nq = NQuadros.from("2024.2-C2", "j")
current_cqs0 = nq:cqs0()
= current_cqs0
= C2.dias0
= C2.dias0[2]
= C2.dias0[2]:blogme()
= C2:blogmes0()
= C2:blogmes()
nq = NQuadros.from("2024.2-C3", "j")
current_cqs0 = nq:cqs0()
= C3:blogmes()
--]==]
-- «Materia0-quadros» (to ".Materia0-quadros")
-- (find-TH "2024.2-C2" "agora")
-- (find-TH "2024.2-C3" "agora")
--[[
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "Calendar3.lua"
C2 = Materia0.from("2024-09-23", "2025-02-06", "2a 3a 4a", feriados_2024_2)
C3 = Materia0.from("2024-09-23", "2025-02-06", "2a 4a", feriados_2024_2)
C2:setprogs(C2_progs)
C3:setprogs(C3_progs)
nq = NQuadros.from("2024.2-C2", "j")
current_cqs0 = nq:cqs0()
= C2:blogmes()
nq = NQuadros.from("2024.2-C3", "j")
current_cqs0 = nq:cqs0()
= C3:blogmes()
--]]
C3_progs = [=[
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
]=]
--[[
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "Calendar3.lua"
C2 = Materia0.from("2024-09-23", "2025-02-06", "2a 3a 4a", feriados_2024_2)
C3 = Materia0.from("2024-09-23", "2025-02-06", "2a 4a", feriados_2024_2)
C3:setprogs(C3_progs)
C2:setprogs(C2_progs)
= C3.dias0
= C3.dias1
= C2.dias0
= C2.dias1
= C3.dias0
--]]
C2_progs = [=[
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
]=]
-- Local Variables:
-- coding: utf-8-unix
-- End: