谢谢clippy老师
This commit is contained in:
parent
2f416cb153
commit
56101df85e
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -1831,7 +1831,7 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tswn"
|
name = "tswn"
|
||||||
version = "0.1.9"
|
version = "0.1.10"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"base16384",
|
"base16384",
|
||||||
"chrono",
|
"chrono",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "tswn"
|
name = "tswn"
|
||||||
description = "tool shenjack work shop namerena"
|
description = "tool shenjack work shop namerena"
|
||||||
version = "0.1.9"
|
version = "0.1.10"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
@ -63,7 +63,7 @@ pub fn cacl(config: CacluateConfig, id: u64, outfile: &PathBuf) {
|
|||||||
let prop = namer.get_property();
|
let prop = namer.get_property();
|
||||||
|
|
||||||
k += 1;
|
k += 1;
|
||||||
if k >= report_interval as u64 {
|
if k >= report_interval {
|
||||||
let now = std::time::Instant::now();
|
let now = std::time::Instant::now();
|
||||||
let d_t: std::time::Duration = now.duration_since(start_time);
|
let d_t: std::time::Duration = now.duration_since(start_time);
|
||||||
let new_run_speed = k as f64 / d_t.as_secs_f64();
|
let new_run_speed = k as f64 / d_t.as_secs_f64();
|
||||||
@ -101,26 +101,27 @@ pub fn cacl(config: CacluateConfig, id: u64, outfile: &PathBuf) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if prop > config.prop_expect as f32 {
|
if prop > config.prop_expect as f32 {
|
||||||
let name = gen_name(i as u64);
|
let name = gen_name(i);
|
||||||
let full_name = format!("{}@{}", name, config.team);
|
let full_name = format!("{}@{}", name, config.team);
|
||||||
// 虚评
|
// 虚评
|
||||||
namer.update_skill();
|
namer.update_skill();
|
||||||
|
|
||||||
let xu = crate::evaluate::xuping::XuPing2_0_1015::evaluate(&namer);
|
let xu = crate::evaluate::xuping::XuPing2_0_1015::evaluate(&namer);
|
||||||
|
let xu_qd = crate::evaluate::xuping::XuPing2_0_1015_QD::evaluate(&namer);
|
||||||
|
|
||||||
if xu < config.qp_expect as f64 {
|
if xu < config.qp_expect as f64 && xu_qd < config.qp_expect as f64{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
let xu_qd = crate::evaluate::xuping::XuPing2_0_1015_QD::evaluate(&namer);
|
|
||||||
|
|
||||||
get_count += 1;
|
get_count += 1;
|
||||||
info!("Id:{:>15}|{}|{}|{}", i, full_name, xu, namer.get_info());
|
info!("Id:{:>15}|{}|{:.4}|{:.4}|{}", i, full_name, xu, xu_qd, namer.get_info());
|
||||||
|
|
||||||
let write_in = format!(
|
let write_in = format!(
|
||||||
// <full_name>,<xu>,<xuqd>,<namer.get_info()>
|
// <full_name>,<id>,<xu>,<xuqd>,<namer.get_info()>
|
||||||
"{},{},{},{}\n",
|
"{},{:>15},{:.4},{:.4},{}\n",
|
||||||
full_name,
|
full_name,
|
||||||
|
i,
|
||||||
xu,
|
xu,
|
||||||
xu_qd,
|
xu_qd,
|
||||||
namer.get_info_csv()
|
namer.get_info_csv()
|
||||||
|
@ -19,8 +19,11 @@ pub fn predict_13(name: &Namer) -> f64 {
|
|||||||
|
|
||||||
let mut combined_skills: [f64; 43] = [0.0; 43];
|
let mut combined_skills: [f64; 43] = [0.0; 43];
|
||||||
// 长度取 64, 方便simd填充
|
// 长度取 64, 方便simd填充
|
||||||
for i in 0..8 {
|
// for i in 0..8 {
|
||||||
combined_skills[i] = name.name_prop[i] as f64;
|
// combined_skills[i] = name.name_prop[i] as f64;
|
||||||
|
// }
|
||||||
|
for (i, prop) in combined_skills.iter_mut().enumerate().take(8) {
|
||||||
|
*prop = name.name_prop[i] as f64;
|
||||||
}
|
}
|
||||||
for i in 0..16 {
|
for i in 0..16 {
|
||||||
if name.skl_freq[i] != 0 {
|
if name.skl_freq[i] != 0 {
|
||||||
@ -122,7 +125,7 @@ pub fn predict_13(name: &Namer) -> f64 {
|
|||||||
pub fn poly(input: &[f64; 44]) -> [f64; 1034] {
|
pub fn poly(input: &[f64; 44]) -> [f64; 1034] {
|
||||||
let mut result = [0.0; 1034];
|
let mut result = [0.0; 1034];
|
||||||
for index in 0..1034 {
|
for index in 0..1034 {
|
||||||
let mut l: i32 = 44;
|
let l: i32 = 44;
|
||||||
let mut i: i32 = 0;
|
let mut i: i32 = 0;
|
||||||
let mut p: i32 = 0;
|
let mut p: i32 = 0;
|
||||||
let mut q: i32 = 0;
|
let mut q: i32 = 0;
|
||||||
@ -171,8 +174,11 @@ if (x[42] > 0) x[42] += 20
|
|||||||
*/
|
*/
|
||||||
pub fn predict_20(name: &Namer) -> f64 {
|
pub fn predict_20(name: &Namer) -> f64 {
|
||||||
let mut st: [f64; 44] = [0.0; 44];
|
let mut st: [f64; 44] = [0.0; 44];
|
||||||
for i in 0..8 {
|
// for i in 0..8 {
|
||||||
st[i] = name.name_prop[i] as f64;
|
// st[i] = name.name_prop[i] as f64;
|
||||||
|
// }
|
||||||
|
for (i, prop) in st.iter_mut().enumerate().take(8) {
|
||||||
|
*prop = name.name_prop[i] as f64;
|
||||||
}
|
}
|
||||||
for i in 0..16 {
|
for i in 0..16 {
|
||||||
if name.skl_freq[i] != 0 {
|
if name.skl_freq[i] != 0 {
|
||||||
@ -181,7 +187,7 @@ pub fn predict_20(name: &Namer) -> f64 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if st[32] > 0.0 {
|
if st[32] > 0.0 {
|
||||||
let mut shadow_name = Namer::new_unchecked(&format!("{}?shadow@{}", name.name, name.team));
|
let shadow_name = Namer::new_unchecked(&format!("{}?shadow@{}", name.name, name.team));
|
||||||
let mut shadow_sum = shadow_name.name_prop[0] as f64 / 3.0;
|
let mut shadow_sum = shadow_name.name_prop[0] as f64 / 3.0;
|
||||||
|
|
||||||
for j in 1..8 {
|
for j in 1..8 {
|
||||||
@ -190,7 +196,7 @@ pub fn predict_20(name: &Namer) -> f64 {
|
|||||||
shadow_sum -= (shadow_name.name_prop[7] as f64 - 36.0) * 3.0;
|
shadow_sum -= (shadow_name.name_prop[7] as f64 - 36.0) * 3.0;
|
||||||
let mut shadowi = shadow_sum - 210.0;
|
let mut shadowi = shadow_sum - 210.0;
|
||||||
|
|
||||||
shadowi = shadowi * st[32] as f64 / 100.0;
|
shadowi = shadowi * st[32] / 100.0;
|
||||||
st[43] = shadowi;
|
st[43] = shadowi;
|
||||||
} else {
|
} else {
|
||||||
st[43] = 0.0;
|
st[43] = 0.0;
|
||||||
@ -203,24 +209,21 @@ pub fn predict_20(name: &Namer) -> f64 {
|
|||||||
let xp = poly(&st);
|
let xp = poly(&st);
|
||||||
|
|
||||||
let mut sum = xuping20::BASE;
|
let mut sum = xuping20::BASE;
|
||||||
let mut sum_qd = xuping20::BASE_QD;
|
let mut _sum_qd = xuping20::BASE_QD;
|
||||||
|
|
||||||
for i in 0..1034 {
|
|
||||||
unsafe {
|
unsafe {
|
||||||
sum += xp.get_unchecked(i) * xuping20::MODEL.get_unchecked(i);
|
for (i, xp) in xp.iter().enumerate() {
|
||||||
|
sum += xp * xuping20::MODEL.get_unchecked(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// for i in 0..1034 {
|
|
||||||
// sum_qd += xp[i] * xuping20::MODEL_QD[i];
|
|
||||||
// }
|
|
||||||
|
|
||||||
sum
|
sum
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn predict_20_qd(name: &Namer) -> f64 {
|
pub fn predict_20_qd(name: &Namer) -> f64 {
|
||||||
let mut st: [f64; 44] = [0.0; 44];
|
let mut st: [f64; 44] = [0.0; 44];
|
||||||
for i in 0..8 {
|
for (i, prop) in st.iter_mut().enumerate().take(8) {
|
||||||
st[i] = name.name_prop[i] as f64;
|
*prop = name.name_prop[i] as f64;
|
||||||
}
|
}
|
||||||
for i in 0..16 {
|
for i in 0..16 {
|
||||||
if name.skl_freq[i] != 0 {
|
if name.skl_freq[i] != 0 {
|
||||||
@ -229,7 +232,7 @@ pub fn predict_20_qd(name: &Namer) -> f64 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if st[32] > 0.0 {
|
if st[32] > 0.0 {
|
||||||
let mut shadow_name = Namer::new_unchecked(&format!("{}?shadow@{}", name.name, name.team));
|
let shadow_name = Namer::new_unchecked(&format!("{}?shadow@{}", name.name, name.team));
|
||||||
let mut shadow_sum = shadow_name.name_prop[0] as f64 / 3.0;
|
let mut shadow_sum = shadow_name.name_prop[0] as f64 / 3.0;
|
||||||
|
|
||||||
for j in 1..8 {
|
for j in 1..8 {
|
||||||
@ -238,7 +241,7 @@ pub fn predict_20_qd(name: &Namer) -> f64 {
|
|||||||
shadow_sum -= (shadow_name.name_prop[7] as f64 - 36.0) * 3.0;
|
shadow_sum -= (shadow_name.name_prop[7] as f64 - 36.0) * 3.0;
|
||||||
let mut shadowi = shadow_sum - 210.0;
|
let mut shadowi = shadow_sum - 210.0;
|
||||||
|
|
||||||
shadowi = shadowi * st[32] as f64 / 100.0;
|
shadowi = shadowi * st[32] / 100.0;
|
||||||
st[43] = shadowi;
|
st[43] = shadowi;
|
||||||
} else {
|
} else {
|
||||||
st[43] = 0.0;
|
st[43] = 0.0;
|
||||||
@ -252,8 +255,8 @@ pub fn predict_20_qd(name: &Namer) -> f64 {
|
|||||||
|
|
||||||
let mut sum_qd = xuping20::BASE_QD;
|
let mut sum_qd = xuping20::BASE_QD;
|
||||||
|
|
||||||
for i in 0..1034 {
|
for (i, xp) in xp.iter().enumerate() {
|
||||||
sum_qd += xp[i] * xuping20::MODEL_QD[i];
|
sum_qd += xp * xuping20::MODEL_QD[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
sum_qd
|
sum_qd
|
||||||
|
@ -50,7 +50,7 @@ impl TeamNamer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
pub fn clone_vals(&self) -> [u8; 256] { self.val.clone() }
|
pub fn clone_vals(&self) -> [u8; 256] { self.val }
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
@ -64,6 +64,7 @@ pub struct Namer {
|
|||||||
pub skl_freq: [u8; 40],
|
pub skl_freq: [u8; 40],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow(dead_code)]
|
||||||
impl Namer {
|
impl Namer {
|
||||||
/// 最完整的、最简单的 new
|
/// 最完整的、最简单的 new
|
||||||
/// 可以直接丢一个 name 进来
|
/// 可以直接丢一个 name 进来
|
||||||
@ -150,7 +151,7 @@ impl Namer {
|
|||||||
// simd 优化
|
// simd 优化
|
||||||
#[cfg(feature = "simd")]
|
#[cfg(feature = "simd")]
|
||||||
{
|
{
|
||||||
let mut simd_val = val.clone();
|
let mut simd_val = val;
|
||||||
let mut simd_val_b = [0_u8; 256];
|
let mut simd_val_b = [0_u8; 256];
|
||||||
let simd_181 = u8x64::splat(181);
|
let simd_181 = u8x64::splat(181);
|
||||||
let simd_160 = u8x64::splat(160);
|
let simd_160 = u8x64::splat(160);
|
||||||
@ -303,8 +304,8 @@ impl Namer {
|
|||||||
|
|
||||||
#[cfg(feature = "simd")]
|
#[cfg(feature = "simd")]
|
||||||
{
|
{
|
||||||
let mut simd_val = self.val.clone();
|
let mut simd_val = self.val;
|
||||||
let mut simd_val_b = self.val.clone();
|
let mut simd_val_b = self.val;
|
||||||
let simd_181 = u8x64::splat(181);
|
let simd_181 = u8x64::splat(181);
|
||||||
let simd_199 = u8x64::splat(199);
|
let simd_199 = u8x64::splat(199);
|
||||||
let simd_128 = u8x64::splat(128);
|
let simd_128 = u8x64::splat(128);
|
||||||
@ -316,8 +317,8 @@ impl Namer {
|
|||||||
unsafe {
|
unsafe {
|
||||||
let mut x = u8x64::from_slice(simd_val.get_unchecked(i..));
|
let mut x = u8x64::from_slice(simd_val.get_unchecked(i..));
|
||||||
let mut y = u8x64::from_slice(simd_val_b.get_unchecked(i..));
|
let mut y = u8x64::from_slice(simd_val_b.get_unchecked(i..));
|
||||||
x = x * simd_181 + simd_199 & simd_128;
|
x = (x * simd_181 + simd_199) & simd_128;
|
||||||
y = y * simd_53 & simd_63 ^ simd_32;
|
y = (y * simd_53) & simd_63 ^ simd_32;
|
||||||
x.copy_to_slice(simd_val.get_unchecked_mut(i..));
|
x.copy_to_slice(simd_val.get_unchecked_mut(i..));
|
||||||
y.copy_to_slice(simd_val_b.get_unchecked_mut(i..));
|
y.copy_to_slice(simd_val_b.get_unchecked_mut(i..));
|
||||||
}
|
}
|
||||||
@ -362,11 +363,10 @@ impl Namer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
let mut last = -1;
|
let mut last = -1;
|
||||||
let mut j = 0;
|
for (j, i) in (64..128).step_by(4).enumerate() {
|
||||||
for i in (64..128).step_by(4) {
|
|
||||||
let p = unsafe {
|
let p = unsafe {
|
||||||
min(
|
min(
|
||||||
min(*self.name_base.get_unchecked(i + 0), *self.name_base.get_unchecked(i + 1)),
|
min(*self.name_base.get_unchecked(i), *self.name_base.get_unchecked(i + 1)),
|
||||||
min(*self.name_base.get_unchecked(i + 2), *self.name_base.get_unchecked(i + 3)),
|
min(*self.name_base.get_unchecked(i + 2), *self.name_base.get_unchecked(i + 3)),
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
@ -378,7 +378,6 @@ impl Namer {
|
|||||||
} else {
|
} else {
|
||||||
self.skl_freq[j] = 0
|
self.skl_freq[j] = 0
|
||||||
}
|
}
|
||||||
j += 1;
|
|
||||||
}
|
}
|
||||||
if last != -1 {
|
if last != -1 {
|
||||||
self.skl_freq[last as usize] <<= 1;
|
self.skl_freq[last as usize] <<= 1;
|
||||||
@ -401,43 +400,37 @@ impl Namer {
|
|||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
pub fn get_property(&self) -> f32 {
|
pub fn get_property(&self) -> f32 {
|
||||||
let sum1 = self.name_prop[1..=7].iter().sum::<u32>();
|
let sum1 = self.name_prop[1..=7].iter().sum::<u32>();
|
||||||
let sum2 = self.name_prop[0] as u32;
|
let sum2 = self.name_prop[0];
|
||||||
sum1 as f32 + (sum2 as f32 / 3_f32)
|
sum1 as f32 + (sum2 as f32 / 3_f32)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_净化(&self) -> u8 {
|
pub fn get_净化(&self) -> u8 {
|
||||||
// self.skl_freq[17]
|
// self.skl_freq[17]
|
||||||
for (i, v) in self.skl_freq.iter().enumerate() {
|
for (i, v) in self.skl_freq.iter().enumerate() {
|
||||||
if *v != 0 {
|
if *v != 0 && self.skl_id[i] == 17 {
|
||||||
if self.skl_id[i] == 17 {
|
|
||||||
return *v;
|
return *v;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
0
|
0
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_分身(&self) -> u8 {
|
pub fn get_分身(&self) -> u8 {
|
||||||
// self.skl_freq[23]
|
// self.skl_freq[23]
|
||||||
for (i, v) in self.skl_freq.iter().enumerate() {
|
for (i, v) in self.skl_freq.iter().enumerate() {
|
||||||
if *v != 0 {
|
if *v != 0 && self.skl_id[i] == 23 {
|
||||||
if self.skl_id[i] == 23 {
|
|
||||||
return *v;
|
return *v;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
0
|
0
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_幻术(&self) -> u8 {
|
pub fn get_幻术(&self) -> u8 {
|
||||||
// self.skl_freq[24]
|
// self.skl_freq[24]
|
||||||
for (i, v) in self.skl_freq.iter().enumerate() {
|
for (i, v) in self.skl_freq.iter().enumerate() {
|
||||||
if *v != 0 {
|
if *v != 0 && self.skl_id[i] == 24 {
|
||||||
if self.skl_id[i] == 24 {
|
|
||||||
return *v;
|
return *v;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
0
|
0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user