陈尚涵 发表于 2024-9-22 22:08:24

代码阅读理解

本帖最后由 陈尚涵 于 2024-10-7 18:21 编辑

很简单,以下有输出"Hello World"的代码(Python和C++),只需要大致描述代码原理即可

第一个答出来的丰厚奖励

Ps 10/13,也就是这周日晚检测答案

这里保证没有以下行为

1.任何破坏代码可读性的行为

2.任何奇怪的变量命名

3.任何不必要的多余操作(这里指一些无用的代码)

4.两个不同语言实现没有任何差异

给出代码:

C++

#include<iostream>
using namespace std;
int rem,codes[]={439,659,543,547,986,145,657,876,347,874,474};
int f(int x){
        if(rem!=0)return rem;
        if(x<=1)return 1;
        rem=f(x-1)+f(x-2);
        return rem;
}
int g(int x){
        int t=x;
        while(t){
                int cnt=1;
                while(f(cnt)<=t)cnt++;
                cnt--;
                t-=f(cnt);
        }
        return 2*x-t;
}
int trans(int x){
        if(x%10==9){
                if(x/100==4)return 14;
                else return 42;
        }else if(x%10==3)return 48;
        else if(x%10==7){
                if(x/100==5)return 48;
                else if(x/100==6)return 24;
                else return 49;
        }else if(x%10==6){
                if(x/100==9)return 50;
                else return 47;
        }else if(x%10==5)return -30;
        else if(x%10==4){
                if(x/100==8)return 42;
                else return 33;
        }
}
int main(){
        int j=58;
        bool k=false;
        for(int i=0;i<11;i++){
                char x;
                if(codes%2==0)x=trans(g(codes/2));
                else x=trans(g(codes/2)+1);
                x+=j;
                if(!k&&j==60)k=true;
                else j++;
                cout<<x;
        }
        return 0;
}

Python

rem = {}
codes =
def f(x):
    try:
      return rem
    except:
      if(x<=1):
            return 1
      rem=f(x-1)+f(x-2)
      return rem
def g(x):
    t=x
    while(t):
      cnt=1;
      while f(cnt)<=t:
            cnt += 1
      cnt -= 1
      t-=f(cnt)
    return 2*x-t
def trans(x):
    if x%10==9:
      if x//100==4:
            return 14
      else:
            return 42
    elif x%10==3:
      return 48
    elif x%10==7:
      if x//100==5:
            return 48
      elif x//100==6:
            return 24
      else:
            return 49
    elif x%10==6:
      if x//100==9:
            return 50
      else:
            return 47
    elif x%10==5:
      return -30
    elif x%10==4:
      if x//100==8:
            return 42
      else:
            return 33
j=58
k=False
for i in range(11):
    x = None
    if codes%2==0:
      x=trans(g(codes//2))
    else:
      x=trans(g(codes//2)+1)
    x+=j
    if not k and j==60:
      k=True
    else:
      j+=1
    print(chr(x),end='')

陈尚涵 发表于 2024-10-7 18:20:47

浏览的人好多,回复的就1个{:10_257:}{:10_257:}{:10_257:}

再给一周时间,大家踊跃尝试,可以考虑加到100育碧{:10_256:}{:10_256:}

@zhangjinxuan @某一个“天” @cjjJasonchen @liuhongrun2022

歌者dddddgz 发表于 2024-9-22 22:19:23

Python解释:

for i in range(11)循环11次,hello world正好11个字符,推断循环x就是字符的编码;
if内两种情况都有codes//2,尝试带入理解,f(439//2):

大脑炸了

某一个“天” 发表于 2024-10-7 18:56:07

陈尚涵 发表于 2024-10-7 18:20
浏览的人好多,回复的就1个

再给一周时间,大家踊跃尝试,可以考虑加到1 ...

有没有可能大家觉得无聊?{:10_254:}

cjjJasonchen 发表于 2024-10-9 17:49:58

哇去,是不是用的编码,循环的时候会改变编码,最后正好等于helloworld

ydwb 发表于 2024-10-10 11:48:57

生物质CPU待升级。。。

人造人 发表于 2024-10-10 20:37:43

某一个“天” 发表于 2024-10-7 18:56
有没有可能大家觉得无聊?

没意思 +1

人造人 发表于 2024-10-10 20:38:12

某一个“天” 发表于 2024-10-7 18:56
有没有可能大家觉得无聊?

没有意义 +1

小甲鱼的二师兄 发表于 2024-10-13 03:27:39

这段代码是一个用Python编写的加密解密程序,经过分析,它的执行结果是输出字符串Hello World。

以下是详细的执行过程:

1. rem字典和codes列表:rem是用于存储斐波那契数列计算结果的字典,codes是一个包含编码数字的列表。

2. 函数f(x):这是一个计算斐波那契数列的函数,使用了递归和记忆化以提高效率。

3. 函数g(x):这个函数对输入的数字进行处理,但经过分析,实际上对于输入x,g(x)的结果是2*x。

4. 函数trans(x):这是一个转换函数,根据输入数字的特定特征(如个位数、百位数)返回一个特定的数字。

5. 主循环:遍历codes列表,对于每个编码数字,通过trans函数和一些计算,得到一个字符的ASCII码,然后累加一个动态变化的值j,最后通过chr函数将其转换为字符并输出。

具体到每个编码数字的处理:

1. 对于codes = 439,通过trans函数得到14,加上j=58后得到72,对应字符'H'。

2. 按照类似的步骤,对每个编码数字进行处理,依次得到字符'e'、'l'、'l'、'o'、空格' '、'W'、'o'、'r'、'l'、'd'。
页: [1]
查看完整版本: 代码阅读理解