Реализации алгоритмов/Вечный календарь: различия между версиями

→‎Rust: Идиоматически верная реализация
(Реализация на классическом Бейсике; мелкие исправления в других разделах)
(→‎Rust: Идиоматически верная реализация)
type Weekday = u8;
 
fn weekday (mut year: Year, mut month: Month, day: Day) -> Weekday {
// Чтобы не делать параметры функции изменяемыми (mut),
// вычисления производятся во вложенной функции:
fn _weekday (y: Year, m: Month, d: Day) -> Weekday {
((dayd as Year + 31 * monthm as Year / 12 + yeary + yeary / 4 - yeary / 100 + yeary / 400) % 7) as Weekday
}
 
if month < 3 {
_weekday(year -= 1;, month + 10, day)
month += 10;
} else {
_weekday(year, month -= 2;, day)
}
((day as Year + 31 * month as Year / 12 + year + year / 4 - year / 100 + year / 400) % 7) as Weekday
}
</source>
74

правки