人品计算器算法

2009年 23月 10日 23:31
人品计算器 一个十分老套的娱乐FLASH 权权在群里又发了 姓名:朱钟权 人品得分:99 评价:你是世人的榜样! 我哥真背啊 1分。 我见过的最低分 姓名:吴少群 人品得分:1 评价:算了,跟你没什么人品好谈的... 我也好不到哪去啊 姓名:钱礼骏 人品得分:68 评价:你的人品勉勉强强..要自己好自为之.. 哈这都可以 姓名:午夜yingou 人品得分:99 评价:你是世人的榜样! 为了扭转趋势 来看看到底是怎么计算的 参考下FLASH 的脚本
function nameResult(str)
{
    var _loc1 = checkPreList(str);
    if (_loc1 == null)
    {
        _loc1 = getResult(str);
    } // end if
    var _loc2 = "姓名:" + str + "\n";
    _loc2 = _loc2 + ("人品得分:" + foramtResult(_loc1) + "\n");
    _loc2 = _loc2 + ("评价:" + getValue(_loc1));
    return (_loc2);
} // End of the function
function foramtResult(n)
{
    return (n >= 0 && n <= 100 ? (n) : ("负溢出")); } // End of the function function getValue(n) {     var _loc2 = "";     if (n == 0)     {         _loc2 = "你一定不是人吧?怎么一点人品都没有?!";     }     else if (n > 0 && n <= 5)     {         _loc2 = "算了,跟你没什么人品好谈的...";     }     else if (n > 5 && n <= 10)     {         _loc2 = "是我不好...不应该跟你谈人品问题的...";     }     else if (n > 10 && n <= 15)     {         _loc2 = "杀过人没有?放过火没有?你应该无恶不做吧?";     }     else if (n > 15 && n <= 20)     {         _loc2 = "你貌似应该三岁就偷看隔壁大妈洗澡的吧...";     }     else if (n > 20 && n <= 25)     {         _loc2 = "你的人品之低下实在让人惊讶啊...";     }     else if (n > 25 && n <= 30)     {         _loc2 = "你的人品太差了。你应该有干坏事的嗜好吧?";     }     else if (n > 30 && n <= 35)     {         _loc2 = "你的人品真差!肯定经常做偷鸡摸狗的事...";     }     else if (n > 35 && n <= 40)     {         _loc2 = "你拥有如此差的人品请经常祈求佛祖保佑你吧...";     }     else if (n > 40 && n <= 45)     {         _loc2 = "老实交待..那些论坛上面经常出现的偷拍照是不是你的杰作?";     }     else if (n > 45 && n <= 50)     {         _loc2 = "你随地大小便之类的事没少干吧?";     }     else if (n > 50 && n <= 55)     {         _loc2 = "你的人品太差了..稍不小心就会去干坏事了吧?";     }     else if (n > 55 && n <= 60)     {         _loc2 = "你的人品很差了..要时刻克制住做坏事的冲动哦..";     }     else if (n > 60 && n <= 65)     {         _loc2 = "你的人品比较差了..要好好的约束自己啊..";     }     else if (n > 65 && n <= 70)     {         _loc2 = "你的人品勉勉强强..要自己好自为之..";     }     else if (n > 70 && n <= 75)     {         _loc2 = "有你这样的人品算是不错了..";     }     else if (n > 75 && n <= 80)     {         _loc2 = "你有较好的人品..继续保持..";     }     else if (n > 80 && n <= 85)     {         _loc2 = "你的人品不错..应该一表人才吧?";     }     else if (n > 85 && n <= 90)     {         _loc2 = "你的人品真好..做好事应该是你的爱好吧..";     }     else if (n > 90 && n <= 95)     {         _loc2 = "你的人品太好了..你就是当代活雷锋啊...";     }     else if (n > 95 && n <= 99)
    {
        _loc2 = "你是世人的榜样!";
    }
    else if (n == 100)
    {
        _loc2 = "天啦!你不是人!你是神!!!";
    }
    else
    {
        _loc2 = "你的人品竟然负溢出了...我对你无语..";
    } // end else if
    return (_loc2);
} // End of the function
function getResult(str)
{
    var _loc3 = 0;
    for (var _loc1 = 0; _loc1 < str.length; ++_loc1)
    {
        _loc3 = _loc3 + str.charCodeAt(_loc1);
    } // end of for
    return (_loc3 % 100);
} // End of the function
function checkPreList(str)
{
    var _loc1 = null;
    for (var _loc3 in PrenameList)
    {
        if (PrenameList[_loc3][0] == str)
        {
            _loc1 = PrenameList[_loc3][1];
            break;
        } // end if
    } // end of for...in
    return (_loc1);
} // End of the function
PrenameList = new Array();
PrenameList.push(["日本人", -1]);
PrenameList.push(["小日本", -1]);
PrenameList.push(["日本", -1]);
PrenameList.push(["日本鬼子", -1]);
getURL("FSCommand:showmenu", false);
inputName.maxChars = 20;
resultArea.text = "请输入要计算的名字 然后点击计算按钮\n本程序内容纯属构 仅供娱乐之用\n如有雷同 纯属巧合\n----------by cordy";
okBtAction = new Object();
okBtAction.click = function ()
{
    var _loc1 = inputName.text;
    _loc1 = _loc1.split(" ").join("");
    _loc1 = _loc1.split(" ").join("");
    _loc1 = _loc1.split("\t").join("");
    inputName.text = _loc1;
    if (_loc1 == "")
    {
        resultArea.text = "请先输入要计算的名字";
    }
    else
    {
        resultArea.text = nameResult(_loc1);
    } // end else if
};
okBt.addEventListener("click", okBtAction);
这个算发 遍历你输入的每个字符,然后求和之后再和100求余数 用PHP来验证结果 把 钱 礼 骏 分别转换成是UNICODE 然后相加 然后计算余数 PHP:
". mod(getUnicodeFromOneUTF8("钱"));
 echo "
". mod(getUnicodeFromOneUTF8("钱")+getUnicodeFromOneUTF8("礼")+getUnicodeFromOneUTF8("骏"));
function mod($num)
{
return $num %100;
} 

function getUnicodeFromOneUTF8($word) {
  if (is_array( $word))
    $arr = $word;
  else
    $arr = str_split($word);
  $bin_str = '';
  foreach ($arr as $value)
    $bin_str .= decbin(ord($value));
  $bin_str = preg_replace('/^.{4}(.{4}).{2}(.{6}).{2}(.{6})$/','$1$2$3', $bin_str);
  return bindec($bin_str); //返回类似20320, 汉字"你"
}
?>
最后的结果为 65 68 钱=65 钱礼骏=68 跟人品计算器的结果相同 姓名:钱 人品得分:65 评价:你的人品比较差了..要好好的约束自己啊.. 姓名:钱礼骏 人品得分:68 评价:你的人品勉勉强强..要自己好自为之.. 因为是余数 所以结果只能是 00-99
tags: