码云gitee七周年码力考验解谜小游戏

编程入门 行业动态 更新时间:2024-10-24 18:27:48

码云gitee七周年码力考验解谜<a href=https://www.elefans.com/category/jswz/34/1769974.html style=小游戏"/>

码云gitee七周年码力考验解谜小游戏

码云gitee七周年码力考验解谜小游戏

  • 码云gitee七周年码力考验解谜小游戏
    • 第一题
    • 第二题
    • 第三题
    • 第四题
    • 第五题
    • 总结

码云gitee七周年码力考验解谜小游戏

第一题

密文解密,密文是Base64编码,解密方式十分简单,解密得到一个网址,与答案相关。

echo LmNvbS9tdnBocA==|openssl base64 -d
# 得到明文 /mvphp,加上gitee的完整URL,得到网址gitee/mvphp
# 也可到在线解密网站上解密,十分简单

进入网站后,答案就是网页上的联系方式。

第二题

此题线索比较有趣,线索就是“阴祸德芙”这个名字,直接在gitee搜索项目即可找到对应的项目,接下来就是对莫斯密码的 解码,网上可以搜到,不再多说,答案是“saiban”。

第三题

接下来根据题目提示,只识别0和1,线索是信的每一句话是8个字,正好对应一个字节,即一个ASCII字符,读音的平仄分别代表0和1,平即拼音的一声和二声,仄即拼音的三声和四声,得到九个数字,翻译成ASCII字符,得到答案,结果是"bugplanet",即bug星球。

第四题

找规律,ID那行的规律是左右对称,第二行似乎是上下对称或者中心对称,但都不全对,本人是试出来的,可能有瑕疵,也有可能是我找得规律不对,ID是“MTX”,密码是“hr”。

接着是一张图,答案是求黄点的坐标,可以在黄点处右键->检查代码,即可看到坐标,或许用尺子量也行。格式是“xx,xx”。

第五题

这是一道算法题,因为求的是最短路径,因此直接想到广度优先搜索(bfs),实现代码比较简单,由于横坐标是奇数,第一步不是东就是西,不可能是南和北,如下是代码。

#include <queue>
#include <cmath>
#include <iostream>
#include <list>
struct pos{int x,y;
};std::list<pos> nStep;
std::list<std::list<char>> paths;
bool visit[10000][10000]={0};
int dx=2013;
int dy=2020;
int step=1;
bool bfs(){std::list<pos> tStep;std::list<std::list<char>> tPaths;int l=pow(2, step);while (!nStep.empty()) {//uppos current_pos = nStep.front();std::list<char> current_path = paths.front();nStep.pop_front();paths.pop_front();pos nPos = current_pos;std::list<char> n_path=current_path;nPos.y+=l;if(!visit[nPos.x+5000][nPos.y+5000]){visit[nPos.x+5000][nPos.y+5000]=true;tStep.push_back(nPos);n_path.push_back('N');tPaths.push_back(n_path);if(nPos.x==dx&&nPos.y==dy){std::cout<<"finish!"<<std::endl;for(auto ite = n_path.begin(); ite != n_path.end(); ite++)std::cout<<*ite;return true;}}//downnPos = current_pos;n_path=current_path;nPos.y-=l;if(!visit[nPos.x+5000][nPos.y+5000]){visit[nPos.x+5000][nPos.y+5000]=true;tStep.push_back(nPos);n_path.push_back('S');tPaths.push_back(n_path);if(nPos.x==dx&&nPos.y==dy){std::cout<<"finish!"<<std::endl;for(auto ite = n_path.begin(); ite != n_path.end(); ite++)std::cout<<*ite;return true;}}//leftnPos = current_pos;n_path=current_path;nPos.x-=l;if(!visit[nPos.x+5000][nPos.y+5000]){visit[nPos.x+5000][nPos.y+5000]=true;tStep.push_back(nPos);n_path.push_back('W');tPaths.push_back(n_path);if(nPos.x==dx&&nPos.y==dy){std::cout<<"finish!"<<std::endl;for(auto ite = n_path.begin(); ite != n_path.end(); ite++)std::cout<<*ite;return true;}}//rightnPos = current_pos;n_path=current_path;nPos.x+=l;if(!visit[nPos.x+5000][nPos.y+5000]){visit[nPos.x+5000][nPos.y+5000]=true;tStep.push_back(nPos);n_path.push_back('E');tPaths.push_back(n_path);if(nPos.x==dx&&nPos.y==dy){std::cout<<"finish!"<<std::endl;for(auto ite = n_path.begin(); ite != n_path.end(); ite++)std::cout<<*ite;return true;}}}nStep=tStep;paths=tPaths;return false;
}
int main(int argc, char *argv[])
{std::list<char> lstep,rstep;lstep.push_back('W');rstep.push_back('E');nStep.push_back({1,0});paths.push_back(rstep);nStep.push_back({-1,0});paths.push_back(lstep);visit[1+5000][5000]=true;visit[-1+5000][5000]=true;while (!bfs()) {std::cout<<step++<<std::endl;std::cout<<nStep.size()<<std::endl;}
}

答案

# vc++与g++编译器有点区别,pow()在vc++中不用cmath
g++ -O2 main.cpp main
./main
WWSSSEEEEEEN

总结

题目不难,有点意思,考查的是计算机相关的一些基础知识,也是常用的知识。量后祝大家都通关!

更多推荐

码云gitee七周年码力考验解谜小游戏

本文发布于:2024-02-06 03:37:40,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1746244.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:小游戏   周年   码云   gitee

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!