美文网首页
[7kyu]Battle of the characters (

[7kyu]Battle of the characters (

作者: 君肄塵 | 来源:发表于2017-07-04 14:38 被阅读13次

    该算法题来自于 codewars【语言: javascript】,翻译如有误差,敬请谅解~

    • 任务
      • 创建函数接收2个变量,比较并返回一个更大的变量。
    • 规则:
      1.每个字母都有自己的权重:A = 1,B = 2,... Y = 25,Z = 26以此类推。
      2.只有大写字母能进行比较。
      3.总数(A + B + C + ...)大的一组被返回。
      4.如果两个组的值一样大,则返回 “Tie!”。

    • 解答
    • 其一
    const sum = str => [...str].map(el=>el.charCodeAt()).reduce((r,v)=>r+v,0);
    const battle = (x, y) => sum(x) == sum(y) ? 'Tie!' :( sum(x) > sum(y) ? x : y);
    
    • 其二
    const total = word => [...word].reduce((a,b)=>a+(b.charCodeAt()),0)
    const battle = (x, y) => total(x) > total(y) ? x : total(y) > total(x) ? y : 'Tie!'
    
    • 其三
    function battle(x, y) {
          var sumx =0;
          var i = x.length;
          while (i--) {
            sumx += x.charCodeAt(i);
          }  
          var sumy =0;
          i = y.length;
          while (i--) {
            sumy += y.charCodeAt(i);
          }  
          if (sumx == sumy) return 'Tie!';  
          return sumx > sumy ? x: y;
    }
    
    • 其四
    function battle(x, y) { 
          let r1 = x.split('').reduce( (a,b) => a+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(b),0);
          let r2 = y.split('').reduce( (a,b) => a+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(b),0);
          return r1 > r2 ? x : r1 < r2 ? y : "Tie!";
    }
    
    • 其五
    function battle(x, y) {
          var s1 = 0;
          var s2 = 0;
          x.split("").forEach(function(value){
            s1+=value.charCodeAt()-96;
          });
          y.split("").forEach(function(value){
            s2+=value.charCodeAt()-96;
          });
          return s1>s2? x:s1<s2?y:'Tie!'
    }
    

    相关文章

      网友评论

          本文标题:[7kyu]Battle of the characters (

          本文链接:https://www.haomeiwen.com/subject/tzithxtx.html