鱼C论坛

 找回密码
 立即注册
查看: 2535|回复: 18

[每日一练] 算法35 ◉‿◉ 电话加密

[复制链接]
发表于 2017-6-8 05:57:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 不二如是 于 2017-6-8 07:04 编辑


                               
登录/注册后可看大图


按照提示,完成代码,秀秀你的编程能力!

不许看答案,否则打屁屁





程序分析:
        某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的。
        加密规则如下:每位数字都加上 5, 然后用和除以 10 的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。


源代码:
游客,如果您要查看本帖隐藏内容请回复






如果喜欢,请订阅
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-6-10 11:11:49 | 显示全部楼层
python
  1. import functools
  2. def encrypt(num):
  3.     n = [0] * 4
  4.     for i in range(4):
  5.         n[3 - i] = (num % 10 + 5) % 10
  6.         num //= 10
  7.     n.reverse()
  8.     return functools.reduce(lambda x, y: 10 * x +y, n)
复制代码

点评

我很赞同!: 5.0
我很赞同!: 5
  发表于 2017-6-10 11:37
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-20 05:32:50 | 显示全部楼层
  1. window.onload = function(){
  2.                                 var num = prompt('请输入一个四位数作为要加密的数据');
  3.                                 var arr = [];
  4.                                 arr.push(parseInt(num/1000));
  5.                                 arr.push(parseInt(num % 1000 / 100));
  6.                                 arr.push(parseInt(num % 100 / 10));
  7.                                 arr.push(parseInt(num % 10));
  8.                                
  9.                                 document.write('原来的数字是:'+arr+'<br/>');
  10.                                 for(var i = 0; i < arr.length; i++){
  11.                                         arr[i] = (arr[i] + 5) % 10;
  12.                                 }
  13.                                
  14.                                 arr[0] ^= arr[3];
  15.                                 arr[3] ^= arr[0];
  16.                                 arr[0] ^= arr[3];
  17.                                
  18.                                 arr[1] ^= arr[2];
  19.                                 arr[2] ^= arr[1];
  20.                                 arr[1] ^= arr[2];
  21.                                 document.write('加密后的数字是:'+arr+'<br/>');
  22.                                
  23.                         };
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-24 17:19:09 | 显示全部楼层
你可以问问神奇的海螺
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-24 17:55:24 | 显示全部楼层
请问怎么解密
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-16 20:29:07 | 显示全部楼层
..
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-16 21:00:21 | 显示全部楼层
  1. var encrypt = function(val1){
  2.         var val = val1.toString();                                //处理每位数+5
  3.         var a=parseInt(val[0])+5,b=parseInt(val[1])+5,c=parseInt(val[2])+5,d=parseInt(val[3])+5;
  4.         var abcd = [a,b,c,d];
  5.         var rar = [],t,y;
  6.         for(var i=0;i<abcd.length;i++){
  7.                 if(abcd[i]<10){
  8.                         console.log(abcd[i]);                        //小于10直接跳过
  9.                         continue;
  10.                 }
  11.                 else{                                                //大于10取余代替
  12.                         var compare_num = abcd[i].toString();
  13.                         console.log(compare_num);
  14.                         var Yu = compare_num[1];
  15.                         rar.push(Yu);
  16.                 }
  17.         }
  18.         //1、4位换位
  19.         t = abcd[0];
  20.         abcd[0] = abcd[3];
  21.         abcd[3] = t
  22.         //2/3位换位
  23.         y = abcd[1];
  24.         abcd[1] = abcd[2];
  25.         abcd[2] = y
  26.         console.log(abcd);
  27. }
  28. encrypt(1234);
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-16 21:57:33 | 显示全部楼层
求解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-19 08:13:07 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-4-29 16:34:08 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-6-4 09:54:42 | 显示全部楼层
function returnEncode(num){
   var a = [];
   for(var i = 0;num>1;i++){
        a.unshift((parseInt(num%10)+5)%10);
         num /= 10;
   }
   var temp1 = a[0];
   a[0] = a[3];
   a[3] = temp1;

   var temp2 = a[1];
   a[1] = a[2];
   a[2] = temp2;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-7 14:20:25 | 显示全部楼层
studying javascript...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-23 11:32:29 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-11-23 11:58:56 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-12-25 10:12:14 | 显示全部楼层
0.0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-1 11:56:55 | 显示全部楼层
0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-17 09:24:33 | 显示全部楼层
var a=2345;
    a1 = (parseInt(a/1000)+5)/10;
    a2 = (parseInt(a%1000/100)+5)/10;
    a3 = (parseInt(a%1000%100/10)+5)/10;
    a4= (parseInt(a%1000%100%10)+5)/10;
    a =parseFloat(""+a4+a3+a2+a1);
    alert(a);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-23 20:14:33 | 显示全部楼层
<script>
        x=prompt("数字:");
        let a=Array(4);
        for (let i of x) {
            i=parseInt(i);
            i=(i+5)%10;
            a.push(i);
        }
        a=a.reverse();
        alert(a.join(""))
    </script>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 23:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表