通过python解决原神解密

news2024/9/21 20:47:38

        最近楼主玩原神世界任务做到稻妻了,在稻妻有很多解密游戏,但是博主最头疼的就是稻妻的石头解密QAQ(如图)

        就在昨晚,楼主又碰到了石头解密,瞎打,半天解不出来。于是就想,有没有什么严谨的方法可以100%解出这种谜题呢?

        答案是有的,而且方法还有很多种,当然,将游戏内容转化成问题的时候必然要经历抽象的过程。

        楼主在这里先给没玩过原神的小伙伴们科普一下,原神中这种石头解密存在两种石头,一种是提示石,另一种是交互石,两种石头上都有紫色的图腾指示石头的朝向。每次使用角色攻击交互石,交互石会转动90°,当所有交互石的朝向均与提示石相同时,解密成功。乍一听很简单,但是解密的难点接在于,不同的交互石可能会连锁若干其他交互石,当该交互石受到攻击时,该交互石会转动90°,同时,与之连锁的交互石也会转动90°!这就使得解出这种谜题需要动一点脑筋。

抽象

        以楼主昨晚遇到的解密为例吧。

        如图所示,提示石(中心)朝向我们,我们暂且将提示石的朝向定义为向前。由图可知,交互石1与交互石4均朝前,交互石2与交互石3均朝后。

        我们可以将交互石的四种状态(朝前、朝左、朝后、朝右)定义为0,1,2,3。接着,我们将四块交互石想象成矩阵中的元素,即交互石初始状态的矩阵表示为[[0, 2], [2, 0]]。然后将攻击交互操作抽象为交互石对应的矩阵元素+1。设矩阵元素为x,每次完成交互后,该元素变为x mod 4。当矩阵元素均为0时,解密成功。

        至于连锁关系则是:当矩阵中某一元素加一时,与其同行以及同列的元素均加一

       到此,抽象完毕!正式介绍我们的方法:

方法一   注意到

        我们注意到将矩阵中两个元素‘2’都进行两次加一操作,就可以完成解密。当然了,用这个方法是有条件的,条件就是你拥有惊人的注意力。(当然,可能是楼主熬夜熬得比较累,一时间注意不到)

方法二   python解决 

import random


class resolve_puzzle:
    def __init__(self):  # 初始化定义矩阵
        self.matrix = [[0, 2], [2, 0]]
        # 将方法都放入实例的列表,方便下面操作
        self.method_list = [self.revolve1, self.revolve2, self.revolve3, self.revolve4]

    def revolve1(self):  # 用来与交互石1完成交互的方法
        self.matrix[0][0] = (self.matrix[0][0] + 1) % 4
        self.matrix[0][1] = (self.matrix[0][1] + 1) % 4
        self.matrix[1][0] = (self.matrix[1][0] + 1) % 4
        print('移动交互石1')

    def revolve2(self):  # 用来与交互石2完成交互的方法
        self.matrix[0][0] = (self.matrix[0][0] + 1) % 4
        self.matrix[0][1] = (self.matrix[0][1] + 1) % 4
        self.matrix[1][1] = (self.matrix[1][1] + 1) % 4
        print('移动交互石2')

    def revolve3(self):  # 用来与交互石3完成交互的方法
        self.matrix[0][0] = (self.matrix[0][0] + 1) % 4
        self.matrix[1][1] = (self.matrix[1][1] + 1) % 4
        self.matrix[1][0] = (self.matrix[1][0] + 1) % 4
        print('移动交互石3')

    def revolve4(self):  # 用来与交互石4完成交互的方法
        self.matrix[1][1] = (self.matrix[1][1] + 1) % 4
        self.matrix[0][1] = (self.matrix[0][1] + 1) % 4
        self.matrix[1][0] = (self.matrix[1][0] + 1) % 4
        print('移动交互石4')

    def action(self):
        while self.matrix[0][0]+self.matrix[0][1]+self.matrix[1][0]+self.matrix[1][1] != 0:
            a = random.randint(0, 3)
            met = self.method_list[a]
            met()


resolve_puzzle().action()


         这个方法非常暴力,思维十分简单,就是随机进行操作,直至成功。但是由于操作是随机的,输出的值会有很长一串,这个时候就需要复制输出的结果,粘贴到excel打开,进行计数操作

        通过计数,楼主某次获得的数据是:{'移动交互石1':60, '移动交互石1':58, '移动交互石1':66, '移动交互石1':60},已知移动四次相当于移动0次,故交互次数可以翻译成{'移动交互石1':0, '移动交互石1':2, '移动交互石1':2, '移动交互石1':0},与我们刚才注意到的结果相同。

写在最后

        其实楼主水平不高,写的这种算法有种投机取巧的感觉,十分粗糙。严谨高效的写法应当是使用递归或者是用树来解决。但是楼主都无法完成完整程序,如果有感兴趣的小伙伴,可以和楼主分享分享。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2072123.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何在Windows下使用make编译Makefile

最近有小伙伴咨询我去编译运行一个程序。我一开始以为是CMakeLists,结果发现是makefile。 什么是Makefile ‌Makefile是一种用于自动化构建和管理程序的工具‌,它定义了项目中文件的依赖关系和构建步骤,帮助程序员自动化编译、链接和打包程序…

Ps:创建帧动画

在 Photoshop 中,帧动画 Frame Animation是一种通过在“时间轴”面板中创建和管理多个帧来实现动画效果的方式。 所谓帧动画,也就是传统意义上的逐帧动画,依次播放每个帧而构成的动画形式。每个帧记录了“图层”面板上所有图层的属性状态&…

QT Mainwindow下指定控件的setMouseTracking(true)和mousemoveevent函数失效-问题解决

目录: 一,问题描述二,解决方法2.1解决依据2.2方法实操 三,参考资料 一,问题描述 ☀️之前碰到过的一个问题,现在分享出来:想在qt哪里搞个鼠标移动在控件显示的图片上,然后实时显示对…

[数据集][目标检测]红外场景下车辆和行人检测数据集VOC+YOLO格式19069张4类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):19069 标注数量(xml文件个数):19069 标注数量(txt文件个数):19069 标…

一文带你画PCB板,有手就行

背景 最近写Autosar网络唤醒功能,想在实际硬件上验证,但是市面上没有找到板子验证,只能找人帮忙画PCB板。但是这里遇到比较大的问题,1、整个周期会比较长,板子不太可能一次就能完成,中间会出现修改的地方&…

C#/.NET/.NET Core技术前沿周刊 | 第 1 期(2024年8.12-8.18)

前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。 欢迎投稿,推荐…

【蓝牙协议栈】【BLE】【GATT】精讲GATT Profile架构(图文并茂精华版)

目录 1. 蓝牙BLE通用属性协议(GATT) 2.GATT角色介绍 3.GATT 层级和Profile架构 4. GATT Server架构(重点内容) 5. Characteristic架构(重点内容) 6. (Characteristic Properties)特性属性详解&#x…

一款免费的目录以及文件对比工具,替代Beyond Compare

Beyond Compare是一款功能强大的文件对比工具,但是由于是付费软件,很多没有购买的企业用户无法使用。CCompare就是一款替代Beyond Compare的免费方案,一款来自中国的可替换beycond compare, 免费使用的代码同步对比工具。 CCompare 是一款功…

【科研绘图】【分条热力图】:附Origin详细画图流程 + 案例分析

目录 No.1 理解分条热力图 No.2 画图流程 1 导入数据,绘制图形 2 设置绘图细节 3 色阶控制 4 设置坐标轴 5 效果图 No.3 案例分析 1 案例一 2 案例二 No.1 理解分条热力图 分条热力图,基于数据映射和颜色编码,是在热力图的基础上进…

聚星文社下载地址

聚星文社绘唐科技是一个文化传媒公司,以绘制唐朝相关的科技设备和场景为主题。该公司致力于通过插画、动画、游戏等形式,栩栩如生地展现唐朝时期的科技发展和生活场景。 聚星文社下载地址https://iimenvrieak.feishu.cn/docx/ZhRNdEWT6oGdCwxdhOPcdds7n…

unity Standard Assets资源商店无法安装解决方案

Unity游戏开发 “好读书,不求甚解;每有会意,便欣然忘食。” 本文目录: Unity游戏开发 Unity游戏开发unity中国 嗨嗨嗨,我来啦。 这几天的川渝之旅已经圆满结束了,今天开始正常给大家更新: Unity…

TiggerRamDisk绕过激活界面,支持最新iOS17.4.1绕过

iOS15等待越狱的日子实在太久了!checkra1n越狱目前还未发布iOS15系统越狱。 可很多朋友不小心或者大意已经升级到了最新iOS15系统。一般来说这并没有什么大碍,但如果是绕过激活的设备,或者忘记账户密码而刷机的设备,就会面临无法…

【计算机组成原理】强化部分笔记

第一章 计算机系统概述 考点1 计算机系统层次结构 1.计算机发展历程已从大纲中删去 2. 3.指令和数据都存放在存储器中,通过指令周期不同来区分(比如取指周期和执行周期) 现代的计算机以存储器为中心 4. 5. 6.汇编语言:STORE、L…

[云计算] 虚拟化笔记

原著: 韩冰,[云计算课程], 有删改。 目的 对 IT 资源简化,用户通过标准接口访问。 资源是提高一定功能的实现 。可以是硬件, 如CPU, 也可以是软件。 发展史 1961 IBM CPU 分时间片, 一个CPU 虚拟化为多…

数据结构: 树状数组

在OI赛事中,数据结构是非常重要的一个内容,更是有人说过,算法数据结构程序: A l g o r i t h m D a t a AlgorithmData AlgorithmData S t r u c t u r e P r o g r a m m i n g StructureProgramming StructureProgramming 接下来&#…

Python | Leetcode Python题解之第373题查找和最小的K对数字

题目: 题解: class Solution:def kSmallestPairs(self, nums1: List[int], nums2: List[int], k: int) -> List[List[int]]:m, n len(nums1), len(nums2)# 二分查找第 k 小的数对和left, right nums1[0] nums2[0], nums1[m - 1] nums2[n - 1] 1…

【大模型从入门到精通40】LLM部署运维(LLM Ops)使用Kubeflow Pipelines掌握LLM工作流2

这里写目录标题 使用Kubeflow Pipeline组件:输出与任务对象理解PipelineTask对象通过PipelineTask.output访问输出数据组件函数中的关键字参数实用贴士 在Kubeflow Pipelines中链接组件:传递输出定义依赖组件传递组件输出常见错误:传递正确的…

【Python进阶(十)】——Matplotlib基础可视化

🍉CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一|统计学|干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项,参与研究经费10w、40w级横向 文…

Gradle安装使用

下载安装包 Gradle | Releases 解压后在.bash_profile添加环境变量 更新并检查 source ~/.bash_profile

计算机的错误计算(七十二)

摘要 讨论大数的余割函数 csc(x)的错误计算。 例1. 在 Excel 中计算 csc(1234567.89) . 直接贴图: 然而,正确值是 -0.2023325675399672e1(ISRealsoft 提供)。 Excel 的输出中有 6位错误数字。 例2. 在 Maple中计算 csc(32^58…