Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
43
Task/Doomsday-rule/Rust/doomsday-rule.rust
Normal file
43
Task/Doomsday-rule/Rust/doomsday-rule.rust
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
fn day_of_week(year: u32, month: u32, day: u32) -> u32 {
|
||||
const LEAPYEAR_FIRSTDOOMSDAYS: [u32; 12] = [4, 1, 7, 4, 2, 6, 4, 1, 5, 3, 7, 5];
|
||||
const NONLEAPYEAR_FIRSTDOOMSDAYS: [u32; 12] = [3, 7, 7, 4, 2, 6, 4, 1, 5, 3, 7, 5];
|
||||
assert!(year > 1581 && year < 10000);
|
||||
assert!(month >= 1 && month <= 12);
|
||||
assert!(day >= 1 && day <= 31);
|
||||
let doomsday = (2 + 5 * (year % 4) + 4 * (year % 100) + 6 * (year % 400)) % 7;
|
||||
let anchorday = if year % 4 != 0 || (year % 100 == 0 && year % 400 != 0) {
|
||||
NONLEAPYEAR_FIRSTDOOMSDAYS[month as usize - 1]
|
||||
} else {
|
||||
LEAPYEAR_FIRSTDOOMSDAYS[month as usize - 1]
|
||||
};
|
||||
(doomsday + day + 7 - anchorday) % 7
|
||||
}
|
||||
|
||||
fn print_day_of_week(year: u32, month: u32, day: u32) {
|
||||
const DAY_NAMES: [&str; 7] = [
|
||||
"Sunday",
|
||||
"Monday",
|
||||
"Tuesday",
|
||||
"Wednesday",
|
||||
"Thursday",
|
||||
"Friday",
|
||||
"Saturday",
|
||||
];
|
||||
println!(
|
||||
"{:04}-{:02}-{:02}: {}",
|
||||
year,
|
||||
month,
|
||||
day,
|
||||
DAY_NAMES[day_of_week(year, month, day) as usize]
|
||||
);
|
||||
}
|
||||
|
||||
fn main() {
|
||||
print_day_of_week(1800, 1, 6);
|
||||
print_day_of_week(1875, 3, 29);
|
||||
print_day_of_week(1915, 12, 7);
|
||||
print_day_of_week(1970, 12, 23);
|
||||
print_day_of_week(2043, 5, 14);
|
||||
print_day_of_week(2077, 2, 12);
|
||||
print_day_of_week(2101, 4, 2);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue