用代码玩剧本杀?第3届83行代码大赛剧情官方解析

简介: 由阿里云云效主办的2021年第3届83行代码挑战赛已经收官。超2万人围观,近4000人参赛,85个团队组团来战。大赛采用游戏闯关玩儿法,融合元宇宙科幻和剧本杀元素,让一众开发者玩得不亦乐乎。

说到剧本杀,很多人很好奇,代码大赛究竟是如何与剧本杀元素结合的?在关卡里面收集到的线索,到底如何串联起来?我们请来了本次代码剧本杀的主要设计者陈少滨(阿里云云效代码平台)来具体讲讲。



前言


代码挑战赛、剧本杀、元宇宙,这些词可能单独列出来你都认识,但是放到一起可能就会有点疑惑:这三有啥关系?为了使83行代码挑战赛更加有趣,我们史无前例地将剧本杀元素、元宇宙科幻元素与代码挑战赛结合,打造了一场别开生面的代码剧本杀


既然是剧本杀,那么自然就要有线索。玩家每次通关,都能够获取code83的定制线索,其中不仅包含了关键的剧情信息,还有决赛出题人担心题目太难,特意留下的提示,最重要的是,参与的玩家还可以通过获取的线索换取云效83行代码xCHERRY定制机械键盘等豪华大礼。


下面,我们来揭秘一下这场代码剧本杀,看看你是否破获了真相。


线索设计


这次线索的设计的时候,每一条线索都包含了决赛题目相关的提示和剧情相关的提示,先给大家解释一下决赛题目相关的线索是怎么设计的,看大家有没有错过一些提示。


"<(?.*)> 可以表示什么呢?":第一条线索是提示决赛有正则类型的bug,由于?这种用法不是特别常用,所以在线索里提前给出提示。


"NPE:No People Emo":这个就是很直接地提示决赛里有NPE类型的问题,当决赛答题的时候,需要多关注一下有没有什么地方可能会是null,触发NPE。


"不是什么都会等你,很多事情都是一次性的":这个是提示可能是有一些“一次性”类型的bug,如果经验比较丰富的话,可能就能意识到这个是指流类型一次性读取的问题。


"我们通常以为admin就是admin":这其实是在提示决赛中admin可能不是admin,那可能是什么呢?可能是ADMIN,或者admin123这种,具体的大家在决赛题目中就会了解到。


"大家都喜欢全局视角,但全局视角也有它的问题":其实是在提醒你全局类型的变量可能有问题,你可能需要把全局变量换成局部类型的变量。


"好的单元测试 => 你看懂了单元测试 = 你看懂了代码":决赛题目中大部分的bug都是在单元测试调用的函数中,如果能聚焦地分析单元测试调用到的函数,就能把大部分的bug解决掉。


"有的bug之所以难找,就是因为它只在运行时出现":这个是在提示有一些bug可能是无法直接看代码就能分析到的,需要结合运行时的调试和诊断,才能发现这些bug。


"别得意忘形了,快收好你的尾巴!":这个是在提示正则匹配读取尾巴的问题。


"贪多嚼不烂":这个是在提示正则匹配的贪婪模式的问题。


"断点调试是万能的吗?不影响应用本身的观测或许才是更优选择":这个是在提示本次决赛的场景是无法正常使用断点调试的,所以可能需要使用应用观测的能力。


剧情设计


下面我们进行一下剧情向的解析。最开始我们收到的是这样的邀请函:



你收到了这封邀请函,但只有一个 YES 选择键,没办法拒绝,只能接受。接受了之后,你就进入了我们的故事线。在我们的故事线中,当前的时间线是这样的:


你是一个程序猿 -> 收到邀请函,进入宇宙基地 -> 进入第一扇门,存在缝隙,暗手会偷走宝贵的东西 -> 进入第二扇门,百万人名涌动,根据关键词找到对应人名 -> 进入第三扇门,重塑人生 -> 进入第四扇门,发现了自己的人生被代码定义。


这部分的剧情内容是通过 WebIDE 的剧情对话给出的,而剧情线索中,会给出过往的时间线:


高考过后,走上程序猿道路 -> 电脑中存在后门,导致公司机密泄漏,被开除 -> 接触到云晓(阿里云云效),了解云端开发 -> 开除后成为数学老师,怀念柯西(Cosy)带来的高效和充满技术感的生活 -> 疫情来临,钉钉助力在线教育 -> 意识觉醒,想用技术创造价值。


