Промер 1. Нахождение дня недели по дате
Иллюстрция алгоритма.
В качестве точки отсчета выбран четверг - 1 января 2026 года. Программа предусматривает только определение дней недели для дат
в интервале от начала 20 века до 31 декабряя 2025 г.
Пояняющее видео
Текст скрипта на языке Lua
-- Определение дня недели
m={31,28,31,30,31,30,31,31,30,31,30,31}
d={[1]="понедельник",[2]="вторник",[3]="среда",[4]="четверг",[5]="пятница",[6]="суббота",[7]="воскресенье"}
-- 01.01.2026 -- четверг
print("Введите год")
god=io.read()
god=tonumber(god)
print("Введите месяц (число)")
mes=io.read()
mes=tonumber(mes)
print("Введите день")
den=io.read()
den=tonumber(den)

if god<2025 then pg=2026-(god+1) else pg=0 end
dk=pg*365 -- количество дней в прошедших годах

-- учет високосных лет
i=2025
while i>god do
if i%4==0 then dk=dk+1 end
i=i-1
end

-- изменение длины февраля, если заданный год високосный
if(god%4==0) then m[2]=29 end

k=12
pm=0 -- количество дней в полных месяцах заданного года
while k>mes do pm=pm+m[k] k=k-1 end

p=m[mes]-den -- количество дней после заданной даты до конца месяца
dk=dk+pm+p -- количество дней между заданной датой и 1 января 2026 года

i=3-dk%7
if i<1 then i=i+7 end
print(den.."-"..mes.."-"..god.." день недели -"..d[i])