Compare commits
10 Commits
8cb0b095f3
...
f4cd58547f
Author | SHA1 | Date | |
---|---|---|---|
f4cd58547f | |||
a7f0468507 | |||
b4b9c4d739 | |||
c7592652bc | |||
bcfb504a01 | |||
be76d612a4 | |||
351e96488d | |||
becfc8c634 | |||
315417b8a8 | |||
df7860b4f3 |
24
Cargo.lock
generated
24
Cargo.lock
generated
@ -242,18 +242,6 @@ version = "0.4.20"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
|
checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "namerena-rs"
|
|
||||||
version = "0.1.0"
|
|
||||||
dependencies = [
|
|
||||||
"base16384",
|
|
||||||
"chrono",
|
|
||||||
"clap",
|
|
||||||
"colored",
|
|
||||||
"tracing",
|
|
||||||
"tracing-subscriber",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "nu-ansi-term"
|
name = "nu-ansi-term"
|
||||||
version = "0.46.0"
|
version = "0.46.0"
|
||||||
@ -472,6 +460,18 @@ dependencies = [
|
|||||||
"tracing-log",
|
"tracing-log",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tswn"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"base16384",
|
||||||
|
"chrono",
|
||||||
|
"clap",
|
||||||
|
"colored",
|
||||||
|
"tracing",
|
||||||
|
"tracing-subscriber",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "unicode-ident"
|
name = "unicode-ident"
|
||||||
version = "1.0.12"
|
version = "1.0.12"
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "namerena-rs"
|
name = "tswn"
|
||||||
|
description = "tool shenjack work shop namerena"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
@ -22,6 +23,7 @@ simd = []
|
|||||||
opt-level = 3
|
opt-level = 3
|
||||||
codegen-units = 1
|
codegen-units = 1
|
||||||
panic = "abort"
|
panic = "abort"
|
||||||
debug = false
|
debug = true
|
||||||
|
strip = false
|
||||||
lto = true
|
lto = true
|
||||||
overflow-checks = false
|
overflow-checks = false
|
||||||
|
20
pie.md
Normal file
20
pie.md
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
# tswn 画的饼
|
||||||
|
|
||||||
|
## 测号方法
|
||||||
|
|
||||||
|
- [ ] xp 1.3
|
||||||
|
- [ ] xp 2.0
|
||||||
|
- [ ] 曙光
|
||||||
|
- [ ] 霛雲
|
||||||
|
- [x] 八围
|
||||||
|
- [x] 技能
|
||||||
|
|
||||||
|
## 号生成算法
|
||||||
|
|
||||||
|
- [ ] 桃花模式
|
||||||
|
- 词库
|
||||||
|
- xxxx的xxxx
|
||||||
|
- [ ] 全排列
|
||||||
|
- 给定字符串的全排列
|
||||||
|
- [x] base 16384
|
||||||
|
- [ ] base 64
|
23
rustfmt.toml
Normal file
23
rustfmt.toml
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# cargo fmt config
|
||||||
|
|
||||||
|
# 最大行长
|
||||||
|
max_width = 100
|
||||||
|
# 链式调用的最大长度
|
||||||
|
chain_width = 80
|
||||||
|
# 数组的最大长度
|
||||||
|
array_width = 70
|
||||||
|
# 函数参数的最大长度
|
||||||
|
attr_fn_like_width = 60
|
||||||
|
# 函数调用参数的最大长度
|
||||||
|
fn_call_width = 80
|
||||||
|
# 简单函数格式化为单行
|
||||||
|
fn_single_line = true
|
||||||
|
|
||||||
|
# 自动对齐最大长度
|
||||||
|
enum_discrim_align_threshold = 5
|
||||||
|
# 字段初始化使用简写
|
||||||
|
use_field_init_shorthand = true
|
||||||
|
# 是否使用彩色输出
|
||||||
|
color = "Always"
|
||||||
|
|
||||||
|
edition = "2021"
|
138
src/cacluate.rs
Normal file
138
src/cacluate.rs
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
use crate::{evaluate::NamerEvaluater, name::{Namer, TeamNamer}};
|
||||||
|
|
||||||
|
use std::{io::Write, path::PathBuf};
|
||||||
|
|
||||||
|
use base16384::Base16384Utf8;
|
||||||
|
use colored::Colorize;
|
||||||
|
use tracing::{debug, info, warn};
|
||||||
|
|
||||||
|
pub fn show_name(namer: &Namer) -> String {
|
||||||
|
format!(
|
||||||
|
"HP|{} 攻|{} 防|{} 速|{} 敏|{} 魔|{} 抗|{} 智|{} 八围:{}",
|
||||||
|
namer.name_prop[0],
|
||||||
|
namer.name_prop[1],
|
||||||
|
namer.name_prop[2],
|
||||||
|
namer.name_prop[3],
|
||||||
|
namer.name_prop[4],
|
||||||
|
namer.name_prop[5],
|
||||||
|
namer.name_prop[6],
|
||||||
|
namer.name_prop[7],
|
||||||
|
namer.get_property()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// 根据 u64 生成对应的 name
|
||||||
|
/// 转换成 base 16384
|
||||||
|
/// 禁用:
|
||||||
|
/// U00 ~ U1F ,换行,制表符 等
|
||||||
|
/// ? , 问号
|
||||||
|
/// U2000 - U202F , unicode特殊空格 等
|
||||||
|
/// 不可以空格开头
|
||||||
|
#[inline(always)]
|
||||||
|
pub fn gen_name(id: u64) -> String {
|
||||||
|
let id_bytes = id.to_be_bytes();
|
||||||
|
Base16384Utf8::encode(id_bytes.as_slice())
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct CacluateConfig {
|
||||||
|
/// 开始的 id
|
||||||
|
pub start: u64,
|
||||||
|
/// 结束的 id
|
||||||
|
pub end: u64,
|
||||||
|
/// 线程数
|
||||||
|
pub thread_count: u32,
|
||||||
|
/// 八围预期值
|
||||||
|
pub prop_expect: u32,
|
||||||
|
/// 八围允许范围
|
||||||
|
pub prop_allow: u32,
|
||||||
|
/// 队伍名称
|
||||||
|
pub team: String,
|
||||||
|
/// 预期状态输出时间间隔 (秒)
|
||||||
|
pub report_interval: u64,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline(always)]
|
||||||
|
pub fn cacl(config: CacluateConfig, id: u64, outfile: &PathBuf) {
|
||||||
|
// 初始猜测的时间间隔
|
||||||
|
let mut report_interval = 10000; // 第一次猜测测 1w 次, 获取初始数据
|
||||||
|
let mut run_speed = 0.0;
|
||||||
|
let mut start_time = std::time::Instant::now();
|
||||||
|
let mut k: u64 = 0;
|
||||||
|
let mut get_count: u32 = 0;
|
||||||
|
let xuping = crate::evaluate::xuping::XuPing1_3_1::new(5000.0);
|
||||||
|
// 提前准备好 team_namer
|
||||||
|
let team_namer = TeamNamer::new(&config.team).unwrap();
|
||||||
|
|
||||||
|
for i in (config.start + id..config.end).step_by(config.thread_count as usize) {
|
||||||
|
let name = gen_name(i as u64);
|
||||||
|
let namer = Namer::new_from_team_namer_unchecked(&team_namer, name.as_str());
|
||||||
|
let prop = namer.get_property();
|
||||||
|
|
||||||
|
if (prop + config.prop_allow as f32) > config.prop_expect as f32 {
|
||||||
|
let name = gen_name(i as u64);
|
||||||
|
let full_name = format!("{}@{}", name, config.team);
|
||||||
|
// 虚评
|
||||||
|
// if crate::evaluate::xuping::XuPing1_3_1::evaluate(&namer) {
|
||||||
|
// continue;
|
||||||
|
// }
|
||||||
|
let xu = crate::evaluate::xuping::XuPing1_3_1::evaluate(&namer);
|
||||||
|
|
||||||
|
debug!("Id:{:>15}|{:>5}|{}|{}", i, full_name, xu, show_name(&namer));
|
||||||
|
if xu < 5000.0 {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
get_count += 1;
|
||||||
|
info!("Id:{:>15}|{}|{}", i, full_name, show_name(&namer));
|
||||||
|
// 写入 (写到最后一行)
|
||||||
|
match std::fs::OpenOptions::new()
|
||||||
|
.append(true)
|
||||||
|
.create(true)
|
||||||
|
.open(outfile)
|
||||||
|
.and_then(|mut file| file.write(format!("{}\n", full_name).as_bytes()))
|
||||||
|
{
|
||||||
|
Ok(_) => {}
|
||||||
|
Err(e) => {
|
||||||
|
warn!("写入文件<{:?}>失败: {}", outfile, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
k += 1;
|
||||||
|
if k >= report_interval as u64 {
|
||||||
|
let now = std::time::Instant::now();
|
||||||
|
let d_t: std::time::Duration = now.duration_since(start_time);
|
||||||
|
let new_run_speed = k as f64 / d_t.as_secs_f64();
|
||||||
|
// 预估剩余时间
|
||||||
|
let wait_time = (config.end - i) / config.thread_count as u64 / new_run_speed as u64;
|
||||||
|
let wait_time = chrono::Duration::seconds(wait_time as i64);
|
||||||
|
// 转换成 时:分:秒
|
||||||
|
// 根据实际运行速率来调整 report_interval
|
||||||
|
report_interval = config.report_interval * new_run_speed as u64;
|
||||||
|
info!(
|
||||||
|
"|{:>2}|Id:{:>15}|{:6.2}/s {:>3.3}E/d {:>5.2}{}|{:<3}|预计:{}:{}:{}|",
|
||||||
|
id,
|
||||||
|
i,
|
||||||
|
new_run_speed,
|
||||||
|
new_run_speed * 8.64 / 1_0000.0,
|
||||||
|
d_t.as_secs_f64(),
|
||||||
|
// 根据对比上一段运行速度 输出 emoji
|
||||||
|
// ⬆️ ➡️ ⬇️
|
||||||
|
if new_run_speed > run_speed {
|
||||||
|
"⬆️".green()
|
||||||
|
} else if new_run_speed < run_speed {
|
||||||
|
// 橙色
|
||||||
|
"⬇️".red()
|
||||||
|
} else {
|
||||||
|
"➡️".blue()
|
||||||
|
},
|
||||||
|
get_count,
|
||||||
|
wait_time.num_hours(),
|
||||||
|
wait_time.num_minutes() % 60,
|
||||||
|
wait_time.num_seconds() % 60
|
||||||
|
);
|
||||||
|
run_speed = new_run_speed;
|
||||||
|
start_time = std::time::Instant::now();
|
||||||
|
k = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
334
src/evaluate.rs
334
src/evaluate.rs
@ -1,330 +1,12 @@
|
|||||||
|
pub mod base;
|
||||||
const MODULE: [f64; 989] = [
|
pub mod xuping;
|
||||||
1.950620413256, 0.686047371475, 37.078806981531, -56.350182111228,
|
|
||||||
-86.245538958342, -70.141561618677, -15.705012389623, 72.501018127843,
|
|
||||||
-33.702622017009, -10.578427274580, -41.918786497097, -14.319650283843,
|
|
||||||
-33.392078588817, -38.191147918006, -10.809076902675, -33.807124772749,
|
|
||||||
-21.116423022245, -20.733167567407, -36.166017959307, 17.686015055598,
|
|
||||||
-13.333844495773, -1.382769848072, -21.035024270961, -23.329182612127,
|
|
||||||
-5.601802089714, -4.089879184916, -32.623499273312, 5.412998926765,
|
|
||||||
-6.926216584115, 76.088938578011, 15.172664342720, 38.764104717252,
|
|
||||||
30.786058425809, 3.811095882771, 7.032399235986, -17.795957866920,
|
|
||||||
8.106663713431, -26.030257039986, -12.592402722820, 8.735178591009,
|
|
||||||
-8.282449611019, 9.435398534886, -35.962796961199, -0.017072080826,
|
|
||||||
0.092842987372, -0.125223181517, 0.117867823429, 0.069337828290,
|
|
||||||
0.110582912939, -0.098537752979, 0.041686156083, 0.025032874748,
|
|
||||||
-0.008033810105, 0.031921576069, 0.006499147544, 0.015651157911,
|
|
||||||
0.029422894750, 0.025319106237, 0.031610567410, 0.013576566758,
|
|
||||||
-0.001538744074, 0.033972672188, 0.007354506982, 0.006888857456,
|
|
||||||
0.002360490562, 0.012195464271, 0.014023599644, 0.021974196237,
|
|
||||||
0.024141285754, -0.042473314562, 0.008437345803, 0.040913404735,
|
|
||||||
-0.001477073691, 0.023277320259, 0.070273102847, 0.010411775062,
|
|
||||||
-0.030366668677, 0.053633760255, 0.000417457994, -0.036552196101,
|
|
||||||
-0.001827120822, 0.010624376666, 0.005374719146, 0.021572231497,
|
|
||||||
0.007695603454, -0.032051066673, 0.022163108422, 0.236922733675,
|
|
||||||
-0.090691069015, 0.130451908042, -0.284777001204, 0.281178340927,
|
|
||||||
-0.370189568015, -0.132256138312, -0.118325811628, -0.111037458148,
|
|
||||||
-0.149325311559, -0.018874760055, -0.103128068239, 0.184880267353,
|
|
||||||
0.167233497412, -0.025594729705, 0.087945487194, -0.111550780856,
|
|
||||||
-0.125867358856, -0.057154884198, -0.073419542395, -0.083728018013,
|
|
||||||
-0.029475459693, -0.036997271688, -0.130706147894, 0.251220876851,
|
|
||||||
-0.108034375915, -0.092592236193, -0.416150092511, -0.200030954323,
|
|
||||||
-0.335672099883, -0.166032644719, 0.061565184689, -0.143114252112,
|
|
||||||
0.117354414638, 0.077197217568, -0.005011675580, 0.147412423938,
|
|
||||||
-0.087680127423, -0.026221206178, 0.029798553374, 0.223770405298,
|
|
||||||
-0.258646161634, 0.328601917614, 0.138436437563, 0.143798560018,
|
|
||||||
-0.205842587608, 0.065962618070, 0.098415994416, 0.031884214640,
|
|
||||||
0.078796294448, 0.066447210364, -0.007842834092, 0.073540704438,
|
|
||||||
0.041048740278, 0.077513460327, -0.021192357484, -0.160291135892,
|
|
||||||
0.098243065220, 0.018918954681, 0.026108842874, -0.071786077568,
|
|
||||||
0.028933526504, 0.044701514728, 0.127608655804, 0.142934869247,
|
|
||||||
-0.272205511976, 0.055157822970, 0.186288794754, 0.197043041367,
|
|
||||||
0.218373232333, 0.174530702788, 0.070406880413, -0.058171052443,
|
|
||||||
0.195882743478, -0.107106470947, -0.083638055945, 0.050610606994,
|
|
||||||
-0.039237357934, 0.102356417358, 0.117101801530, -0.017312125815,
|
|
||||||
-0.195041016353, -0.060605215358, 0.110902812581, -0.006101685426,
|
|
||||||
0.414533038290, -0.092949938951, 0.004694096297, 0.054970318173,
|
|
||||||
0.030494956830, -0.062755810070, 0.066840872180, -0.007448548514,
|
|
||||||
-0.053161479236, -0.022380595889, -0.021870487779, 0.102964462871,
|
|
||||||
0.024399194551, 0.045011464481, 0.026959176620, 0.047768522943,
|
|
||||||
0.088833929337, -0.030391901480, -0.042344648612, -0.021700020685,
|
|
||||||
0.288526041304, -0.004928292352, -0.069596560216, -0.204870021567,
|
|
||||||
-0.219207768688, -0.345584402686, -0.063707006600, 0.020361077221,
|
|
||||||
-0.170847181719, 0.094028133319, 0.023539894888, 0.013409305715,
|
|
||||||
0.023856847248, -0.067876967153, -0.137727672560, -0.005541909944,
|
|
||||||
0.273277074386, 0.130327785323, 0.075705563013, 0.265801150948,
|
|
||||||
0.040811489949, 0.012086519491, 0.064685654879, 0.056547010781,
|
|
||||||
0.068382559504, 0.053972263401, 0.061533519745, 0.041652300204,
|
|
||||||
0.081098498803, -0.025366811878, 0.048168978340, 0.038088019968,
|
|
||||||
-0.090290776245, 0.015893631609, 0.003670368232, 0.089512073742,
|
|
||||||
-0.031128042122, -0.035675351967, -0.044942864507, 0.133486431326,
|
|
||||||
-0.013405091817, 0.001754281342, -0.199220214463, -0.093665806440,
|
|
||||||
-0.256760424456, -0.068088646739, 0.071100061793, -0.084022073730,
|
|
||||||
0.008296586660, 0.060611404482, 0.034391933692, 0.016280568232,
|
|
||||||
-0.006163274726, -0.008288146483, 0.021330713655, 0.100206899202,
|
|
||||||
0.098614154012, 0.274063679202, 0.148531450008, 0.277826193435,
|
|
||||||
0.153822345391, 0.192259450692, 0.254713028517, 0.250724360211,
|
|
||||||
0.255723580793, -0.131816302737, -0.093091061135, 0.330539674073,
|
|
||||||
0.124475381854, 0.189381964996, -0.032363814789, -0.011865772657,
|
|
||||||
0.073296703158, 0.163853541482, 0.075654991185, -0.057293610317,
|
|
||||||
0.111618096345, 0.274168963139, -0.045823459290, -0.160288340573,
|
|
||||||
-0.107296022844, -0.135831496334, -0.224615266600, -0.154340286526,
|
|
||||||
0.084224877232, -0.141072804518, 0.120833054294, 0.090974089020,
|
|
||||||
0.074649812082, 0.036490667754, -0.052933835759, -0.039421413124,
|
|
||||||
0.006135797482, 0.248750673897, -0.212029563376, 0.146591910640,
|
|
||||||
0.070442405144, 0.031836318606, 0.106784783589, 0.104753708909,
|
|
||||||
-0.012372317073, 0.088507508232, 0.054798106532, 0.085299294738,
|
|
||||||
0.016044969467, -0.112402954915, 0.111900251973, 0.013371724428,
|
|
||||||
0.034078840415, 0.042227867898, 0.030851903266, 0.127685870108,
|
|
||||||
0.076211910992, 0.029672933991, -0.240925299587, 0.165732848748,
|
|
||||||
0.203749251923, 0.210871626145, 0.287987603485, 0.207171081643,
|
|
||||||
0.121039088549, -0.044189113015, 0.231618529025, -0.023255941877,
|
|
||||||
-0.041856135446, 0.070405803829, -0.017319244110, 0.106434918183,
|
|
||||||
0.171343160663, -0.015075460490, -0.112775455174, -0.372670996695,
|
|
||||||
0.086704666131, 0.076496746557, 0.127526592877, -0.012260110098,
|
|
||||||
0.102565117459, 0.076270079702, 0.003371890099, 0.083478220541,
|
|
||||||
0.086270239561, 0.240755219878, 0.055716737997, 0.083974100250,
|
|
||||||
0.176529769692, 0.094940290530, 0.050874389917, 0.142108132900,
|
|
||||||
0.004139679133, 0.078178987014, 0.224829413216, -0.005670729553,
|
|
||||||
0.039605176446, -0.091278138630, -0.003883078689, 0.064533127177,
|
|
||||||
0.025282380290, -0.004705028142, -0.129132996259, 0.089989403828,
|
|
||||||
0.003366345478, 0.069543574410, 0.024091011112, -0.012003135849,
|
|
||||||
0.020826735487, -0.044259804423, 0.167984222568, 0.043792715810,
|
|
||||||
-0.080810496219, -0.086977347241, -0.107831346727, -0.099520588934,
|
|
||||||
-0.129528708604, 0.008095793219, -0.092163397529, -0.041638793132,
|
|
||||||
-0.007103760522, -0.067022046779, -0.086952285942, -0.077147633687,
|
|
||||||
-0.045730738100, -0.073942616695, -0.079935964809, 0.033310797636,
|
|
||||||
-0.096470960788, -0.054600767427, -0.036653425876, -0.023164598228,
|
|
||||||
-0.154826667725, -0.069999127373, -0.116473513882, -0.135592647105,
|
|
||||||
0.017475255709, 0.024126716370, -0.006620648295, -0.010342626640,
|
|
||||||
-0.048219570992, 0.028562691365, 0.002585969344, 0.036319735390,
|
|
||||||
-0.058642818260, 0.029467208856, 0.020938526296, -0.078122627603,
|
|
||||||
-0.116327962720, -0.043032082942, -0.067333347384, -0.046107429052,
|
|
||||||
-0.069539536139, -0.060080493114, -0.019356328396, -0.101305799377,
|
|
||||||
-0.042149854661, -0.069700501812, -0.023428614188, -0.053343066707,
|
|
||||||
-0.002695820213, 0.013519155186, -0.088431387441, -0.057766410383,
|
|
||||||
-0.122639219906, -0.066978402817, -0.161076714656, 0.002614383333,
|
|
||||||
0.031601492207, -0.055178630585, -0.015690512204, 0.023832482878,
|
|
||||||
-0.052418790287, -0.002011238366, 0.001505485029, 0.010242003951,
|
|
||||||
-0.010147518066, -0.033197882930, -0.019369071234, 0.017054414572,
|
|
||||||
0.034369944882, -0.055316037392, -0.059452531915, -0.111609536255,
|
|
||||||
-0.105959491664, -0.031894456199, -0.107358448129, 0.026093026587,
|
|
||||||
-0.023211922001, -0.037207763482, -0.057240989053, -0.007450363111,
|
|
||||||
-0.032940635320, -0.011011247851, 0.031688028283, -0.078487502245,
|
|
||||||
-0.043123723991, -0.001217863847, 0.022753832241, -0.156667554878,
|
|
||||||
-0.090410446171, 0.054812636778, -0.070289401278, 0.019307995665,
|
|
||||||
0.004169186054, -0.013867997717, -0.024734884025, -0.005801782214,
|
|
||||||
0.000126928741, 0.002262509579, -0.015851708319, 0.004113930494,
|
|
||||||
0.044421311025, 0.017748424708, -0.073534043660, -0.021131286276,
|
|
||||||
-0.083469623583, -0.084264022938, -0.057237584686, -0.068991208521,
|
|
||||||
-0.117663576133, -0.063884024830, -0.076097190446, -0.033535011829,
|
|
||||||
-0.081899353210, -0.031993336034, -0.001533735338, -0.120878957445,
|
|
||||||
0.002321414453, 0.008411560288, -0.001992214658, -0.177646843698,
|
|
||||||
0.000096160020, 0.032527391370, -0.104029732834, 0.017672107177,
|
|
||||||
-0.033825447055, 0.023152474904, 0.021848950289, -0.082615374631,
|
|
||||||
0.004229588893, -0.006252784956, 0.017804283859, 0.028831822603,
|
|
||||||
0.031516721560, 0.016148213510, -0.049360216968, -0.013066076204,
|
|
||||||
-0.064898201280, -0.078278264716, 0.016124765085, -0.053233851613,
|
|
||||||
-0.027059020039, -0.020218799933, -0.009050349394, -0.033569587196,
|
|
||||||
-0.042132015083, 0.000251197438, -0.053811865213, -0.039640214804,
|
|
||||||
0.023742972405, 0.023879197114, -0.118986800208, 0.039744853889,
|
|
||||||
-0.045265252571, 0.013168535188, -0.043820356299, -0.053525866676,
|
|
||||||
-0.010265946777, -0.011998203812, 0.036288912027, 0.002226328972,
|
|
||||||
0.038497478633, -0.018763787859, 0.018957051244, 0.047391681914,
|
|
||||||
0.033036730807, -0.082520390445, -0.074737248993, 0.012900421600,
|
|
||||||
0.028011611543, -0.041147517580, -0.094557012083, -0.070467310522,
|
|
||||||
-0.032350832458, -0.076083203264, 0.020344550900, -0.020073994561,
|
|
||||||
-0.105017114758, 0.005867652209, -0.048793158718, -0.045146293387,
|
|
||||||
-0.147806860705, -0.074039457679, -0.033949909024, -0.040118614411,
|
|
||||||
0.000770958192, 0.013855320722, -0.039607573304, 0.012498005512,
|
|
||||||
-0.006939340550, -0.007676876403, 0.017517467668, 0.025592362828,
|
|
||||||
-0.012876866768, 0.009012106697, -0.003325525307, -0.112945873134,
|
|
||||||
-0.096422462973, -0.016652526311, -0.027736961169, -0.097349792340,
|
|
||||||
-0.077344398908, -0.029444554003, -0.063144970299, -0.086112352963,
|
|
||||||
-0.037448279910, -0.081315033259, -0.056791429110, -0.010513051658,
|
|
||||||
-0.025575503893, -0.144508702026, -0.010663316073, -0.138925485323,
|
|
||||||
-0.085438889188, 0.021722897852, 0.035862835029, 0.027305567412,
|
|
||||||
0.015802250815, -0.084047102823, -0.036080683633, -0.072366115018,
|
|
||||||
-0.016489751149, 0.051195145070, 0.055596299374, 0.020721114696,
|
|
||||||
-0.074548858098, 0.015403465853, -0.028242572587, -0.061773150577,
|
|
||||||
0.008106071927, -0.045318487343, -0.072665986891, -0.039966131325,
|
|
||||||
0.046040594721, -0.048258013725, 0.018410098746, -0.011863940852,
|
|
||||||
0.004584252051, -0.174520547599, -0.046844101092, -0.126586175679,
|
|
||||||
-0.034129399731, -0.031862770863, 0.054300104094, -0.001207761279,
|
|
||||||
0.032582755464, 0.019720165339, 0.010909255480, -0.004294094553,
|
|
||||||
0.049161057941, -0.046629565228, 0.076675888506, -0.013905877106,
|
|
||||||
-0.068089983229, -0.034061588389, -0.030172648394, -0.045642555317,
|
|
||||||
-0.118287038999, -0.062835505789, -0.023000239293, 0.011670953926,
|
|
||||||
-0.114637955498, -0.049646458595, -0.031950203442, -0.100465627522,
|
|
||||||
-0.171144479310, -0.086456974325, 0.005187521028, -0.136724768858,
|
|
||||||
-0.006498474101, 0.104832433675, -0.013982731977, -0.009865169866,
|
|
||||||
-0.012308138596, -0.009259533193, -0.070090974300, -0.060135565555,
|
|
||||||
-0.008762920234, -0.017947562880, -0.008528248421, 0.016949338529,
|
|
||||||
-0.080045847612, -0.048199433852, 0.001151565315, -0.074554255431,
|
|
||||||
-0.003890588686, 0.180852777286, -0.033539407430, 0.030997566757,
|
|
||||||
0.031564605351, -0.036482591854, -0.080778175212, -0.149497735215,
|
|
||||||
0.201726261554, -0.051683467647, -0.010443240902, 0.049294071546,
|
|
||||||
-0.033631234141, 0.020930366639, 0.126257920978, -0.056636247562,
|
|
||||||
-0.008344450472, 0.093984023302, 0.060661781322, 0.001037366826,
|
|
||||||
0.025987019933, -0.104023239344, -0.030765776252, -0.066813748509,
|
|
||||||
-0.061760826686, -0.028151959372, 0.050643283828, -0.091476240751,
|
|
||||||
-0.021674289605, -0.012634923913, -0.057388008033, -0.127424095951,
|
|
||||||
-0.029311259297, -0.193633611365, -0.104603998849, 0.000392766036,
|
|
||||||
0.024054848967, -0.007730734800, -0.054411222446, -0.013372284452,
|
|
||||||
0.051652414019, -0.104272875526, -0.003170100981, 0.016385920170,
|
|
||||||
0.016157115952, 0.013401544933, -0.054558721496, -0.031782948351,
|
|
||||||
-0.097178250079, -0.040177337249, -0.006973538093, -0.064894000503,
|
|
||||||
-0.091341313860, -0.061170298368, -0.156608499653, -0.151261151107,
|
|
||||||
-0.064884240687, 0.178537508632, -0.108705687120, 0.003524304424,
|
|
||||||
-0.026938409322, 0.001751256110, 0.041003258290, -0.025367484612,
|
|
||||||
-0.005758421555, -0.087636153640, 0.003412004612, 0.014258788615,
|
|
||||||
-0.026574512015, 0.065100412835, 0.033114818387, -0.085128793699,
|
|
||||||
0.033834283989, -0.007307222382, -0.060262320907, -0.071021286830,
|
|
||||||
0.001553537663, -0.095208937254, -0.072717138812, -0.008095069994,
|
|
||||||
0.058992186260, 0.045300898293, 0.028111216733, 0.027733461346,
|
|
||||||
0.016883748700, 0.068534228905, 0.029051008074, 0.009568239785,
|
|
||||||
0.000951876245, -0.132517927694, -0.099951120813, 0.065130516865,
|
|
||||||
0.028701429533, -0.037605115499, 0.054201981662, 0.046251261300,
|
|
||||||
-0.054669824609, -0.041092087601, -0.161630656400, -0.103247311366,
|
|
||||||
-0.092132235763, 0.104494323063, 0.031369139118, -0.018441849253,
|
|
||||||
0.013159013263, 0.033017142162, -0.029751089274, -0.075874522084,
|
|
||||||
-0.018845381437, 0.013430361839, -0.067897165390, -0.073925924278,
|
|
||||||
-0.004501306631, 0.015306682849, -0.010098321739, -0.020321668764,
|
|
||||||
0.008407148473, -0.081682918831, -0.080692593418, -0.146994395110,
|
|
||||||
-0.082263977261, -0.168858893072, -0.064305106660, 0.005570719161,
|
|
||||||
-0.120565725934, 0.020801229776, 0.000952984479, -0.012695372644,
|
|
||||||
-0.040614948302, -0.019076926527, -0.000847676020, -0.023816721127,
|
|
||||||
-0.030737724221, -0.004551647167, 0.044721425895, 0.019894236634,
|
|
||||||
-0.031361530866, -0.005232302905, -0.041164745538, -0.077838095267,
|
|
||||||
0.026930086863, -0.086655099049, 0.047476787322, -0.012475036019,
|
|
||||||
-0.031821077418, 0.026801424962, -0.055203572301, 0.041224767276,
|
|
||||||
0.032241885267, -0.006881223703, 0.031465317805, 0.025327885583,
|
|
||||||
-0.107080718803, 0.032738798059, 0.041568036022, -0.018316787886,
|
|
||||||
0.034496648411, 0.093577775109, 0.012315336352, 0.012340133019,
|
|
||||||
-0.016037108414, -0.010201866245, 0.140630216760, 0.038073422711,
|
|
||||||
-0.045214015193, -0.012977453281, 0.027983694630, 0.009281741462,
|
|
||||||
0.070488137218, -0.054207442557, 0.029109486775, 0.054366064949,
|
|
||||||
-0.065254858837, 0.003205447585, -0.014330047914, -0.053989851192,
|
|
||||||
-0.100072479458, -0.057296669891, -0.169017710982, -0.075142982274,
|
|
||||||
-0.010992948401, -0.108967608514, 0.001595832047, 0.005204456245,
|
|
||||||
-0.006685476322, -0.014756992190, -0.009686263343, -0.004352954115,
|
|
||||||
-0.015522457066, 0.000179678964, -0.003989813028, 0.049785609216,
|
|
||||||
-0.036249107585, -0.003190580762, -0.067559995328, -0.113835906985,
|
|
||||||
-0.001649982396, 0.102498411295, -0.109275479710, -0.036655929029,
|
|
||||||
0.108810809138, -0.016820933613, -0.001625877159, 0.153036271967,
|
|
||||||
0.000271941090, 0.035327171961, 0.035980684636, 0.011238991165,
|
|
||||||
-0.019171168387, -0.021456961038, -0.087812945005, -0.100018592361,
|
|
||||||
-0.109065849603, 0.062029247441, -0.219136591898, -0.010692652949,
|
|
||||||
0.015056480429, -0.021507999684, 0.024755880313, -0.009440778801,
|
|
||||||
0.012423044125, -0.095945531533, 0.009020644349, -0.035355496473,
|
|
||||||
0.031827480685, -0.070860703486, -0.206637247393, -0.155403501830,
|
|
||||||
-0.179485839688, -0.187548612314, 0.003886995886, -0.013703150806,
|
|
||||||
0.000803974794, 0.002365524203, 0.080127679063, 0.030755526719,
|
|
||||||
0.048964118305, 0.026749257198, 0.016396989744, 0.088475720851,
|
|
||||||
-0.053913788203, -0.199728700757, -0.051725224519, -0.128257790360,
|
|
||||||
-0.028830383614, -0.159500962075, -0.013640779585, -0.016977746021,
|
|
||||||
0.007040711634, -0.035107408327, -0.029244230216, 0.005583554526,
|
|
||||||
-0.028170178519, -0.006038904525, -0.018647591281, -0.052244808004,
|
|
||||||
-0.015988862066, -0.016767711750, 0.047179147680, -0.031613465314,
|
|
||||||
0.082236758453, -0.010335508060, 0.008537534076, -0.031751024873,
|
|
||||||
-0.002069329496, 0.077650266221, 0.012608880222, 0.070251114609,
|
|
||||||
0.075002102822, -0.002995261915, -0.078942741615, 0.057856878787,
|
|
||||||
0.153430484567, 0.051558042113, -0.069189571793, -0.006914046025,
|
|
||||||
-0.215680623689, 0.025256394453, 0.043859782606, 0.001750740500,
|
|
||||||
0.029230558113, -0.046125890268, -0.025134970671, -0.020862016864,
|
|
||||||
0.010929066832, 0.007863683449, -0.083981330388, 0.041963402277,
|
|
||||||
-0.022412307272, 0.090580474781, 0.020051228823, 0.062968213032,
|
|
||||||
0.005707266912, 0.047467475139, 0.097563068857, 0.083167019386,
|
|
||||||
0.026752952531, 0.079635850095, -0.068390318576, -0.029565371105,
|
|
||||||
0.014255052975, 0.069262154841, 0.087730379014, 0.123778986279,
|
|
||||||
0.010099119378, -0.007654739242, -0.005542174957, 0.053077753355,
|
|
||||||
0.075026262765, -0.003774940341, -0.040023462142, 0.021045418641,
|
|
||||||
-0.026786136833, -0.013287394176, 0.040506083517, 0.013198475516,
|
|
||||||
-0.077731681385, -0.008523656573, -0.031691572766, -0.038457031052,
|
|
||||||
0.028666688385, 0.052397362325, 0.022568832943, -0.052426050966,
|
|
||||||
0.079952066788, 0.051294023843, -0.081081839206, 0.179119007880,
|
|
||||||
-0.018137760286, -0.007661618767, 0.002945755070, 0.048597405630,
|
|
||||||
0.031179691213, 0.030436816708, -0.042557440634, -0.003084028063,
|
|
||||||
-0.111980160770, -0.002839888114, 0.062186999524, -0.046313493804,
|
|
||||||
-0.036207354442, 0.058055631445, -0.051073587305, -0.021191938491,
|
|
||||||
-0.238232953617];
|
|
||||||
|
|
||||||
const INTERCEPT: f64 = 743.345708241252;
|
|
||||||
|
|
||||||
/// 虚评 1.3.1
|
|
||||||
|
|
||||||
#[cfg(feature = "simd")]
|
|
||||||
use std::simd::f64x64;
|
|
||||||
|
|
||||||
use crate::name::Namer;
|
use crate::name::Namer;
|
||||||
|
|
||||||
pub fn predict(name: &Namer) -> f64 {
|
/// 评价器
|
||||||
let mut sum = INTERCEPT;
|
pub trait NamerEvaluater {
|
||||||
/*
|
const NAME: &'static str;
|
||||||
memset(st + 8, 0, 35 * sizeof(int));
|
const VERSION: &'static str;
|
||||||
for (int i = 0; i < 16; i++)
|
fn check(&self, name: &Namer) -> bool;
|
||||||
if (context::freq[i]) st[context::skill[i] + 8] = context::freq[i]; */
|
fn evaluate(name: &Namer) -> f64;
|
||||||
// 长度取 64, 方便simd填充
|
|
||||||
let mut st: [f64; 64] = [0.0; 64];
|
|
||||||
for i in 0..7 {
|
|
||||||
st[i] = name.name_prop[i] as f64;
|
|
||||||
}
|
}
|
||||||
for i in 0..16 {
|
|
||||||
if name.skl_freq[i] != 0 {
|
|
||||||
st[name.skl_id[i] as usize + 8] = name.skl_freq[i] as f64;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
int cnt = 0;
|
|
||||||
|
|
||||||
for (int i = 0; i < 43; i++) {
|
|
||||||
pred += st[i] * model[cnt++];
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < 43; i++) {
|
|
||||||
for (int j = i; j < 43; j++) {
|
|
||||||
pred += st[i] * st[j] * model[cnt++];
|
|
||||||
}
|
|
||||||
} */
|
|
||||||
// use simd
|
|
||||||
#[cfg(feature = "simd")]
|
|
||||||
{
|
|
||||||
// 先准备数据
|
|
||||||
let mut target = [0_f64; 989];
|
|
||||||
target[0..43].copy_from_slice(&st[0..43]);
|
|
||||||
let mut k = 43;
|
|
||||||
// 43 * 43
|
|
||||||
for i in 0..43 {
|
|
||||||
for j in i..43 {
|
|
||||||
target[k] = st[i] * st[j];
|
|
||||||
k += 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 准备模型数据
|
|
||||||
let mut simds = MODULE.clone();
|
|
||||||
let simd_module = simds.as_simd_mut::<64>();
|
|
||||||
let simd_target = target.as_simd_mut::<64>();
|
|
||||||
// 前面多出来的
|
|
||||||
for i in 0..simd_module.0.len() {
|
|
||||||
sum += simd_module.0[i] * simd_target.0[i];
|
|
||||||
}
|
|
||||||
// 主! 体!
|
|
||||||
|
|
||||||
}
|
|
||||||
#[cfg(not(feature = "simd"))]
|
|
||||||
{
|
|
||||||
let mut cnt = 0;
|
|
||||||
for i in 0..43 {
|
|
||||||
sum += st[i] * MODEL[cnt];
|
|
||||||
cnt += 1;
|
|
||||||
for j in i..43 {
|
|
||||||
sum += st[i] * st[j] * MODEL[cnt];
|
|
||||||
cnt += 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
sum
|
|
||||||
}
|
|
||||||
|
|
||||||
|
1
src/evaluate/base.rs
Normal file
1
src/evaluate/base.rs
Normal file
@ -0,0 +1 @@
|
|||||||
|
|
30
src/evaluate/xuping.rs
Normal file
30
src/evaluate/xuping.rs
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
mod eval;
|
||||||
|
mod model13;
|
||||||
|
mod model20;
|
||||||
|
|
||||||
|
use crate::evaluate::NamerEvaluater;
|
||||||
|
use crate::name::Namer;
|
||||||
|
|
||||||
|
pub struct XuPing1_3_1 {
|
||||||
|
pub limit: f64,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl XuPing1_3_1 {
|
||||||
|
pub fn new(limit: f64) -> Self { Self { limit } }
|
||||||
|
}
|
||||||
|
|
||||||
|
impl NamerEvaluater for XuPing1_3_1 {
|
||||||
|
const NAME: &'static str = "虚评";
|
||||||
|
const VERSION: &'static str = "1.3.1";
|
||||||
|
fn evaluate(name: &Namer) -> f64 { eval::predict_13(name) }
|
||||||
|
fn check(&self, name: &Namer) -> bool { eval::predict_13(name) > self.limit }
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct XuPing2_0_1015;
|
||||||
|
|
||||||
|
impl NamerEvaluater for XuPing2_0_1015 {
|
||||||
|
const NAME: &'static str = "虚评";
|
||||||
|
const VERSION: &'static str = "2.0-10.15";
|
||||||
|
fn evaluate(name: &Namer) -> f64 { eval::predict_20(name) }
|
||||||
|
fn check(&self, name: &Namer) -> bool { eval::predict_20(name) > 0.0 }
|
||||||
|
}
|
143
src/evaluate/xuping/eval.rs
Normal file
143
src/evaluate/xuping/eval.rs
Normal file
@ -0,0 +1,143 @@
|
|||||||
|
/// 虚评 1.3.1
|
||||||
|
|
||||||
|
#[cfg(feature = "simd")]
|
||||||
|
use std::simd::f64x64;
|
||||||
|
#[cfg(feature = "simd")]
|
||||||
|
use std::simd::num::SimdFloat;
|
||||||
|
|
||||||
|
use tracing::debug;
|
||||||
|
|
||||||
|
use crate::evaluate::xuping::model13 as xuping13;
|
||||||
|
use crate::name::Namer;
|
||||||
|
|
||||||
|
pub fn predict_13(name: &Namer) -> f64 {
|
||||||
|
let mut sum = xuping13::INTERCEPT;
|
||||||
|
/*
|
||||||
|
memset(st + 8, 0, 35 * sizeof(int));
|
||||||
|
for (int i = 0; i < 16; i++)
|
||||||
|
if (context::freq[i]) st[context::skill[i] + 8] = context::freq[i]; */
|
||||||
|
|
||||||
|
// use simd
|
||||||
|
// #[cfg(feature = "simd")]
|
||||||
|
#[cfg(not(feature = "simd"))]
|
||||||
|
{
|
||||||
|
let mut st: [f64; 64] = [0.0; 64];
|
||||||
|
// 长度取 64, 方便simd填充
|
||||||
|
for i in 0..7 {
|
||||||
|
st[i] = name.name_prop[i] as f64;
|
||||||
|
}
|
||||||
|
for i in 0..16 {
|
||||||
|
if name.skl_freq[i] != 0 {
|
||||||
|
st[name.skl_id[i] as usize + 8] = name.skl_freq[i] as f64;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 先准备数据
|
||||||
|
let mut target = [0_f64; 989];
|
||||||
|
target[0..43].copy_from_slice(&st[0..43]);
|
||||||
|
let mut k = 43;
|
||||||
|
// 43 * 43
|
||||||
|
for i in 0..43 {
|
||||||
|
for j in i..43 {
|
||||||
|
target[k] = st[i] * st[j];
|
||||||
|
k += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 准备模型数据
|
||||||
|
let mut simds = xuping13::MODULE.clone();
|
||||||
|
let simd_module = simds.as_simd_mut::<64>();
|
||||||
|
let simd_target = target.as_simd_mut::<64>();
|
||||||
|
println!("module = {:?}", simd_module);
|
||||||
|
println!("target = {:?}", simd_target);
|
||||||
|
// 前面多出来的
|
||||||
|
for i in 0..simd_module.0.len() - 1 {
|
||||||
|
sum += simd_module.0[i] * simd_target.0[i];
|
||||||
|
}
|
||||||
|
debug!("sum = {}", sum);
|
||||||
|
// 主! 体!
|
||||||
|
let mut tmp = f64x64::splat(0.0);
|
||||||
|
for i in 0..simd_module.1.len() - 1 {
|
||||||
|
tmp += simd_module.1[i] * simd_target.1[i];
|
||||||
|
}
|
||||||
|
sum += tmp.reduce_sum();
|
||||||
|
debug!("sum = {}", sum);
|
||||||
|
// 后面多出来的
|
||||||
|
for i in 0..simd_module.2.len() - 1 {
|
||||||
|
sum += simd_module.2[i] * simd_target.2[i];
|
||||||
|
}
|
||||||
|
debug!("sum = {}", sum);
|
||||||
|
}
|
||||||
|
// #[cfg(not(feature = "simd"))]
|
||||||
|
#[cfg(feature = "simd")]
|
||||||
|
{
|
||||||
|
let mut st: [f64; 43] = [0.0; 43];
|
||||||
|
// 长度取 64, 方便simd填充
|
||||||
|
for i in 0..7 {
|
||||||
|
st[i] = name.name_prop[i] as f64;
|
||||||
|
}
|
||||||
|
for i in 0..16 {
|
||||||
|
if name.skl_freq[i] != 0 {
|
||||||
|
st[name.skl_id[i] as usize + 8] = name.skl_freq[i] as f64;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let mut cnt = 0;
|
||||||
|
for i in 0..43 {
|
||||||
|
sum += st[i] * xuping13::MODULE[cnt];
|
||||||
|
print!("{} ", sum);
|
||||||
|
cnt += 1;
|
||||||
|
}
|
||||||
|
for i in 0..43 {
|
||||||
|
for j in i..43 {
|
||||||
|
sum += st[i] * st[j] * xuping13::MODULE[cnt];
|
||||||
|
print!("{} ", sum);
|
||||||
|
cnt += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sum
|
||||||
|
}
|
||||||
|
|
||||||
|
/*function Poly(x) {
|
||||||
|
var xp = new Array()
|
||||||
|
for (let y = 0; y < 1034; y++) {
|
||||||
|
var l = 44
|
||||||
|
var i = 0, p = 0, q = 0, r = 0
|
||||||
|
var j = y
|
||||||
|
for (let k = 0; k < 45; k++) {
|
||||||
|
i++;
|
||||||
|
if (i > 2) p++;
|
||||||
|
q = j;
|
||||||
|
j = j - l + p;
|
||||||
|
if (j < 0) break;
|
||||||
|
}
|
||||||
|
if (i == 1) r = x[q]
|
||||||
|
if (i > 1) {
|
||||||
|
r = x[p] * x[p + q]
|
||||||
|
}
|
||||||
|
xp[y] = r
|
||||||
|
}
|
||||||
|
return xp
|
||||||
|
} */
|
||||||
|
pub fn poly(name: &Namer) -> [f64; 1034] {
|
||||||
|
let mut result = [0.0; 1034];
|
||||||
|
|
||||||
|
result
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn predict_20(name: &Namer) -> f64 { 0.0 }
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod test {
|
||||||
|
use super::*;
|
||||||
|
use crate::name::Namer;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn xuping_13_test() {
|
||||||
|
let mut namer = Namer::new(&"x@x".to_string()).unwrap();
|
||||||
|
|
||||||
|
namer.update_skill();
|
||||||
|
|
||||||
|
println!("{:?}", predict_13(&namer));
|
||||||
|
panic!();
|
||||||
|
}
|
||||||
|
}
|
993
src/evaluate/xuping/model13.rs
Normal file
993
src/evaluate/xuping/model13.rs
Normal file
@ -0,0 +1,993 @@
|
|||||||
|
pub const MODULE: [f64; 989] = [
|
||||||
|
1.950620413256,
|
||||||
|
0.686047371475,
|
||||||
|
37.078806981531,
|
||||||
|
-56.350182111228,
|
||||||
|
-86.245538958342,
|
||||||
|
-70.141561618677,
|
||||||
|
-15.705012389623,
|
||||||
|
72.501018127843,
|
||||||
|
-33.702622017009,
|
||||||
|
-10.578427274580,
|
||||||
|
-41.918786497097,
|
||||||
|
-14.319650283843,
|
||||||
|
-33.392078588817,
|
||||||
|
-38.191147918006,
|
||||||
|
-10.809076902675,
|
||||||
|
-33.807124772749,
|
||||||
|
-21.116423022245,
|
||||||
|
-20.733167567407,
|
||||||
|
-36.166017959307,
|
||||||
|
17.686015055598,
|
||||||
|
-13.333844495773,
|
||||||
|
-1.382769848072,
|
||||||
|
-21.035024270961,
|
||||||
|
-23.329182612127,
|
||||||
|
-5.601802089714,
|
||||||
|
-4.089879184916,
|
||||||
|
-32.623499273312,
|
||||||
|
5.412998926765,
|
||||||
|
-6.926216584115,
|
||||||
|
76.088938578011,
|
||||||
|
15.172664342720,
|
||||||
|
38.764104717252,
|
||||||
|
30.786058425809,
|
||||||
|
3.811095882771,
|
||||||
|
7.032399235986,
|
||||||
|
-17.795957866920,
|
||||||
|
8.106663713431,
|
||||||
|
-26.030257039986,
|
||||||
|
-12.592402722820,
|
||||||
|
8.735178591009,
|
||||||
|
-8.282449611019,
|
||||||
|
9.435398534886,
|
||||||
|
-35.962796961199,
|
||||||
|
-0.017072080826,
|
||||||
|
0.092842987372,
|
||||||
|
-0.125223181517,
|
||||||
|
0.117867823429,
|
||||||
|
0.069337828290,
|
||||||
|
0.110582912939,
|
||||||
|
-0.098537752979,
|
||||||
|
0.041686156083,
|
||||||
|
0.025032874748,
|
||||||
|
-0.008033810105,
|
||||||
|
0.031921576069,
|
||||||
|
0.006499147544,
|
||||||
|
0.015651157911,
|
||||||
|
0.029422894750,
|
||||||
|
0.025319106237,
|
||||||
|
0.031610567410,
|
||||||
|
0.013576566758,
|
||||||
|
-0.001538744074,
|
||||||
|
0.033972672188,
|
||||||
|
0.007354506982,
|
||||||
|
0.006888857456,
|
||||||
|
0.002360490562,
|
||||||
|
0.012195464271,
|
||||||
|
0.014023599644,
|
||||||
|
0.021974196237,
|
||||||
|
0.024141285754,
|
||||||
|
-0.042473314562,
|
||||||
|
0.008437345803,
|
||||||
|
0.040913404735,
|
||||||
|
-0.001477073691,
|
||||||
|
0.023277320259,
|
||||||
|
0.070273102847,
|
||||||
|
0.010411775062,
|
||||||
|
-0.030366668677,
|
||||||
|
0.053633760255,
|
||||||
|
0.000417457994,
|
||||||
|
-0.036552196101,
|
||||||
|
-0.001827120822,
|
||||||
|
0.010624376666,
|
||||||
|
0.005374719146,
|
||||||
|
0.021572231497,
|
||||||
|
0.007695603454,
|
||||||
|
-0.032051066673,
|
||||||
|
0.022163108422,
|
||||||
|
0.236922733675,
|
||||||
|
-0.090691069015,
|
||||||
|
0.130451908042,
|
||||||
|
-0.284777001204,
|
||||||
|
0.281178340927,
|
||||||
|
-0.370189568015,
|
||||||
|
-0.132256138312,
|
||||||
|
-0.118325811628,
|
||||||
|
-0.111037458148,
|
||||||
|
-0.149325311559,
|
||||||
|
-0.018874760055,
|
||||||
|
-0.103128068239,
|
||||||
|
0.184880267353,
|
||||||
|
0.167233497412,
|
||||||
|
-0.025594729705,
|
||||||
|
0.087945487194,
|
||||||
|
-0.111550780856,
|
||||||
|
-0.125867358856,
|
||||||
|
-0.057154884198,
|
||||||
|
-0.073419542395,
|
||||||
|
-0.083728018013,
|
||||||
|
-0.029475459693,
|
||||||
|
-0.036997271688,
|
||||||
|
-0.130706147894,
|
||||||
|
0.251220876851,
|
||||||
|
-0.108034375915,
|
||||||
|
-0.092592236193,
|
||||||
|
-0.416150092511,
|
||||||
|
-0.200030954323,
|
||||||
|
-0.335672099883,
|
||||||
|
-0.166032644719,
|
||||||
|
0.061565184689,
|
||||||
|
-0.143114252112,
|
||||||
|
0.117354414638,
|
||||||
|
0.077197217568,
|
||||||
|
-0.005011675580,
|
||||||
|
0.147412423938,
|
||||||
|
-0.087680127423,
|
||||||
|
-0.026221206178,
|
||||||
|
0.029798553374,
|
||||||
|
0.223770405298,
|
||||||
|
-0.258646161634,
|
||||||
|
0.328601917614,
|
||||||
|
0.138436437563,
|
||||||
|
0.143798560018,
|
||||||
|
-0.205842587608,
|
||||||
|
0.065962618070,
|
||||||
|
0.098415994416,
|
||||||
|
0.031884214640,
|
||||||
|
0.078796294448,
|
||||||
|
0.066447210364,
|
||||||
|
-0.007842834092,
|
||||||
|
0.073540704438,
|
||||||
|
0.041048740278,
|
||||||
|
0.077513460327,
|
||||||
|
-0.021192357484,
|
||||||
|
-0.160291135892,
|
||||||
|
0.098243065220,
|
||||||
|
0.018918954681,
|
||||||
|
0.026108842874,
|
||||||
|
-0.071786077568,
|
||||||
|
0.028933526504,
|
||||||
|
0.044701514728,
|
||||||
|
0.127608655804,
|
||||||
|
0.142934869247,
|
||||||
|
-0.272205511976,
|
||||||
|
0.055157822970,
|
||||||
|
0.186288794754,
|
||||||
|
0.197043041367,
|
||||||
|
0.218373232333,
|
||||||
|
0.174530702788,
|
||||||
|
0.070406880413,
|
||||||
|
-0.058171052443,
|
||||||
|
0.195882743478,
|
||||||
|
-0.107106470947,
|
||||||
|
-0.083638055945,
|
||||||
|
0.050610606994,
|
||||||
|
-0.039237357934,
|
||||||
|
0.102356417358,
|
||||||
|
0.117101801530,
|
||||||
|
-0.017312125815,
|
||||||
|
-0.195041016353,
|
||||||
|
-0.060605215358,
|
||||||
|
0.110902812581,
|
||||||
|
-0.006101685426,
|
||||||
|
0.414533038290,
|
||||||
|
-0.092949938951,
|
||||||
|
0.004694096297,
|
||||||
|
0.054970318173,
|
||||||
|
0.030494956830,
|
||||||
|
-0.062755810070,
|
||||||
|
0.066840872180,
|
||||||
|
-0.007448548514,
|
||||||
|
-0.053161479236,
|
||||||
|
-0.022380595889,
|
||||||
|
-0.021870487779,
|
||||||
|
0.102964462871,
|
||||||
|
0.024399194551,
|
||||||
|
0.045011464481,
|
||||||
|
0.026959176620,
|
||||||
|
0.047768522943,
|
||||||
|
0.088833929337,
|
||||||
|
-0.030391901480,
|
||||||
|
-0.042344648612,
|
||||||
|
-0.021700020685,
|
||||||
|
0.288526041304,
|
||||||
|
-0.004928292352,
|
||||||
|
-0.069596560216,
|
||||||
|
-0.204870021567,
|
||||||
|
-0.219207768688,
|
||||||
|
-0.345584402686,
|
||||||
|
-0.063707006600,
|
||||||
|
0.020361077221,
|
||||||
|
-0.170847181719,
|
||||||
|
0.094028133319,
|
||||||
|
0.023539894888,
|
||||||
|
0.013409305715,
|
||||||
|
0.023856847248,
|
||||||
|
-0.067876967153,
|
||||||
|
-0.137727672560,
|
||||||
|
-0.005541909944,
|
||||||
|
0.273277074386,
|
||||||
|
0.130327785323,
|
||||||
|
0.075705563013,
|
||||||
|
0.265801150948,
|
||||||
|
0.040811489949,
|
||||||
|
0.012086519491,
|
||||||
|
0.064685654879,
|
||||||
|
0.056547010781,
|
||||||
|
0.068382559504,
|
||||||
|
0.053972263401,
|
||||||
|
0.061533519745,
|
||||||
|
0.041652300204,
|
||||||
|
0.081098498803,
|
||||||
|
-0.025366811878,
|
||||||
|
0.048168978340,
|
||||||
|
0.038088019968,
|
||||||
|
-0.090290776245,
|
||||||
|
0.015893631609,
|
||||||
|
0.003670368232,
|
||||||
|
0.089512073742,
|
||||||
|
-0.031128042122,
|
||||||
|
-0.035675351967,
|
||||||
|
-0.044942864507,
|
||||||
|
0.133486431326,
|
||||||
|
-0.013405091817,
|
||||||
|
0.001754281342,
|
||||||
|
-0.199220214463,
|
||||||
|
-0.093665806440,
|
||||||
|
-0.256760424456,
|
||||||
|
-0.068088646739,
|
||||||
|
0.071100061793,
|
||||||
|
-0.084022073730,
|
||||||
|
0.008296586660,
|
||||||
|
0.060611404482,
|
||||||
|
0.034391933692,
|
||||||
|
0.016280568232,
|
||||||
|
-0.006163274726,
|
||||||
|
-0.008288146483,
|
||||||
|
0.021330713655,
|
||||||
|
0.100206899202,
|
||||||
|
0.098614154012,
|
||||||
|
0.274063679202,
|
||||||
|
0.148531450008,
|
||||||
|
0.277826193435,
|
||||||
|
0.153822345391,
|
||||||
|
0.192259450692,
|
||||||
|
0.254713028517,
|
||||||
|
0.250724360211,
|
||||||
|
0.255723580793,
|
||||||
|
-0.131816302737,
|
||||||
|
-0.093091061135,
|
||||||
|
0.330539674073,
|
||||||
|
0.124475381854,
|
||||||
|
0.189381964996,
|
||||||
|
-0.032363814789,
|
||||||
|
-0.011865772657,
|
||||||
|
0.073296703158,
|
||||||
|
0.163853541482,
|
||||||
|
0.075654991185,
|
||||||
|
-0.057293610317,
|
||||||
|
0.111618096345,
|
||||||
|
0.274168963139,
|
||||||
|
-0.045823459290,
|
||||||
|
-0.160288340573,
|
||||||
|
-0.107296022844,
|
||||||
|
-0.135831496334,
|
||||||
|
-0.224615266600,
|
||||||
|
-0.154340286526,
|
||||||
|
0.084224877232,
|
||||||
|
-0.141072804518,
|
||||||
|
0.120833054294,
|
||||||
|
0.090974089020,
|
||||||
|
0.074649812082,
|
||||||
|
0.036490667754,
|
||||||
|
-0.052933835759,
|
||||||
|
-0.039421413124,
|
||||||
|
0.006135797482,
|
||||||
|
0.248750673897,
|
||||||
|
-0.212029563376,
|
||||||
|
0.146591910640,
|
||||||
|
0.070442405144,
|
||||||
|
0.031836318606,
|
||||||
|
0.106784783589,
|
||||||
|
0.104753708909,
|
||||||
|
-0.012372317073,
|
||||||
|
0.088507508232,
|
||||||
|
0.054798106532,
|
||||||
|
0.085299294738,
|
||||||
|
0.016044969467,
|
||||||
|
-0.112402954915,
|
||||||
|
0.111900251973,
|
||||||
|
0.013371724428,
|
||||||
|
0.034078840415,
|
||||||
|
0.042227867898,
|
||||||
|
0.030851903266,
|
||||||
|
0.127685870108,
|
||||||
|
0.076211910992,
|
||||||
|
0.029672933991,
|
||||||
|
-0.240925299587,
|
||||||
|
0.165732848748,
|
||||||
|
0.203749251923,
|
||||||
|
0.210871626145,
|
||||||
|
0.287987603485,
|
||||||
|
0.207171081643,
|
||||||
|
0.121039088549,
|
||||||
|
-0.044189113015,
|
||||||
|
0.231618529025,
|
||||||
|
-0.023255941877,
|
||||||
|
-0.041856135446,
|
||||||
|
0.070405803829,
|
||||||
|
-0.017319244110,
|
||||||
|
0.106434918183,
|
||||||
|
0.171343160663,
|
||||||
|
-0.015075460490,
|
||||||
|
-0.112775455174,
|
||||||
|
-0.372670996695,
|
||||||
|
0.086704666131,
|
||||||
|
0.076496746557,
|
||||||
|
0.127526592877,
|
||||||
|
-0.012260110098,
|
||||||
|
0.102565117459,
|
||||||
|
0.076270079702,
|
||||||
|
0.003371890099,
|
||||||
|
0.083478220541,
|
||||||
|
0.086270239561,
|
||||||
|
0.240755219878,
|
||||||
|
0.055716737997,
|
||||||
|
0.083974100250,
|
||||||
|
0.176529769692,
|
||||||
|
0.094940290530,
|
||||||
|
0.050874389917,
|
||||||
|
0.142108132900,
|
||||||
|
0.004139679133,
|
||||||
|
0.078178987014,
|
||||||
|
0.224829413216,
|
||||||
|
-0.005670729553,
|
||||||
|
0.039605176446,
|
||||||
|
-0.091278138630,
|
||||||
|
-0.003883078689,
|
||||||
|
0.064533127177,
|
||||||
|
0.025282380290,
|
||||||
|
-0.004705028142,
|
||||||
|
-0.129132996259,
|
||||||
|
0.089989403828,
|
||||||
|
0.003366345478,
|
||||||
|
0.069543574410,
|
||||||
|
0.024091011112,
|
||||||
|
-0.012003135849,
|
||||||
|
0.020826735487,
|
||||||
|
-0.044259804423,
|
||||||
|
0.167984222568,
|
||||||
|
0.043792715810,
|
||||||
|
-0.080810496219,
|
||||||
|
-0.086977347241,
|
||||||
|
-0.107831346727,
|
||||||
|
-0.099520588934,
|
||||||
|
-0.129528708604,
|
||||||
|
0.008095793219,
|
||||||
|
-0.092163397529,
|
||||||
|
-0.041638793132,
|
||||||
|
-0.007103760522,
|
||||||
|
-0.067022046779,
|
||||||
|
-0.086952285942,
|
||||||
|
-0.077147633687,
|
||||||
|
-0.045730738100,
|
||||||
|
-0.073942616695,
|
||||||
|
-0.079935964809,
|
||||||
|
0.033310797636,
|
||||||
|
-0.096470960788,
|
||||||
|
-0.054600767427,
|
||||||
|
-0.036653425876,
|
||||||
|
-0.023164598228,
|
||||||
|
-0.154826667725,
|
||||||
|
-0.069999127373,
|
||||||
|
-0.116473513882,
|
||||||
|
-0.135592647105,
|
||||||
|
0.017475255709,
|
||||||
|
0.024126716370,
|
||||||
|
-0.006620648295,
|
||||||
|
-0.010342626640,
|
||||||
|
-0.048219570992,
|
||||||
|
0.028562691365,
|
||||||
|
0.002585969344,
|
||||||
|
0.036319735390,
|
||||||
|
-0.058642818260,
|
||||||
|
0.029467208856,
|
||||||
|
0.020938526296,
|
||||||
|
-0.078122627603,
|
||||||
|
-0.116327962720,
|
||||||
|
-0.043032082942,
|
||||||
|
-0.067333347384,
|
||||||
|
-0.046107429052,
|
||||||
|
-0.069539536139,
|
||||||
|
-0.060080493114,
|
||||||
|
-0.019356328396,
|
||||||
|
-0.101305799377,
|
||||||
|
-0.042149854661,
|
||||||
|
-0.069700501812,
|
||||||
|
-0.023428614188,
|
||||||
|
-0.053343066707,
|
||||||
|
-0.002695820213,
|
||||||
|
0.013519155186,
|
||||||
|
-0.088431387441,
|
||||||
|
-0.057766410383,
|
||||||
|
-0.122639219906,
|
||||||
|
-0.066978402817,
|
||||||
|
-0.161076714656,
|
||||||
|
0.002614383333,
|
||||||
|
0.031601492207,
|
||||||
|
-0.055178630585,
|
||||||
|
-0.015690512204,
|
||||||
|
0.023832482878,
|
||||||
|
-0.052418790287,
|
||||||
|
-0.002011238366,
|
||||||
|
0.001505485029,
|
||||||
|
0.010242003951,
|
||||||
|
-0.010147518066,
|
||||||
|
-0.033197882930,
|
||||||
|
-0.019369071234,
|
||||||
|
0.017054414572,
|
||||||
|
0.034369944882,
|
||||||
|
-0.055316037392,
|
||||||
|
-0.059452531915,
|
||||||
|
-0.111609536255,
|
||||||
|
-0.105959491664,
|
||||||
|
-0.031894456199,
|
||||||
|
-0.107358448129,
|
||||||
|
0.026093026587,
|
||||||
|
-0.023211922001,
|
||||||
|
-0.037207763482,
|
||||||
|
-0.057240989053,
|
||||||
|
-0.007450363111,
|
||||||
|
-0.032940635320,
|
||||||
|
-0.011011247851,
|
||||||
|
0.031688028283,
|
||||||
|
-0.078487502245,
|
||||||
|
-0.043123723991,
|
||||||
|
-0.001217863847,
|
||||||
|
0.022753832241,
|
||||||
|
-0.156667554878,
|
||||||
|
-0.090410446171,
|
||||||
|
0.054812636778,
|
||||||
|
-0.070289401278,
|
||||||
|
0.019307995665,
|
||||||
|
0.004169186054,
|
||||||
|
-0.013867997717,
|
||||||
|
-0.024734884025,
|
||||||
|
-0.005801782214,
|
||||||
|
0.000126928741,
|
||||||
|
0.002262509579,
|
||||||
|
-0.015851708319,
|
||||||
|
0.004113930494,
|
||||||
|
0.044421311025,
|
||||||
|
0.017748424708,
|
||||||
|
-0.073534043660,
|
||||||
|
-0.021131286276,
|
||||||
|
-0.083469623583,
|
||||||
|
-0.084264022938,
|
||||||
|
-0.057237584686,
|
||||||
|
-0.068991208521,
|
||||||
|
-0.117663576133,
|
||||||
|
-0.063884024830,
|
||||||
|
-0.076097190446,
|
||||||
|
-0.033535011829,
|
||||||
|
-0.081899353210,
|
||||||
|
-0.031993336034,
|
||||||
|
-0.001533735338,
|
||||||
|
-0.120878957445,
|
||||||
|
0.002321414453,
|
||||||
|
0.008411560288,
|
||||||
|
-0.001992214658,
|
||||||
|
-0.177646843698,
|
||||||
|
0.000096160020,
|
||||||
|
0.032527391370,
|
||||||
|
-0.104029732834,
|
||||||
|
0.017672107177,
|
||||||
|
-0.033825447055,
|
||||||
|
0.023152474904,
|
||||||
|
0.021848950289,
|
||||||
|
-0.082615374631,
|
||||||
|
0.004229588893,
|
||||||
|
-0.006252784956,
|
||||||
|
0.017804283859,
|
||||||
|
0.028831822603,
|
||||||
|
0.031516721560,
|
||||||
|
0.016148213510,
|
||||||
|
-0.049360216968,
|
||||||
|
-0.013066076204,
|
||||||
|
-0.064898201280,
|
||||||
|
-0.078278264716,
|
||||||
|
0.016124765085,
|
||||||
|
-0.053233851613,
|
||||||
|
-0.027059020039,
|
||||||
|
-0.020218799933,
|
||||||
|
-0.009050349394,
|
||||||
|
-0.033569587196,
|
||||||
|
-0.042132015083,
|
||||||
|
0.000251197438,
|
||||||
|
-0.053811865213,
|
||||||
|
-0.039640214804,
|
||||||
|
0.023742972405,
|
||||||
|
0.023879197114,
|
||||||
|
-0.118986800208,
|
||||||
|
0.039744853889,
|
||||||
|
-0.045265252571,
|
||||||
|
0.013168535188,
|
||||||
|
-0.043820356299,
|
||||||
|
-0.053525866676,
|
||||||
|
-0.010265946777,
|
||||||
|
-0.011998203812,
|
||||||
|
0.036288912027,
|
||||||
|
0.002226328972,
|
||||||
|
0.038497478633,
|
||||||
|
-0.018763787859,
|
||||||
|
0.018957051244,
|
||||||
|
0.047391681914,
|
||||||
|
0.033036730807,
|
||||||
|
-0.082520390445,
|
||||||
|
-0.074737248993,
|
||||||
|
0.012900421600,
|
||||||
|
0.028011611543,
|
||||||
|
-0.041147517580,
|
||||||
|
-0.094557012083,
|
||||||
|
-0.070467310522,
|
||||||
|
-0.032350832458,
|
||||||
|
-0.076083203264,
|
||||||
|
0.020344550900,
|
||||||
|
-0.020073994561,
|
||||||
|
-0.105017114758,
|
||||||
|
0.005867652209,
|
||||||
|
-0.048793158718,
|
||||||
|
-0.045146293387,
|
||||||
|
-0.147806860705,
|
||||||
|
-0.074039457679,
|
||||||
|
-0.033949909024,
|
||||||
|
-0.040118614411,
|
||||||
|
0.000770958192,
|
||||||
|
0.013855320722,
|
||||||
|
-0.039607573304,
|
||||||
|
0.012498005512,
|
||||||
|
-0.006939340550,
|
||||||
|
-0.007676876403,
|
||||||
|
0.017517467668,
|
||||||
|
0.025592362828,
|
||||||
|
-0.012876866768,
|
||||||
|
0.009012106697,
|
||||||
|
-0.003325525307,
|
||||||
|
-0.112945873134,
|
||||||
|
-0.096422462973,
|
||||||
|
-0.016652526311,
|
||||||
|
-0.027736961169,
|
||||||
|
-0.097349792340,
|
||||||
|
-0.077344398908,
|
||||||
|
-0.029444554003,
|
||||||
|
-0.063144970299,
|
||||||
|
-0.086112352963,
|
||||||
|
-0.037448279910,
|
||||||
|
-0.081315033259,
|
||||||
|
-0.056791429110,
|
||||||
|
-0.010513051658,
|
||||||
|
-0.025575503893,
|
||||||
|
-0.144508702026,
|
||||||
|
-0.010663316073,
|
||||||
|
-0.138925485323,
|
||||||
|
-0.085438889188,
|
||||||
|
0.021722897852,
|
||||||
|
0.035862835029,
|
||||||
|
0.027305567412,
|
||||||
|
0.015802250815,
|
||||||
|
-0.084047102823,
|
||||||
|
-0.036080683633,
|
||||||
|
-0.072366115018,
|
||||||
|
-0.016489751149,
|
||||||
|
0.051195145070,
|
||||||
|
0.055596299374,
|
||||||
|
0.020721114696,
|
||||||
|
-0.074548858098,
|
||||||
|
0.015403465853,
|
||||||
|
-0.028242572587,
|
||||||
|
-0.061773150577,
|
||||||
|
0.008106071927,
|
||||||
|
-0.045318487343,
|
||||||
|
-0.072665986891,
|
||||||
|
-0.039966131325,
|
||||||
|
0.046040594721,
|
||||||
|
-0.048258013725,
|
||||||
|
0.018410098746,
|
||||||
|
-0.011863940852,
|
||||||
|
0.004584252051,
|
||||||
|
-0.174520547599,
|
||||||
|
-0.046844101092,
|
||||||
|
-0.126586175679,
|
||||||
|
-0.034129399731,
|
||||||
|
-0.031862770863,
|
||||||
|
0.054300104094,
|
||||||
|
-0.001207761279,
|
||||||
|
0.032582755464,
|
||||||
|
0.019720165339,
|
||||||
|
0.010909255480,
|
||||||
|
-0.004294094553,
|
||||||
|
0.049161057941,
|
||||||
|
-0.046629565228,
|
||||||
|
0.076675888506,
|
||||||
|
-0.013905877106,
|
||||||
|
-0.068089983229,
|
||||||
|
-0.034061588389,
|
||||||
|
-0.030172648394,
|
||||||
|
-0.045642555317,
|
||||||
|
-0.118287038999,
|
||||||
|
-0.062835505789,
|
||||||
|
-0.023000239293,
|
||||||
|
0.011670953926,
|
||||||
|
-0.114637955498,
|
||||||
|
-0.049646458595,
|
||||||
|
-0.031950203442,
|
||||||
|
-0.100465627522,
|
||||||
|
-0.171144479310,
|
||||||
|
-0.086456974325,
|
||||||
|
0.005187521028,
|
||||||
|
-0.136724768858,
|
||||||
|
-0.006498474101,
|
||||||
|
0.104832433675,
|
||||||
|
-0.013982731977,
|
||||||
|
-0.009865169866,
|
||||||
|
-0.012308138596,
|
||||||
|
-0.009259533193,
|
||||||
|
-0.070090974300,
|
||||||
|
-0.060135565555,
|
||||||
|
-0.008762920234,
|
||||||
|
-0.017947562880,
|
||||||
|
-0.008528248421,
|
||||||
|
0.016949338529,
|
||||||
|
-0.080045847612,
|
||||||
|
-0.048199433852,
|
||||||
|
0.001151565315,
|
||||||
|
-0.074554255431,
|
||||||
|
-0.003890588686,
|
||||||
|
0.180852777286,
|
||||||
|
-0.033539407430,
|
||||||
|
0.030997566757,
|
||||||
|
0.031564605351,
|
||||||
|
-0.036482591854,
|
||||||
|
-0.080778175212,
|
||||||
|
-0.149497735215,
|
||||||
|
0.201726261554,
|
||||||
|
-0.051683467647,
|
||||||
|
-0.010443240902,
|
||||||
|
0.049294071546,
|
||||||
|
-0.033631234141,
|
||||||
|
0.020930366639,
|
||||||
|
0.126257920978,
|
||||||
|
-0.056636247562,
|
||||||
|
-0.008344450472,
|
||||||
|
0.093984023302,
|
||||||
|
0.060661781322,
|
||||||
|
0.001037366826,
|
||||||
|
0.025987019933,
|
||||||
|
-0.104023239344,
|
||||||
|
-0.030765776252,
|
||||||
|
-0.066813748509,
|
||||||
|
-0.061760826686,
|
||||||
|
-0.028151959372,
|
||||||
|
0.050643283828,
|
||||||
|
-0.091476240751,
|
||||||
|
-0.021674289605,
|
||||||
|
-0.012634923913,
|
||||||
|
-0.057388008033,
|
||||||
|
-0.127424095951,
|
||||||
|
-0.029311259297,
|
||||||
|
-0.193633611365,
|
||||||
|
-0.104603998849,
|
||||||
|
0.000392766036,
|
||||||
|
0.024054848967,
|
||||||
|
-0.007730734800,
|
||||||
|
-0.054411222446,
|
||||||
|
-0.013372284452,
|
||||||
|
0.051652414019,
|
||||||
|
-0.104272875526,
|
||||||
|
-0.003170100981,
|
||||||
|
0.016385920170,
|
||||||
|
0.016157115952,
|
||||||
|
0.013401544933,
|
||||||
|
-0.054558721496,
|
||||||
|
-0.031782948351,
|
||||||
|
-0.097178250079,
|
||||||
|
-0.040177337249,
|
||||||
|
-0.006973538093,
|
||||||
|
-0.064894000503,
|
||||||
|
-0.091341313860,
|
||||||
|
-0.061170298368,
|
||||||
|
-0.156608499653,
|
||||||
|
-0.151261151107,
|
||||||
|
-0.064884240687,
|
||||||
|
0.178537508632,
|
||||||
|
-0.108705687120,
|
||||||
|
0.003524304424,
|
||||||
|
-0.026938409322,
|
||||||
|
0.001751256110,
|
||||||
|
0.041003258290,
|
||||||
|
-0.025367484612,
|
||||||
|
-0.005758421555,
|
||||||
|
-0.087636153640,
|
||||||
|
0.003412004612,
|
||||||
|
0.014258788615,
|
||||||
|
-0.026574512015,
|
||||||
|
0.065100412835,
|
||||||
|
0.033114818387,
|
||||||
|
-0.085128793699,
|
||||||
|
0.033834283989,
|
||||||
|
-0.007307222382,
|
||||||
|
-0.060262320907,
|
||||||
|
-0.071021286830,
|
||||||
|
0.001553537663,
|
||||||
|
-0.095208937254,
|
||||||
|
-0.072717138812,
|
||||||
|
-0.008095069994,
|
||||||
|
0.058992186260,
|
||||||
|
0.045300898293,
|
||||||
|
0.028111216733,
|
||||||
|
0.027733461346,
|
||||||
|
0.016883748700,
|
||||||
|
0.068534228905,
|
||||||
|
0.029051008074,
|
||||||
|
0.009568239785,
|
||||||
|
0.000951876245,
|
||||||
|
-0.132517927694,
|
||||||
|
-0.099951120813,
|
||||||
|
0.065130516865,
|
||||||
|
0.028701429533,
|
||||||
|
-0.037605115499,
|
||||||
|
0.054201981662,
|
||||||
|
0.046251261300,
|
||||||
|
-0.054669824609,
|
||||||
|
-0.041092087601,
|
||||||
|
-0.161630656400,
|
||||||
|
-0.103247311366,
|
||||||
|
-0.092132235763,
|
||||||
|
0.104494323063,
|
||||||
|
0.031369139118,
|
||||||
|
-0.018441849253,
|
||||||
|
0.013159013263,
|
||||||
|
0.033017142162,
|
||||||
|
-0.029751089274,
|
||||||
|
-0.075874522084,
|
||||||
|
-0.018845381437,
|
||||||
|
0.013430361839,
|
||||||
|
-0.067897165390,
|
||||||
|
-0.073925924278,
|
||||||
|
-0.004501306631,
|
||||||
|
0.015306682849,
|
||||||
|
-0.010098321739,
|
||||||
|
-0.020321668764,
|
||||||
|
0.008407148473,
|
||||||
|
-0.081682918831,
|
||||||
|
-0.080692593418,
|
||||||
|
-0.146994395110,
|
||||||
|
-0.082263977261,
|
||||||
|
-0.168858893072,
|
||||||
|
-0.064305106660,
|
||||||
|
0.005570719161,
|
||||||
|
-0.120565725934,
|
||||||
|
0.020801229776,
|
||||||
|
0.000952984479,
|
||||||
|
-0.012695372644,
|
||||||
|
-0.040614948302,
|
||||||
|
-0.019076926527,
|
||||||
|
-0.000847676020,
|
||||||
|
-0.023816721127,
|
||||||
|
-0.030737724221,
|
||||||
|
-0.004551647167,
|
||||||
|
0.044721425895,
|
||||||
|
0.019894236634,
|
||||||
|
-0.031361530866,
|
||||||
|
-0.005232302905,
|
||||||
|
-0.041164745538,
|
||||||
|
-0.077838095267,
|
||||||
|
0.026930086863,
|
||||||
|
-0.086655099049,
|
||||||
|
0.047476787322,
|
||||||
|
-0.012475036019,
|
||||||
|
-0.031821077418,
|
||||||
|
0.026801424962,
|
||||||
|
-0.055203572301,
|
||||||
|
0.041224767276,
|
||||||
|
0.032241885267,
|
||||||
|
-0.006881223703,
|
||||||
|
0.031465317805,
|
||||||
|
0.025327885583,
|
||||||
|
-0.107080718803,
|
||||||
|
0.032738798059,
|
||||||
|
0.041568036022,
|
||||||
|
-0.018316787886,
|
||||||
|
0.034496648411,
|
||||||
|
0.093577775109,
|
||||||
|
0.012315336352,
|
||||||
|
0.012340133019,
|
||||||
|
-0.016037108414,
|
||||||
|
-0.010201866245,
|
||||||
|
0.140630216760,
|
||||||
|
0.038073422711,
|
||||||
|
-0.045214015193,
|
||||||
|
-0.012977453281,
|
||||||
|
0.027983694630,
|
||||||
|
0.009281741462,
|
||||||
|
0.070488137218,
|
||||||
|
-0.054207442557,
|
||||||
|
0.029109486775,
|
||||||
|
0.054366064949,
|
||||||
|
-0.065254858837,
|
||||||
|
0.003205447585,
|
||||||
|
-0.014330047914,
|
||||||
|
-0.053989851192,
|
||||||
|
-0.100072479458,
|
||||||
|
-0.057296669891,
|
||||||
|
-0.169017710982,
|
||||||
|
-0.075142982274,
|
||||||
|
-0.010992948401,
|
||||||
|
-0.108967608514,
|
||||||
|
0.001595832047,
|
||||||
|
0.005204456245,
|
||||||
|
-0.006685476322,
|
||||||
|
-0.014756992190,
|
||||||
|
-0.009686263343,
|
||||||
|
-0.004352954115,
|
||||||
|
-0.015522457066,
|
||||||
|
0.000179678964,
|
||||||
|
-0.003989813028,
|
||||||
|
0.049785609216,
|
||||||
|
-0.036249107585,
|
||||||
|
-0.003190580762,
|
||||||
|
-0.067559995328,
|
||||||
|
-0.113835906985,
|
||||||
|
-0.001649982396,
|
||||||
|
0.102498411295,
|
||||||
|
-0.109275479710,
|
||||||
|
-0.036655929029,
|
||||||
|
0.108810809138,
|
||||||
|
-0.016820933613,
|
||||||
|
-0.001625877159,
|
||||||
|
0.153036271967,
|
||||||
|
0.000271941090,
|
||||||
|
0.035327171961,
|
||||||
|
0.035980684636,
|
||||||
|
0.011238991165,
|
||||||
|
-0.019171168387,
|
||||||
|
-0.021456961038,
|
||||||
|
-0.087812945005,
|
||||||
|
-0.100018592361,
|
||||||
|
-0.109065849603,
|
||||||
|
0.062029247441,
|
||||||
|
-0.219136591898,
|
||||||
|
-0.010692652949,
|
||||||
|
0.015056480429,
|
||||||
|
-0.021507999684,
|
||||||
|
0.024755880313,
|
||||||
|
-0.009440778801,
|
||||||
|
0.012423044125,
|
||||||
|
-0.095945531533,
|
||||||
|
0.009020644349,
|
||||||
|
-0.035355496473,
|
||||||
|
0.031827480685,
|
||||||
|
-0.070860703486,
|
||||||
|
-0.206637247393,
|
||||||
|
-0.155403501830,
|
||||||
|
-0.179485839688,
|
||||||
|
-0.187548612314,
|
||||||
|
0.003886995886,
|
||||||
|
-0.013703150806,
|
||||||
|
0.000803974794,
|
||||||
|
0.002365524203,
|
||||||
|
0.080127679063,
|
||||||
|
0.030755526719,
|
||||||
|
0.048964118305,
|
||||||
|
0.026749257198,
|
||||||
|
0.016396989744,
|
||||||
|
0.088475720851,
|
||||||
|
-0.053913788203,
|
||||||
|
-0.199728700757,
|
||||||
|
-0.051725224519,
|
||||||
|
-0.128257790360,
|
||||||
|
-0.028830383614,
|
||||||
|
-0.159500962075,
|
||||||
|
-0.013640779585,
|
||||||
|
-0.016977746021,
|
||||||
|
0.007040711634,
|
||||||
|
-0.035107408327,
|
||||||
|
-0.029244230216,
|
||||||
|
0.005583554526,
|
||||||
|
-0.028170178519,
|
||||||
|
-0.006038904525,
|
||||||
|
-0.018647591281,
|
||||||
|
-0.052244808004,
|
||||||
|
-0.015988862066,
|
||||||
|
-0.016767711750,
|
||||||
|
0.047179147680,
|
||||||
|
-0.031613465314,
|
||||||
|
0.082236758453,
|
||||||
|
-0.010335508060,
|
||||||
|
0.008537534076,
|
||||||
|
-0.031751024873,
|
||||||
|
-0.002069329496,
|
||||||
|
0.077650266221,
|
||||||
|
0.012608880222,
|
||||||
|
0.070251114609,
|
||||||
|
0.075002102822,
|
||||||
|
-0.002995261915,
|
||||||
|
-0.078942741615,
|
||||||
|
0.057856878787,
|
||||||
|
0.153430484567,
|
||||||
|
0.051558042113,
|
||||||
|
-0.069189571793,
|
||||||
|
-0.006914046025,
|
||||||
|
-0.215680623689,
|
||||||
|
0.025256394453,
|
||||||
|
0.043859782606,
|
||||||
|
0.001750740500,
|
||||||
|
0.029230558113,
|
||||||
|
-0.046125890268,
|
||||||
|
-0.025134970671,
|
||||||
|
-0.020862016864,
|
||||||
|
0.010929066832,
|
||||||
|
0.007863683449,
|
||||||
|
-0.083981330388,
|
||||||
|
0.041963402277,
|
||||||
|
-0.022412307272,
|
||||||
|
0.090580474781,
|
||||||
|
0.020051228823,
|
||||||
|
0.062968213032,
|
||||||
|
0.005707266912,
|
||||||
|
0.047467475139,
|
||||||
|
0.097563068857,
|
||||||
|
0.083167019386,
|
||||||
|
0.026752952531,
|
||||||
|
0.079635850095,
|
||||||
|
-0.068390318576,
|
||||||
|
-0.029565371105,
|
||||||
|
0.014255052975,
|
||||||
|
0.069262154841,
|
||||||
|
0.087730379014,
|
||||||
|
0.123778986279,
|
||||||
|
0.010099119378,
|
||||||
|
-0.007654739242,
|
||||||
|
-0.005542174957,
|
||||||
|
0.053077753355,
|
||||||
|
0.075026262765,
|
||||||
|
-0.003774940341,
|
||||||
|
-0.040023462142,
|
||||||
|
0.021045418641,
|
||||||
|
-0.026786136833,
|
||||||
|
-0.013287394176,
|
||||||
|
0.040506083517,
|
||||||
|
0.013198475516,
|
||||||
|
-0.077731681385,
|
||||||
|
-0.008523656573,
|
||||||
|
-0.031691572766,
|
||||||
|
-0.038457031052,
|
||||||
|
0.028666688385,
|
||||||
|
0.052397362325,
|
||||||
|
0.022568832943,
|
||||||
|
-0.052426050966,
|
||||||
|
0.079952066788,
|
||||||
|
0.051294023843,
|
||||||
|
-0.081081839206,
|
||||||
|
0.179119007880,
|
||||||
|
-0.018137760286,
|
||||||
|
-0.007661618767,
|
||||||
|
0.002945755070,
|
||||||
|
0.048597405630,
|
||||||
|
0.031179691213,
|
||||||
|
0.030436816708,
|
||||||
|
-0.042557440634,
|
||||||
|
-0.003084028063,
|
||||||
|
-0.111980160770,
|
||||||
|
-0.002839888114,
|
||||||
|
0.062186999524,
|
||||||
|
-0.046313493804,
|
||||||
|
-0.036207354442,
|
||||||
|
0.058055631445,
|
||||||
|
-0.051073587305,
|
||||||
|
-0.021191938491,
|
||||||
|
-0.238232953617,
|
||||||
|
];
|
||||||
|
|
||||||
|
pub const INTERCEPT: f64 = 743.345708241252;
|
2075
src/evaluate/xuping/model20.rs
Normal file
2075
src/evaluate/xuping/model20.rs
Normal file
File diff suppressed because it is too large
Load Diff
1
src/generate.rs
Normal file
1
src/generate.rs
Normal file
@ -0,0 +1 @@
|
|||||||
|
|
127
src/main.rs
127
src/main.rs
@ -1,42 +1,17 @@
|
|||||||
#![feature(portable_simd)]
|
#![feature(portable_simd)]
|
||||||
|
#![feature(slice_swap_unchecked)]
|
||||||
|
|
||||||
mod name;
|
mod cacluate;
|
||||||
mod evaluate;
|
mod evaluate;
|
||||||
|
mod generate;
|
||||||
|
mod name;
|
||||||
|
|
||||||
use std::{io::Write, path::PathBuf};
|
use std::path::PathBuf;
|
||||||
|
|
||||||
use base16384::Base16384Utf8;
|
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use colored::Colorize;
|
|
||||||
use tracing::{info, warn};
|
use tracing::{info, warn};
|
||||||
|
|
||||||
/// 根据 u64 生成对应的 name
|
use crate::cacluate::CacluateConfig;
|
||||||
/// 转换成 base 16384
|
|
||||||
/// 禁用:
|
|
||||||
/// U00 ~ U1F ,换行,制表符 等
|
|
||||||
/// ? , 问号
|
|
||||||
/// U2000 - U202F , unicode特殊空格 等
|
|
||||||
/// 不可以空格开头
|
|
||||||
#[inline(always)]
|
|
||||||
pub fn gen_name(id: u64) -> String {
|
|
||||||
let id_bytes = id.to_be_bytes();
|
|
||||||
Base16384Utf8::encode(id_bytes.as_slice())
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn show_name(namer: &name::Namer) -> String {
|
|
||||||
format!(
|
|
||||||
"HP|{} 攻|{} 防|{} 速|{} 敏|{} 魔|{} 抗|{} 智|{} 八围:{}",
|
|
||||||
namer.name_prop[0],
|
|
||||||
namer.name_prop[1],
|
|
||||||
namer.name_prop[2],
|
|
||||||
namer.name_prop[3],
|
|
||||||
namer.name_prop[4],
|
|
||||||
namer.name_prop[5],
|
|
||||||
namer.name_prop[6],
|
|
||||||
namer.name_prop[7],
|
|
||||||
namer.get_property()
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[allow(non_upper_case_globals)]
|
#[allow(non_upper_case_globals)]
|
||||||
const allow_d: u32 = 10;
|
const allow_d: u32 = 10;
|
||||||
@ -63,86 +38,22 @@ pub struct Command {
|
|||||||
pub report_interval: u64,
|
pub report_interval: u64,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 大概的预计速度
|
impl Command {
|
||||||
/// 来自 5600X 的运行效率
|
pub fn as_cacl_config(&self) -> CacluateConfig {
|
||||||
pub const GUESS_SPEED: u64 = 623772;
|
CacluateConfig {
|
||||||
|
start: self.start,
|
||||||
#[inline(always)]
|
end: self.end,
|
||||||
fn cacl(config: Command, id: u64, outfile: &PathBuf) {
|
thread_count: self.thread_count,
|
||||||
// 初始猜测的时间间隔
|
prop_expect: self.prop_expect,
|
||||||
let mut report_interval = config.report_interval * GUESS_SPEED;
|
prop_allow: allow_d,
|
||||||
let mut run_speed = GUESS_SPEED as f64;
|
team: self.team.clone(),
|
||||||
let mut start_time = std::time::Instant::now();
|
report_interval: self.report_interval,
|
||||||
let mut k: u64 = 0;
|
|
||||||
let mut get_count: u32 = 0;
|
|
||||||
// 提前准备好 team_namer
|
|
||||||
let team_namer = name::TeamNamer::new_unchecked(&config.team);
|
|
||||||
|
|
||||||
for i in (config.start + id..config.end).step_by(config.thread_count as usize) {
|
|
||||||
let name = gen_name(i as u64);
|
|
||||||
let namer = name::Namer::new_from_team_namer_unchecked(&team_namer, name.as_str());
|
|
||||||
let prop = namer.get_property();
|
|
||||||
|
|
||||||
if (prop + allow_d as f32) > config.prop_expect as f32 {
|
|
||||||
get_count += 1;
|
|
||||||
let name = gen_name(i as u64);
|
|
||||||
let full_name = format!("{}@{}", name, config.team);
|
|
||||||
info!("Id:{:>15}|{}|{}", i, full_name, show_name(&namer));
|
|
||||||
// 写入 (写到最后一行)
|
|
||||||
match std::fs::OpenOptions::new()
|
|
||||||
.append(true)
|
|
||||||
.create(true)
|
|
||||||
.open(outfile)
|
|
||||||
.and_then(|mut file| file.write(format!("{}\n", full_name).as_bytes()))
|
|
||||||
{
|
|
||||||
Ok(_) => {}
|
|
||||||
Err(e) => {
|
|
||||||
warn!("写入文件<{:?}>失败: {}", outfile, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
k += 1;
|
|
||||||
if k >= report_interval as u64 {
|
|
||||||
let now = std::time::Instant::now();
|
|
||||||
let d_t: std::time::Duration = now.duration_since(start_time);
|
|
||||||
let new_run_speed = k as f64 / d_t.as_secs_f64();
|
|
||||||
// 预估剩余时间
|
|
||||||
let wait_time = (config.end - i) / config.thread_count as u64 / new_run_speed as u64;
|
|
||||||
let wait_time = chrono::Duration::seconds(wait_time as i64);
|
|
||||||
// 转换成 时:分:秒
|
|
||||||
// 根据实际运行速率来调整 report_interval
|
|
||||||
report_interval = config.report_interval * new_run_speed as u64;
|
|
||||||
info!(
|
|
||||||
"|{:>2}|Id:{:>15}|{:6.2}/s {:>3.3}E/d {:>5.2}{}|{:<3}|预计:{}:{}:{}|",
|
|
||||||
id,
|
|
||||||
i,
|
|
||||||
new_run_speed,
|
|
||||||
new_run_speed * 8.64 / 1_0000.0,
|
|
||||||
d_t.as_secs_f64(),
|
|
||||||
// 根据对比上一段运行速度 输出 emoji
|
|
||||||
// ⬆️ ➡️ ⬇️
|
|
||||||
if new_run_speed > run_speed {
|
|
||||||
"⬆️".green()
|
|
||||||
} else if new_run_speed < run_speed {
|
|
||||||
// 橙色
|
|
||||||
"⬇️".red()
|
|
||||||
} else {
|
|
||||||
"➡️".blue()
|
|
||||||
},
|
|
||||||
get_count,
|
|
||||||
wait_time.num_hours(),
|
|
||||||
wait_time.num_minutes() % 60,
|
|
||||||
wait_time.num_seconds() % 60
|
|
||||||
);
|
|
||||||
run_speed = new_run_speed;
|
|
||||||
start_time = std::time::Instant::now();
|
|
||||||
k = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
tracing_subscriber::fmt::init();
|
tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).init();
|
||||||
let mut cli_arg = Command::parse();
|
let mut cli_arg = Command::parse();
|
||||||
|
|
||||||
// 将数据量处理成可被 thread_count 整除
|
// 将数据量处理成可被 thread_count 整除
|
||||||
@ -170,12 +81,12 @@ fn main() {
|
|||||||
|
|
||||||
for i in 0..cli_arg.thread_count {
|
for i in 0..cli_arg.thread_count {
|
||||||
n += 1;
|
n += 1;
|
||||||
let cli = cli_arg.clone();
|
let config = cli_arg.as_cacl_config();
|
||||||
let out_path = out_path.clone();
|
let out_path = out_path.clone();
|
||||||
let thread_name = format!("thread_{}", i);
|
let thread_name = format!("thread_{}", i);
|
||||||
threads.push(std::thread::spawn(move || {
|
threads.push(std::thread::spawn(move || {
|
||||||
info!("线程 {} 开始计算", thread_name);
|
info!("线程 {} 开始计算", thread_name);
|
||||||
cacl(cli, n, &out_path);
|
cacluate::cacl(config, n, &out_path);
|
||||||
info!("线程 {} 结束计算", thread_name);
|
info!("线程 {} 结束计算", thread_name);
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
80
src/name.rs
80
src/name.rs
@ -52,9 +52,7 @@ impl TeamNamer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
pub fn clone_vals(&self) -> [u8; 256] {
|
pub fn clone_vals(&self) -> [u8; 256] { self.val.clone() }
|
||||||
self.val.clone()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
@ -139,18 +137,14 @@ impl Namer {
|
|||||||
let name_len = name_bytes.len();
|
let name_len = name_bytes.len();
|
||||||
let b_name_len = name_len + 1;
|
let b_name_len = name_len + 1;
|
||||||
for _ in 0..2 {
|
for _ in 0..2 {
|
||||||
// 手动处理 0 的问题
|
|
||||||
// 手动swap
|
|
||||||
let mut s = 0_u8;
|
let mut s = 0_u8;
|
||||||
val.swap(s as usize, 0);
|
unsafe { val.swap_unchecked(s as usize, 0) };
|
||||||
|
let mut k = 0;
|
||||||
for i in 0..256 {
|
for i in 0..256 {
|
||||||
// s = s.wrapping_add(name_bytes[i % name_len]);
|
s = s.wrapping_add(if k == 0 { 0 } else { name_bytes[k - 1] });
|
||||||
s = s.wrapping_add(match i % b_name_len {
|
|
||||||
0 => 0,
|
|
||||||
k => name_bytes[k - 1],
|
|
||||||
});
|
|
||||||
s = s.wrapping_add(val[i]);
|
s = s.wrapping_add(val[i]);
|
||||||
val.swap(i, s as usize);
|
unsafe { val.swap_unchecked(i, s as usize) }
|
||||||
|
k = if k == b_name_len - 1 { 0 } else { k + 1 };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// simd 优化
|
// simd 优化
|
||||||
@ -158,12 +152,9 @@ impl Namer {
|
|||||||
{
|
{
|
||||||
let mut simd_val = val.clone();
|
let mut simd_val = val.clone();
|
||||||
let mut simd_val_b = [0_u8; 256];
|
let mut simd_val_b = [0_u8; 256];
|
||||||
let mut simd_target = [false; 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);
|
||||||
let simd_63 = u8x64::splat(63);
|
let simd_63 = u8x64::splat(63);
|
||||||
let simd_88 = u8x64::splat(88);
|
|
||||||
let simd_217 = u8x64::splat(217);
|
|
||||||
|
|
||||||
for i in (0..256).step_by(64) {
|
for i in (0..256).step_by(64) {
|
||||||
// 一次性加载64个数字
|
// 一次性加载64个数字
|
||||||
@ -171,20 +162,20 @@ impl Namer {
|
|||||||
x = x * simd_181 + simd_160;
|
x = x * simd_181 + simd_160;
|
||||||
// 写入到 simd_val
|
// 写入到 simd_val
|
||||||
x.copy_to_slice(&mut simd_val[i..]);
|
x.copy_to_slice(&mut simd_val[i..]);
|
||||||
// 提前判断 > 88 && < 217
|
|
||||||
let mask = x.simd_ge(simd_88) & x.simd_lt(simd_217);
|
|
||||||
// 写入到 simd_target
|
|
||||||
let mask: [bool; 64] = mask.to_array();
|
|
||||||
simd_target[i..i + 64].copy_from_slice(&mask);
|
|
||||||
|
|
||||||
x = x & simd_63;
|
let y = x & simd_63;
|
||||||
x.copy_to_slice(&mut simd_val_b[i..]);
|
y.copy_to_slice(&mut simd_val_b[i..]);
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut mod_count = 0;
|
let mut mod_count = 0;
|
||||||
|
|
||||||
for i in 0..96 {
|
for i in 0..96 {
|
||||||
if simd_target[i] {
|
if simd_val[i] > 88 && simd_val[i] < 217 {
|
||||||
name_base[mod_count as usize] = simd_val_b[i];
|
// name_base[mod_count as usize] = simd_val_b[i];
|
||||||
|
unsafe {
|
||||||
|
*name_base.get_unchecked_mut(mod_count as usize) =
|
||||||
|
*simd_val_b.get_unchecked(i);
|
||||||
|
}
|
||||||
mod_count += 1;
|
mod_count += 1;
|
||||||
}
|
}
|
||||||
if mod_count > 30 {
|
if mod_count > 30 {
|
||||||
@ -193,8 +184,12 @@ impl Namer {
|
|||||||
}
|
}
|
||||||
if mod_count < 31 {
|
if mod_count < 31 {
|
||||||
for i in 96..256 {
|
for i in 96..256 {
|
||||||
if simd_target[i] {
|
if simd_val[i] > 88 && simd_val[i] < 217 {
|
||||||
name_base[mod_count as usize] = simd_val_b[i];
|
// name_base[mod_count as usize] = simd_val_b[i];
|
||||||
|
unsafe {
|
||||||
|
*name_base.get_unchecked_mut(mod_count as usize) =
|
||||||
|
*simd_val_b.get_unchecked(i);
|
||||||
|
}
|
||||||
mod_count += 1;
|
mod_count += 1;
|
||||||
}
|
}
|
||||||
if mod_count > 30 {
|
if mod_count > 30 {
|
||||||
@ -324,16 +319,12 @@ impl Namer {
|
|||||||
// *= 2
|
// *= 2
|
||||||
}
|
}
|
||||||
if (self.skl_freq[14] != 0) && (last != 14) {
|
if (self.skl_freq[14] != 0) && (last != 14) {
|
||||||
self.skl_freq[14] += min(
|
self.skl_freq[14] +=
|
||||||
min(self.name_base[60], self.name_base[61]),
|
min(min(self.name_base[60], self.name_base[61]), self.skl_freq[14]);
|
||||||
self.skl_freq[14],
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
if (self.skl_freq[15] != 0) && (last != 15) {
|
if (self.skl_freq[15] != 0) && (last != 15) {
|
||||||
self.skl_freq[15] += min(
|
self.skl_freq[15] +=
|
||||||
min(self.name_base[62], self.name_base[63]),
|
min(min(self.name_base[62], self.name_base[63]), self.skl_freq[15]);
|
||||||
self.skl_freq[15],
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -399,10 +390,6 @@ mod test {
|
|||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
];
|
];
|
||||||
assert_eq!(namer.name_base.to_vec(), base_name_vec);
|
|
||||||
namer.update_skill();
|
|
||||||
// update skill 之后才会是完整的 name
|
|
||||||
|
|
||||||
let full_base_name_vec: Vec<u8> = vec![
|
let full_base_name_vec: Vec<u8> = vec![
|
||||||
53, 0, 40, 4, 58, 61, 37, 46, 56, 51, 21, 20, 27, 17, 15, 26, 13, 30, 52, 63, 36, 30,
|
53, 0, 40, 4, 58, 61, 37, 46, 56, 51, 21, 20, 27, 17, 15, 26, 13, 30, 52, 63, 36, 30,
|
||||||
57, 34, 22, 37, 35, 6, 12, 25, 50, 49, 59, 23, 49, 27, 51, 58, 39, 28, 60, 20, 31, 36,
|
57, 34, 22, 37, 35, 6, 12, 25, 50, 49, 59, 23, 49, 27, 51, 58, 39, 28, 60, 20, 31, 36,
|
||||||
@ -411,6 +398,10 @@ mod test {
|
|||||||
41, 55, 5, 34, 3, 7, 33, 33, 45, 16, 16, 32, 43, 18, 44, 22, 14, 17, 10, 11, 53, 18,
|
41, 55, 5, 34, 3, 7, 33, 33, 45, 16, 16, 32, 43, 18, 44, 22, 14, 17, 10, 11, 53, 18,
|
||||||
44, 19, 52, 2, 32, 12, 8, 2, 54, 26, 48, 8, 3, 63, 54, 19, 25,
|
44, 19, 52, 2, 32, 12, 8, 2, 54, 26, 48, 8, 3, 63, 54, 19, 25,
|
||||||
];
|
];
|
||||||
|
assert_eq!(namer.name_base.to_vec(), base_name_vec);
|
||||||
|
namer.update_skill();
|
||||||
|
// update skill 之后才会是完整的 name
|
||||||
|
|
||||||
assert_eq!(namer.name_base.to_vec(), full_base_name_vec);
|
assert_eq!(namer.name_base.to_vec(), full_base_name_vec);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -427,6 +418,19 @@ mod test {
|
|||||||
assert_eq!(namer.skl_freq.to_vec(), skill_prop_vec);
|
assert_eq!(namer.skl_freq.to_vec(), skill_prop_vec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn skill_id_test() {
|
||||||
|
let team = TeamNamer::new_unchecked("x");
|
||||||
|
let mut namer = Namer::new_from_team_namer_unchecked(&team, "x");
|
||||||
|
|
||||||
|
namer.update_skill();
|
||||||
|
let skill_id_vec: Vec<u8> = vec![
|
||||||
|
9, 13, 12, 38, 4, 27, 26, 15, 16, 32, 24, 5, 7, 21, 18, 10, 37, 2, 6, 20, 39, 1, 14, 3,
|
||||||
|
11, 29, 22, 33, 19, 0, 30, 31, 17, 28, 34, 35, 23, 8, 25, 36,
|
||||||
|
];
|
||||||
|
assert_eq!(namer.skl_id.to_vec(), skill_id_vec);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn prop_test() {
|
fn prop_test() {
|
||||||
let team = TeamNamer::new_unchecked("x");
|
let team = TeamNamer::new_unchecked("x");
|
||||||
|
Loading…
Reference in New Issue
Block a user