@roflsec/dice-coefficient
Version:
Sørensen–Dice coefficient for strings with CLI
4 lines (3 loc) • 792 B
JavaScript
module.exports.diceCoefficient=(a,b)=>{a=a.toLowerCase();b=b.toLowerCase();const f=s=>s.split('').slice(0,-1).map((c,i)=>c+s[i+1]).reduce((o,g)=>{o[g]=(o[g]||0)+1;return o},{});
const A=f(a),B=f(b);return 2*Object.keys(A).reduce((i,k)=>i+Math.min(A[k]||0,B[k]||0),0)/((a.length>1?a.length-1:1)+(b.length>1?b.length-1:1))};if(require.main===module){const a=process.argv[2],b=process.argv[3],raw=process.argv.includes('--raw')||process.argv.includes('-r'),percent=process.argv.includes('--percent')||process.argv.includes('-p');if(!a||!b){console.log('Usage: node dice.js <a> <b> [--raw|-r] [--percent|-p]');process.exit(1);}console.log(percent?(v=module.exports.diceCoefficient(a,b)*100,raw?v:v.toFixed(1))+'%':(v=module.exports.diceCoefficient(a,b),raw?v:v.toFixed(1)));}