2024-03-24 20:00:55 +00:00
|
|
|
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<()> {
|
2024-03-25 02:16:06 +00:00
|
|
|
// From https://ascii.co.uk/art/anime
|
|
|
|
let header = r#"
|
|
|
|
db db
|
|
|
|
dpqb dp8b
|
|
|
|
8b qb_____dp_88
|
|
|
|
88/ . `p
|
|
|
|
q'. \
|
|
|
|
.'. .-. ,-. `--.
|
|
|
|
|. / 0 \ / 0 \ | \
|
|
|
|
|: `.__ ___.' | \\/
|
|
|
|
|. " | (
|
|
|
|
\. `-'-' ,' |
|
|
|
|
_/`------------'. .|
|
|
|
|
/. \\::(::[];)||:. \
|
|
|
|
/. ' \.`:;;;;'''/`. .|
|
|
|
|
|. |/ `;--._.__/ |..|
|
|
|
|
|: _/_,'''',,`. `:.'
|
|
|
|
|. ` / , ',`. |/
|
|
|
|
\. -'/\/ ',\ |\
|
|
|
|
/\__-' /\ / ,: |.\
|
|
|
|
/. .| ' /-. ,: |..\
|
|
|
|
:. .| /| | , ,||: ..:
|
|
|
|
|. .` | '//` ,:|: :|
|
|
|
|
|.. .\ //\/ ,|: ..|
|
|
|
|
\. .\ <./ ,'. ../
|
|
|
|
\_ ,..`.__ _,..,._/
|
|
|
|
`\|||/ `--'\|||/'"#;
|
|
|
|
|
2024-03-24 20:00:55 +00:00
|
|
|
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
|
2024-03-25 02:16:06 +00:00
|
|
|
0010000000
|
|
|
|
0011100000
|
2024-03-24 20:00:55 +00:00
|
|
|
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
|
2024-03-25 02:16:06 +00:00
|
|
|
0000000000",
|
|
|
|
),
|
|
|
|
(
|
|
|
|
'1',
|
|
|
|
"0000000000
|
|
|
|
0000110000
|
|
|
|
0001110000
|
|
|
|
0010110000
|
|
|
|
0000110000
|
|
|
|
0000110000
|
|
|
|
0000110000
|
|
|
|
0000110000
|
|
|
|
0001111000
|
2024-03-24 20:00:55 +00:00
|
|
|
0000000000",
|
|
|
|
),
|
|
|
|
(
|
|
|
|
'2',
|
|
|
|
"0000000000
|
|
|
|
0001111000
|
|
|
|
0010000100
|
|
|
|
0010000010
|
|
|
|
0000000100
|
|
|
|
0000001000
|
|
|
|
0000010000
|
|
|
|
0001100000
|
|
|
|
0011111110
|
|
|
|
0000000000",
|
|
|
|
),
|
|
|
|
(
|
|
|
|
'4',
|
|
|
|
"0000000000
|
|
|
|
0000011000
|
|
|
|
0000101000
|
|
|
|
0001001000
|
|
|
|
0010001000
|
|
|
|
0100001000
|
|
|
|
0111111110
|
|
|
|
0000001000
|
|
|
|
0000001000
|
2024-03-25 02:16:06 +00:00
|
|
|
0000000000",
|
|
|
|
),
|
|
|
|
(
|
|
|
|
'🙂',
|
|
|
|
"0000000000
|
|
|
|
0000000000
|
|
|
|
0011001100
|
|
|
|
0011001100
|
|
|
|
0000000000
|
|
|
|
0100000010
|
|
|
|
0100000010
|
|
|
|
0011001100
|
|
|
|
0001111000
|
2024-03-24 20:00:55 +00:00
|
|
|
0000000000",
|
|
|
|
),
|
|
|
|
]);
|
2024-03-25 02:16:06 +00:00
|
|
|
let ans = "HAPPYAPRILFOOLSDAY202441🙂";
|
2024-03-24 20:00:55 +00:00
|
|
|
let mut rng = thread_rng();
|
2024-03-25 02:16:06 +00:00
|
|
|
let mut file = File::create("index.html")?;
|
|
|
|
writeln!(file, "<!DOCTYPE html><!--{}-->", header)?;
|
2024-03-24 20:00:55 +00:00
|
|
|
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);
|
2024-03-25 02:16:06 +00:00
|
|
|
let mut cnt = 0;
|
2024-03-24 20:00:55 +00:00
|
|
|
for i in zeros {
|
2024-03-25 02:16:06 +00:00
|
|
|
cnt += 1;
|
2024-03-24 20:00:55 +00:00
|
|
|
writeln!(
|
|
|
|
file,
|
2024-03-25 02:16:06 +00:00
|
|
|
"<div style='color:white;position:absolute;top:{}px;left:{}px'>{}</div>",
|
2024-03-24 20:00:55 +00:00
|
|
|
((i / 11) as f32 + rng.gen_range(0.1..0.9)) * 50.0,
|
2024-03-25 02:16:06 +00:00
|
|
|
((i % 11) as f32 + rng.gen_range(0.1..0.9)) * 50.0,
|
|
|
|
if cnt % 2 == 0 { "|" } else { "." }
|
2024-03-24 20:00:55 +00:00
|
|
|
)?;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
Ok(())
|
|
|
|
}
|