在了解了所有剧情之后,就需要回答三个问题,分别是:你来自什么宇宙、你的真实身份是什么、怎么创造生命的意义。


你来自什么宇宙,其实是在问你从哪里来;你的真实身份是什么,其实在问你是谁;怎么创造生命的意义,其实是问你要做什么,你要到哪里去。这是三个经典的人生问题。


那么具体怎么回答这三个问题呢?想要解决这三个问题,需要先将决赛关卡的bug解决完之后,会发现client的会返回一些字符串,这些字符串有三个开头(三个通道),如果根据这三个通道进行筛选,就会发现其实是这三段代码:





通过阅读这三段代码,会发现其实这三段代码正好就是过往时间线里面的三个阶段。


所以从剧情上的话,可以理解到“你”的人生其实早就被代码定义了。


第一个问题:你来自什么宇宙?当然毫无疑问就是在代码宇宙中。另外,从代码的包名也可以看出:

com.code.universe。


第二个问题:你的真实身份是什么呢?从代码中也很明确了,就是programmer(程序猿)。当然,了解完全部剧情之后,更准确的答案应该是一段代码(code)或者说一段程序(program)。


最后一个问题:怎么创造生命的意义?这个其实是稍微有一点难的,不像前两题这么直观,需要看完整个剧情,就会发现剧情里主要强调一点是技术的力量,第三段代码中也明确提到了在经历了人生的大转折之后,向往Technology的力量,学习了DevStudio的知识,Yunxiao的知识,Devops的知识,Cosy的知识,思考生命的价值。所以这一题的答案是技术(Technology),或者DevStudio、Yunxiao、Devops、Cosy都是可以的。


上述就是本次比赛的完整剧情了,最后还有一个附加题:


之前提到了故事线中的时间线,我们再来对比一下现实的时间线:


故事的时间线:


你是一个程序猿 -> 收到邀请函,进入宇宙基地 -> 进入第一扇门,存在缝隙,暗手会偷走宝贵的东西 -> 进入第二扇门,百万人名涌动,根据关键词找到对应人名 -> 进入第三扇门,重塑人生,最终人生(职业)未改变,过程更加丰富 -> 进入第四扇门,发现了自己的人生被代码定义 -> 发现真相,阿里云云效邀请你一起用技术创造生命的价值


现实的时间线:


你是一个程序猿 -> 你收到开赛邀请,参与83行代码大赛 -> 开启第一关,解决会造成漏洞的安全问题 -> 开启第二关,从百万级别类名中,寻找指定前缀的类名 -> 开启第三关,重构代码,最终业务逻辑不变,代码质量更好 -> 开启第四关,解决bug,解锁真相 -> 揭晓结局,阿里云云效邀请你一起用技术创造生命的价值


当我们看完这时间线之后,最后我们可以再回过来看这三个问题:你来自什么宇宙?你的真实身份是什么?


怎么创造生命的价值?这三个问题就留给大家思考了。


结语


2021年第3届83行代码挑战赛已经正式收官。你参加的,到底是一场代码挑战赛,还是一场剧本杀,亦或是?你看清真相了吗?


大赛目前全部关卡开放体验,域名地址:https://code83.ide.aliyun.com/,欢迎你来。

