属于是beta中的beta了
This commit is contained in:
parent
f4cd58547f
commit
965aad8961
@ -1,4 +1,7 @@
|
|||||||
use crate::{evaluate::NamerEvaluater, name::{Namer, TeamNamer}};
|
use crate::{
|
||||||
|
evaluate::NamerEvaluater,
|
||||||
|
name::{Namer, TeamNamer},
|
||||||
|
};
|
||||||
|
|
||||||
use std::{io::Write, path::PathBuf};
|
use std::{io::Write, path::PathBuf};
|
||||||
|
|
||||||
@ -65,7 +68,7 @@ pub fn cacl(config: CacluateConfig, id: u64, outfile: &PathBuf) {
|
|||||||
|
|
||||||
for i in (config.start + id..config.end).step_by(config.thread_count as usize) {
|
for i in (config.start + id..config.end).step_by(config.thread_count as usize) {
|
||||||
let name = gen_name(i as u64);
|
let name = gen_name(i as u64);
|
||||||
let namer = Namer::new_from_team_namer_unchecked(&team_namer, name.as_str());
|
let mut namer = Namer::new_from_team_namer_unchecked(&team_namer, name.as_str());
|
||||||
let prop = namer.get_property();
|
let prop = namer.get_property();
|
||||||
|
|
||||||
if (prop + config.prop_allow as f32) > config.prop_expect as f32 {
|
if (prop + config.prop_allow as f32) > config.prop_expect as f32 {
|
||||||
@ -75,15 +78,33 @@ pub fn cacl(config: CacluateConfig, id: u64, outfile: &PathBuf) {
|
|||||||
// if crate::evaluate::xuping::XuPing1_3_1::evaluate(&namer) {
|
// if crate::evaluate::xuping::XuPing1_3_1::evaluate(&namer) {
|
||||||
// continue;
|
// continue;
|
||||||
// }
|
// }
|
||||||
let xu = crate::evaluate::xuping::XuPing1_3_1::evaluate(&namer);
|
// let xu = crate::evaluate::xuping::XuPing1_3_1::evaluate(&namer);
|
||||||
|
|
||||||
debug!("Id:{:>15}|{:>5}|{}|{}", i, full_name, xu, show_name(&namer));
|
// // debug!("Id:{:>15}|{:>5}|{}|{}", i, full_name, xu, show_name(&namer));
|
||||||
if xu < 5000.0 {
|
// if xu < 5000.0 {
|
||||||
|
// continue;
|
||||||
|
// }
|
||||||
|
|
||||||
|
namer.update_skill();
|
||||||
|
let skill_sum: u32 = {
|
||||||
|
let mut sum: u32 = 0;
|
||||||
|
for i in namer.skl_freq.iter() {
|
||||||
|
sum += *i as u32;
|
||||||
|
}
|
||||||
|
sum
|
||||||
|
};
|
||||||
|
if namer.get_净化() < 70 {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if namer.get_幻术() < 20 {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if skill_sum < 150 {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
get_count += 1;
|
get_count += 1;
|
||||||
info!("Id:{:>15}|{}|{}", i, full_name, show_name(&namer));
|
info!("Id:{:>15}|{}|{}", i, full_name, namer.get_info());
|
||||||
// 写入 (写到最后一行)
|
// 写入 (写到最后一行)
|
||||||
match std::fs::OpenOptions::new()
|
match std::fs::OpenOptions::new()
|
||||||
.append(true)
|
.append(true)
|
||||||
|
@ -80,16 +80,21 @@ pub fn predict_13(name: &Namer) -> f64 {
|
|||||||
st[name.skl_id[i] as usize + 8] = name.skl_freq[i] as f64;
|
st[name.skl_id[i] as usize + 8] = name.skl_freq[i] as f64;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// - st: 名字属性。0~7 是八围,8~42 是技能熟练度。
|
||||||
|
// for i in 0..34 {
|
||||||
|
// st[i + 8] = name.skl_freq[i] as f64;
|
||||||
|
// }
|
||||||
|
|
||||||
let mut cnt = 0;
|
let mut cnt = 0;
|
||||||
for i in 0..43 {
|
for i in 0..43 {
|
||||||
sum += st[i] * xuping13::MODULE[cnt];
|
sum += st[i] * xuping13::MODULE[cnt];
|
||||||
print!("{} ", sum);
|
// println!("{} {} {} ",st[i], sum, xuping13::MODULE[cnt]);
|
||||||
cnt += 1;
|
cnt += 1;
|
||||||
}
|
}
|
||||||
for i in 0..43 {
|
for i in 0..43 {
|
||||||
for j in i..43 {
|
for j in i..43 {
|
||||||
sum += st[i] * st[j] * xuping13::MODULE[cnt];
|
sum += st[i] * st[j] * xuping13::MODULE[cnt];
|
||||||
print!("{} ", sum);
|
// println!("{} {} {} ",st[i] * st[j], sum, xuping13::MODULE[cnt]);
|
||||||
cnt += 1;
|
cnt += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -133,11 +138,13 @@ mod test {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn xuping_13_test() {
|
fn xuping_13_test() {
|
||||||
let mut namer = Namer::new(&"x@x".to_string()).unwrap();
|
// let mut namer = Namer::new(&"x@x".to_string()).unwrap();
|
||||||
|
let mut namer = Namer::new(&"pi31uXx?shadow@魔".to_string()).unwrap();
|
||||||
|
|
||||||
namer.update_skill();
|
namer.update_skill();
|
||||||
|
|
||||||
println!("{:?}", predict_13(&namer));
|
println!("{:?}", predict_13(&namer));
|
||||||
|
println!("{:?}", namer.get_info());
|
||||||
panic!();
|
panic!();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
76
src/name.rs
76
src/name.rs
@ -340,6 +340,82 @@ impl Namer {
|
|||||||
let sum2 = self.name_prop[0] as u32;
|
let sum2 = self.name_prop[0] as u32;
|
||||||
sum1 as f32 + (sum2 as f32 / 3_f32)
|
sum1 as f32 + (sum2 as f32 / 3_f32)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn get_净化(&self) -> u8 {
|
||||||
|
// self.skl_freq[17]
|
||||||
|
for (i, v) in self.skl_freq.iter().enumerate() {
|
||||||
|
if *v != 0 {
|
||||||
|
if self.skl_id[i] == 17 {
|
||||||
|
return *v;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
0
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_分身(&self) -> u8 {
|
||||||
|
// self.skl_freq[23]
|
||||||
|
for (i, v) in self.skl_freq.iter().enumerate() {
|
||||||
|
if *v != 0 {
|
||||||
|
if self.skl_id[i] == 23 {
|
||||||
|
return *v;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
0
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_幻术(&self) -> u8 {
|
||||||
|
// self.skl_freq[24]
|
||||||
|
for (i, v) in self.skl_freq.iter().enumerate() {
|
||||||
|
if *v != 0 {
|
||||||
|
if self.skl_id[i] == 24 {
|
||||||
|
return *v;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
0
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_info(&self) -> String {
|
||||||
|
let main = format!(
|
||||||
|
"name: {}, team: {} HP|{} 攻|{} 防|{} 速|{} 敏|{} 魔|{} 抗|{} 智|{} 八围:{}",
|
||||||
|
self.name,
|
||||||
|
self.team,
|
||||||
|
self.name_prop[0],
|
||||||
|
self.name_prop[1],
|
||||||
|
self.name_prop[2],
|
||||||
|
self.name_prop[3],
|
||||||
|
self.name_prop[4],
|
||||||
|
self.name_prop[5],
|
||||||
|
self.name_prop[6],
|
||||||
|
self.name_prop[7],
|
||||||
|
self.get_property()
|
||||||
|
);
|
||||||
|
let skills = {
|
||||||
|
let mut base = "".to_string();
|
||||||
|
let skill_names = [
|
||||||
|
"火球", "冰冻", "雷击", "地裂", "吸血", "投毒", "连击", "会心", "瘟疫", "命轮",
|
||||||
|
"狂暴", "魅惑", "加速", "减速", "诅咒", "治愈", "苏生", "净化", "铁壁", "蓄力",
|
||||||
|
"聚气", "潜行", "血祭", "分身", "幻术", "防御", "守护", "反弹", "护符", "护盾",
|
||||||
|
"反击", "吞噬", "亡灵", "垂死", "隐匿", "啧", "啧", "啧", "啧", "啧",
|
||||||
|
];
|
||||||
|
// 后处理
|
||||||
|
let mut skills = [0; 40];
|
||||||
|
for i in 0..40 {
|
||||||
|
if self.skl_freq[i] != 0 {
|
||||||
|
skills[self.skl_id[i] as usize] = self.skl_freq[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (i, v) in skills.iter().enumerate() {
|
||||||
|
if *v > 0 {
|
||||||
|
base.push_str(format!("{}: {}|", skill_names[i], v).as_str());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
base
|
||||||
|
};
|
||||||
|
format!("{}|{}", main, skills)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
Loading…
Reference in New Issue
Block a user