1use std::fs;
2
3use text_block_permutation_optimizer::optimize;
4
5fn main() {
6 let ground = fs::read_to_string("a.txt").expect("Failed to read a.txt");
8 let blocks_raw = fs::read_to_string("b.txt").expect("Failed to read b.txt");
9
10 let blocks: Vec<&str> = blocks_raw.lines().collect();
12
13 println!("Ground truth length: {} chars", ground.len());
14 println!("Number of blocks: {}", blocks.len());
15 println!();
16
17 let (loss, optimized) = optimize(&ground, &blocks);
18
19 println!();
20 println!("=== Result ===");
21 println!(
22 "Loss: fuzzy={:.2}, jump={:.2}, geo={:.2}, total={:.2}",
23 loss.fuzzy,
24 loss.jump_distance,
25 loss.geo_distance,
26 loss.abs()
27 );
28 println!();
29
30 let result_text: String = optimized
32 .iter()
33 .map(|(_, text)| *text)
34 .collect::<Vec<&str>>()
35 .join(" ");
36
37 println!("Optimized text (first 500 chars):");
38 println!("{}", &result_text[..result_text.len().min(500)]);
39}