Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

score.js 1.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. const cosineSimilarity = require('compute-cosine-similarity')
  2. const config = require('./config')
  3. const preComputedScores = {
  4. 100: {
  5. 100: 0,
  6. 140: 0,
  7. 180: 0,
  8. 220: 0,
  9. 260: 0,
  10. 400: 0,
  11. },
  12. 140: {
  13. 100: 0,
  14. 140: 0,
  15. 180: 0,
  16. 220: 0,
  17. 260: 0,
  18. 400: 0,
  19. },
  20. 180: {
  21. 100: 0,
  22. 140: 0,
  23. 180: 0,
  24. 220: 0,
  25. 260: 0,
  26. 400: 0,
  27. },
  28. 220: {
  29. 100: 0,
  30. 140: 0,
  31. 180: 0,
  32. 220: 0,
  33. 260: 0,
  34. 400: 0,
  35. },
  36. 260: {
  37. 100: 0,
  38. 140: 0,
  39. 180: 0,
  40. 220: 0,
  41. 260: 0,
  42. 400: 0,
  43. },
  44. 400: {
  45. 100: 0,
  46. 140: 0,
  47. 180: 0,
  48. 220: 0,
  49. 260: 0,
  50. 400: 0,
  51. },
  52. }
  53. const score2d = (a, b) => {
  54. const aScorePlusBase = [100]
  55. const bScorePlusBase = [100]
  56. aScorePlusBase.push(a)
  57. bScorePlusBase.push(b)
  58. return Math.round(
  59. Math.pow(cosineSimilarity(aScorePlusBase, bScorePlusBase), 10) *
  60. config.magic,
  61. )
  62. }
  63. config.scoreVals.forEach(val => {
  64. config.scoreVals.forEach(v => {
  65. preComputedScores[val][v] = score2d(val, v)
  66. })
  67. })
  68. module.exports = {
  69. precomputed: preComputedScores,
  70. }