使われた言葉に数値をつけてみる
https://oshiete.goo.ne.jp/qa/10921080.html
使われた言葉に点数を加算していくのだが、最大値を超えないようにするには?
そんで、考えた。
あっ!光の速度はこえられない!
相対論的な速度の加算方式を利用しよっと。
<!DOCTYPE html> <meta charset="UTF-8"> <html lang="ja"> <title>?</title> <style> </style> <body> <h1>Test</h1> <input type="search" value="リンゴ" onblur="dic(this.value)"><br> <textarea cols="80" rows="10"></textarea> <body> <script> class R { constructor (key, level) { this.key = [ ].concat (key); this.level = level; } add (key, level) { this.key.push (key); let l0 = this.level, l1 = level; this.level = (l0 + l1) / (1 + l0 * l1); return this; } sort () { this.key.sort ((a, b) => HASH[a].level < HASH[b].level); } } let words = [ ['苺', '赤い', 'おいしい', 'すっぱい'], ['リンゴ', '青森', '赤い', 'おいしい', 'すっぱい', 'シャイニーアップルジュース'] ]; let HASH = { }; for (let ws of words) { let key = ws.shift (); let gain = 1 / ws.length; let c = 1; HASH[key] = new R (ws, c); for (let w of ws) { c *= gain; if (w in HASH) { HASH[w].add (key, c); } else { HASH[w] = new R (key, c); } } } function dic (key) { let mess = '知らない'; if (key in HASH) { let obj = HASH[key]; obj.sort (); mess = obj.key.map (s => s + '(' +HASH[s].level+ ')').join ('\n'); } document.querySelector ('textarea').value = mess; } </script>