215 lines
3.1 KiB
Rust
215 lines
3.1 KiB
Rust
|
use rand::seq::SliceRandom;
|
||
|
use rand::thread_rng;
|
||
|
use rand::Rng;
|
||
|
use std::collections::HashMap;
|
||
|
use std::fs::File;
|
||
|
use std::io::Write;
|
||
|
|
||
|
fn main() -> std::io::Result<()> {
|
||
|
let letters = HashMap::from([
|
||
|
(
|
||
|
'A',
|
||
|
"0000000000
|
||
|
0000110000
|
||
|
0001001000
|
||
|
0001001000
|
||
|
0010000100
|
||
|
0011111100
|
||
|
0010000100
|
||
|
0100000010
|
||
|
0100000010
|
||
|
0000000000",
|
||
|
),
|
||
|
(
|
||
|
'D',
|
||
|
"0000000000
|
||
|
0011110000
|
||
|
0010001000
|
||
|
0010000100
|
||
|
0010000100
|
||
|
0010000100
|
||
|
0010000100
|
||
|
0010001000
|
||
|
0011110000
|
||
|
0000000000",
|
||
|
),
|
||
|
(
|
||
|
'F',
|
||
|
"0000000000
|
||
|
0011111110
|
||
|
0010000000
|
||
|
0010000000
|
||
|
0010000000
|
||
|
0011111110
|
||
|
0010000000
|
||
|
0010000000
|
||
|
0010000000
|
||
|
0000000000",
|
||
|
),
|
||
|
(
|
||
|
'H',
|
||
|
"0000000000
|
||
|
0010000100
|
||
|
0010000100
|
||
|
0010000100
|
||
|
0010000100
|
||
|
0011111100
|
||
|
0010000100
|
||
|
0010000100
|
||
|
0010000100
|
||
|
0000000000",
|
||
|
),
|
||
|
(
|
||
|
'I',
|
||
|
"0000000000
|
||
|
0111111100
|
||
|
0000100000
|
||
|
0000100000
|
||
|
0000100000
|
||
|
0000100000
|
||
|
0000100000
|
||
|
0000100000
|
||
|
0111111100
|
||
|
0000000000",
|
||
|
),
|
||
|
(
|
||
|
'L',
|
||
|
"0000000000
|
||
|
0010000000
|
||
|
0010000000
|
||
|
0010000000
|
||
|
0010000000
|
||
|
0010000000
|
||
|
0010000000
|
||
|
0011111110
|
||
|
0011111110
|
||
|
0000000000",
|
||
|
),
|
||
|
(
|
||
|
'O',
|
||
|
"0000000000
|
||
|
0001111000
|
||
|
0010000100
|
||
|
0100000010
|
||
|
0100000010
|
||
|
0100000010
|
||
|
0100000010
|
||
|
0010000100
|
||
|
0001111000
|
||
|
0000000000",
|
||
|
),
|
||
|
(
|
||
|
'P',
|
||
|
"0000000000
|
||
|
0011111000
|
||
|
0010000100
|
||
|
0010000100
|
||
|
0010000100
|
||
|
0011111100
|
||
|
0010000000
|
||
|
0010000000
|
||
|
0010000000
|
||
|
0000000000",
|
||
|
),
|
||
|
(
|
||
|
'R',
|
||
|
"0000000000
|
||
|
0011110000
|
||
|
0010001000
|
||
|
0010000100
|
||
|
0010001000
|
||
|
0011110000
|
||
|
0010100000
|
||
|
0010010000
|
||
|
0010001000
|
||
|
0000000000",
|
||
|
),
|
||
|
(
|
||
|
'S',
|
||
|
"0000000000
|
||
|
0001111000
|
||
|
0010000100
|
||
|
0100000000
|
||
|
0111000000
|
||
|
0000111000
|
||
|
0000000100
|
||
|
0010000100
|
||
|
0001111000
|
||
|
0000000000",
|
||
|
),
|
||
|
(
|
||
|
'Y',
|
||
|
"0000000000
|
||
|
0110000110
|
||
|
0110000110
|
||
|
0010000100
|
||
|
0001001000
|
||
|
0000110000
|
||
|
0000110000
|
||
|
0000110000
|
||
|
0000110000
|
||
|
0000000000",
|
||
|
),
|
||
|
(
|
||
|
'0',
|
||
|
"0000000000
|
||
|
0001111000
|
||
|
0010000100
|
||
|
0100000010
|
||
|
0100000010
|
||
|
0100000010
|
||
|
0100000010
|
||
|
0010000100
|
||
|
0001111000
|
||
|
0000000000",
|
||
|
),
|
||
|
(
|
||
|
'2',
|
||
|
"0000000000
|
||
|
0001111000
|
||
|
0010000100
|
||
|
0010000010
|
||
|
0000000100
|
||
|
0000001000
|
||
|
0000010000
|
||
|
0001100000
|
||
|
0011111110
|
||
|
0000000000",
|
||
|
),
|
||
|
(
|
||
|
'4',
|
||
|
"0000000000
|
||
|
0000011000
|
||
|
0000101000
|
||
|
0001001000
|
||
|
0010001000
|
||
|
0100001000
|
||
|
0111111110
|
||
|
0000001000
|
||
|
0000001000
|
||
|
0000000000",
|
||
|
),
|
||
|
]);
|
||
|
let ans = "HAPPYAPRILFOOLSDAY2024";
|
||
|
let mut file = File::create("index.html")?;
|
||
|
let mut rng = thread_rng();
|
||
|
for c in ans.chars() {
|
||
|
let letter = letters[&c].chars();
|
||
|
let mut zeros = letter
|
||
|
.enumerate()
|
||
|
.filter(|(_, c)| matches!(c, '0'))
|
||
|
.map(|(i, _)| i)
|
||
|
.collect::<Vec<_>>();
|
||
|
zeros.shuffle(&mut rng);
|
||
|
for i in zeros {
|
||
|
writeln!(
|
||
|
file,
|
||
|
"<div style='color:white;position:absolute;top:{}px;left:{}px'>0</div>",
|
||
|
((i / 11) as f32 + rng.gen_range(0.1..0.9)) * 50.0,
|
||
|
((i % 11) as f32 + rng.gen_range(0.1..0.9)) * 50.0
|
||
|
)?;
|
||
|
}
|
||
|
}
|
||
|
Ok(())
|
||
|
}
|