-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvackpatkrmh.rs
97 lines (90 loc) · 2.19 KB
/
vackpatkrmh.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
use std::fs;
fn main() {
const VRNAH: &str = "_kKgGNcCjJYwWqQRtTdDnpPbBmyrlvSzshLaAEOeoiIuUfFHM~ZV";
const AKSRSNKYA: usize = VRNAH.len() * VRNAH.len();
type Aksrani = [u8; AKSRSNKYA];
let mut vrnkrmh: Vec<char> = VRNAH.chars().collect();
vrnkrmh.sort();
let iast: Vec<String> = fs::read_to_string("crnani")
.expect("file?!")
.split('\n')
.map(|s: &str| s.to_string())
.collect();
#[derive(Debug)]
struct Crnm {
ptitm: bool,
aksrani: Aksrani,
primanm: usize,
}
let mut slp: Vec<Crnm> = fs::read_to_string("slp")
.expect("file?!")
.split('\n')
.map(|s| {
let mut aksrani = [0; AKSRSNKYA];
let sc: Vec<char> = ("_".to_string() + s + "_").chars().collect();
for i in 0..sc.len()-1 {
let c = sc[i];
if i < s.len() - 1 {
match vrnkrmh.binary_search(&c) {
Ok(n) => match vrnkrmh.binary_search(&sc[i+1]) {
Ok(m) => aksrani[n*VRNAH.len() + m] += 1,
Err(..) => {},
},
Err(..) => {},
}
}
}
Crnm { ptitm: false, aksrani: aksrani , primanm: sc.iter().fold(0, |l, &c| if c == '3' || c == '5' {l} else {l+1}) }
})
.collect();
let mut m = 0;
let mut ptitani = 0;
let mut aksrani = [0_u8; AKSRSNKYA];
while ptitani < slp.len() {
let mut nvtvm = 1_f64;
while nvtvm > 0_f64 {
let nC = (0..slp.len()).fold((0_f64, None), |(M, C), D| {
if slp[D].ptitm {
(M, C)
}
else {
let N = (0..AKSRSNKYA).fold(0_usize, |n, i| {
n + if slp[D].aksrani[i] > 0 && aksrani[i] == m
{ 1 } else { 0 }
}) as f64 / slp[D].primanm as f64;
if N > M {
(N, Some(D))
}
else {
(M, C)
}
}
});
nvtvm = nC.0;
let C = nC.1;
match C {
Some(D) => {
ptitani += 1;
slp[D].ptitm = true;
for i in 0..AKSRSNKYA {
aksrani[i] = match aksrani[i].checked_add(slp[D].aksrani[i]) {
Some(a) => a,
None => aksrani[i],
};
}
println!("{}", iast[D]);
/*println!("{} {} {}", ptitani, aksrani.iter().fold(0, |n, x| {
n + if *x > m { 1 } else { 0 }
}), m);*/
},
None => {},
}
}
for i in 0..AKSRSNKYA {
if aksrani[i] == 0 {
println!("{} {}", vrnkrmh[i/VRNAH.len()], vrnkrmh[i%VRNAH.len()]);
}
}
m += 1;
}
}