这是我用来解析国际象棋符号的格式,继续布莱克的动作,并定义变化。<1. Nf3 Nf6 2. e3 e6>
<1... Nf6 2. e3>
<main2 main 3. Nf3 Nf6 4. e3>
我用一堆测试数据测试了我的解析器。现在,我想用看起来与格式相似的随机模糊数据来测试它。
如何生成与有效格式60%相似的模糊测试数据。像这样:
<1.
<1. B3a
1<B N C>
我试过这个,但它会产生完全的胡言乱语,有点无用。
function genCode(len) {
let chars = "<>abcdefgh.NBQRKO-12345678 ".split('');
function nextChar() {
return chars[Math.floor(Math.random()*chars.length)];
};
let res = "";
for (let i = 0; i < len; i++) {
res += nextChar();
}
return res;
}
所以我尝试了这个,它有点工作:
function repeat(code, n) {
let res = "";
while (--n) {
res += code;
}
return res;
}
function corrupt(code) {
let chars = "<>abcdefgh.NBQRKO-12345678 ".split('');
function nextChar() {
return chars[Math.floor(Math.random()*chars.length)];
};
let res = "";
for (let i = 0; i < code.length; i++) {
res += Math.random() < 0.8 ? code[i] : nextChar();
}
return res;
}
console.log(corrupt(repeat(`<1. Nf3 Nf6 2. Ba5 Bg4 3. e4> <4... a6> <5... Qa7> <7... a8>`, 100
)));