相关文章
|
15天前
|
PHP 开发者 容器
PHP命名空间深度解析:避免命名冲突与提升代码组织####
本文深入探讨了PHP中命名空间的概念、用途及最佳实践,揭示其在解决全局命名冲突、提高代码可维护性方面的重要性。通过生动实例和详尽分析,本文将帮助开发者有效利用命名空间来优化大型项目结构,确保代码的清晰与高效。 ####
18 1
|
23天前
|
机器学习/深度学习 存储 人工智能
强化学习与深度强化学习:深入解析与代码实现
本书《强化学习与深度强化学习:深入解析与代码实现》系统地介绍了强化学习的基本概念、经典算法及其在深度学习框架下的应用。从强化学习的基础理论出发,逐步深入到Q学习、SARSA等经典算法,再到DQN、Actor-Critic等深度强化学习方法,结合Python代码示例,帮助读者理解并实践这些先进的算法。书中还探讨了强化学习在无人驾驶、游戏AI等领域的应用及面临的挑战,为读者提供了丰富的理论知识和实战经验。
49 5
|
1月前
|
存储 安全 Java
系统安全架构的深度解析与实践:Java代码实现
【11月更文挑战第1天】系统安全架构是保护信息系统免受各种威胁和攻击的关键。作为系统架构师,设计一套完善的系统安全架构不仅需要对各种安全威胁有深入理解,还需要熟练掌握各种安全技术和工具。
121 10
|
1月前
|
前端开发 JavaScript 开发者
揭秘前端高手的秘密武器:深度解析递归组件与动态组件的奥妙,让你代码效率翻倍!
【10月更文挑战第23天】在Web开发中,组件化已成为主流。本文深入探讨了递归组件与动态组件的概念、应用及实现方式。递归组件通过在组件内部调用自身,适用于处理层级结构数据,如菜单和树形控件。动态组件则根据数据变化动态切换组件显示,适用于不同业务逻辑下的组件展示。通过示例,展示了这两种组件的实现方法及其在实际开发中的应用价值。
36 1
|
2月前
|
机器学习/深度学习 人工智能 算法
揭开深度学习与传统机器学习的神秘面纱:从理论差异到实战代码详解两者间的选择与应用策略全面解析
【10月更文挑战第10天】本文探讨了深度学习与传统机器学习的区别,通过图像识别和语音处理等领域的应用案例,展示了深度学习在自动特征学习和处理大规模数据方面的优势。文中还提供了一个Python代码示例,使用TensorFlow构建多层感知器(MLP)并与Scikit-learn中的逻辑回归模型进行对比,进一步说明了两者的不同特点。
93 2
|
2月前
|
存储 搜索推荐 数据库
运用LangChain赋能企业规章制度制定:深入解析Retrieval-Augmented Generation(RAG)技术如何革新内部管理文件起草流程,实现高效合规与个性化定制的完美结合——实战指南与代码示例全面呈现
【10月更文挑战第3天】构建公司规章制度时,需融合业务实际与管理理论,制定合规且促发展的规则体系。尤其在数字化转型背景下,利用LangChain框架中的RAG技术,可提升规章制定效率与质量。通过Chroma向量数据库存储规章制度文本,并使用OpenAI Embeddings处理文本向量化,将现有文档转换后插入数据库。基于此,构建RAG生成器,根据输入问题检索信息并生成规章制度草案,加快更新速度并确保内容准确,灵活应对法律与业务变化,提高管理效率。此方法结合了先进的人工智能技术,展现了未来规章制度制定的新方向。
42 3
|
2月前
|
SQL 监控 关系型数据库
SQL错误代码1303解析与处理方法
在SQL编程和数据库管理中,遇到错误代码是常有的事,其中错误代码1303在不同数据库系统中可能代表不同的含义
|
2月前
|
SQL 安全 关系型数据库
SQL错误代码1303解析与解决方案:深入理解并应对权限问题
在数据库管理和开发过程中,遇到错误代码是常见的事情,每个错误代码都代表着一种特定的问题
|
3月前
|
SQL 人工智能 机器人
遇到的代码部份解析
/ 模拟后端返回的数据
20 0
|
3月前
|
设计模式 存储 算法
PHP中的设计模式:策略模式的深入解析与应用在软件开发的浩瀚海洋中,PHP以其独特的魅力和强大的功能吸引了无数开发者。作为一门历史悠久且广泛应用的编程语言,PHP不仅拥有丰富的内置函数和扩展库,还支持面向对象编程(OOP),为开发者提供了灵活而强大的工具集。在PHP的众多特性中,设计模式的应用尤为引人注目,它们如同精雕细琢的宝石,镶嵌在代码的肌理之中,让程序更加优雅、高效且易于维护。今天,我们就来深入探讨PHP中使用频率颇高的一种设计模式——策略模式。
本文旨在深入探讨PHP中的策略模式,从定义到实现,再到应用场景,全面剖析其在PHP编程中的应用价值。策略模式作为一种行为型设计模式,允许在运行时根据不同情况选择不同的算法或行为,极大地提高了代码的灵活性和可维护性。通过实例分析,本文将展示如何在PHP项目中有效利用策略模式来解决实际问题,并提升代码质量。

推荐镜像

更多