如何优雅的研究 RGSS3 番外(一) ruby 实现的后缀自动机

如何优雅研究 RGSS3) 场景中窗口的工作原理 RGSS3中,场景是应该是游戏的基本组成单位。 阅读详情

*我真的不会 ruby 呀*



#encoding:utf-8
#==============================================================================
# ■ Suffix_Automaton
#------------------------------------------------------------------------------
#  后缀自动机。
#==============================================================================

class Suffix_Automaton
  #--------------------------------------------------------------------------
  # ● 定义实例变量
  #--------------------------------------------------------------------------
  attr_reader   :total                   # 当前 SAM 中不同的子串个数
  attr_reader   :root                    # SAM 的根节点
  #==============================================================================
  # ■ State
  #------------------------------------------------------------------------------
  #  后缀自动机的状态结点。
  #==============================================================================
  class State
    #--------------------------------------------------------------------------
    # ● 定义实例变量
    #--------------------------------------------------------------------------
    attr_accessor   :par                     # parent 树中的父结点
    attr_accessor   :go                      # go
    attr_accessor   :val                     # val
    #--------------------------------------------------------------------------
    # ● 初始化状态结点
    #--------------------------------------------------------------------------    
    def init(val = 0)
      @par = nil
      @go = []
      @val = val
      for i in 0..26 do
        @go[i] = nil
      end
    end
    #--------------------------------------------------------------------------
    # ● 计算结点表示的不同子串数
    #--------------------------------------------------------------------------
    def calc
      return 0 if @par == nil
      return @val - @par.val
    end
  end
  #--------------------------------------------------------------------------
  # ● 初始化后缀自动机
  #--------------------------------------------------------------------------    
  def initSAM
    @total = 0
    @cur = 0
    @nodePool = []
    @root = newState
    @last = @root
  end
  #--------------------------------------------------------------------------
  # ● 创建新的状态结点
  #--------------------------------------------------------------------------    
  def newState(val = 0)
    @nodePool[@cur] = State.new
    @nodePool[@cur].init(val)
    @cur += 1
    return @nodePool[@cur-1]
  end
  #--------------------------------------------------------------------------
  # ● 添加字符
  #--------------------------------------------------------------------------    
  def extend(w)
    p = @last
    np = newState(p.val + 1)
    while p != nil and p.go[w] == nil do
      p.go[w] = np
      p = p.par
    end
    if p == nil
      np.par = @root
      @total += np.calc # 统计
    else
      q = p.go[w]
      if p.val + 1 == q.val
        np.par = q
        @total += np.calc # 统计
      else
        nq = newState(p.val + 1)
        for i in 0..26 do
          nq.go[i] = q.go[i]
        end
        @total -= q.calc # 统计
        nq.par = q.par
        q.par = nq
        np.par = nq
        @total += q.calc + nq.calc + np.calc
        while p != nil and p.go[w] == q do
          p.go[w] = nq
          p = p.par
        end
      end
    end
    @last = np
  end
end  





如何优雅研究 RGSS3 (六) 技能与物品画面剖析 物品与技能画面剖析 物品画面和技能画面有共同的父类 Scene_ItemBase,而 Scene_ItemBase 继承自 Scene_MenuBase。 Scene_ItemBase 在开始时用 create_actor_window 生成了显示角色的窗口备用。 Scene_ItemBase 中定义了若干方法作为处理画面的工具。 其中 show_sub_window、hi 阅读详情

相关推荐

Ruby 中文文档、RGSS 中文文档

Ruby 中文文档、RGSS 中文文档

优美的Ruby

整理些优化代码的方法和基本概念strip_tags //格式化标签Ruby map、each、select、inject、collect 、detect 、reject 方法特征map:(collect是map的别名函数),对数组中每个元素进行表达式操作,原始数组不会被改变,返回执行表达式结果的新数组[1,2,3,4,5,6,7,8,9,10].map{|e| e*3} => [3, 6, 9

qq_29569995的博客 360

Ruby-Backup提供了优雅RubyDSL来在类unix系统中执行备份

Backup - 提供了优雅Ruby DSL来在类unix系统中执行备份

Ruby 札记 - 纵览优雅Ruby

Ruby is simple in appearance, but is very complex inside, just like our human body.” — Matz, creator of the Ruby programming language 前言 先纵览下整体 Ruby 的语法,粗略的读下在线教程 《ruby基础教程(中文第四版)》,如果连接失效,可以到 链接:...

weixin_33953249的博客 192

如何优雅研究 RGSS3 番外(二) 显示文字信息的窗口中的纤程

Ruby 中的 Fiber 通常称为纤程,是种非抢占式的多线程模型。 纤程不能在外部被终止,只能等待其主动让出执行权。 RGSS3 在事件解释器 Game_Interpreter 与显示文字信息的窗口 Window_Message 中都用到了纤程。 以 Window_Message 为例。 #------------------------------------------

Azarath Metrion Zinthos 1851

怎样优雅研究 RGSS3 番外ruby 实现的后缀自己主动机

*我真的不会 ruby 呀* #encoding:utf-8 #============================================================================== # ■ Suffix_Automaton #------------------------------------------------------...

weixin_30287169的博客 157

如何优雅研究 RGSS3 (三) 调整窗口的细节

在上期我们研究了带选项的窗口,本期就来研究下窗口类的具体细节。

Azarath Metrion Zinthos 5179

如何优雅研究 RGSS3 (五) 输入数字的画面

游戏中的名字输入画面是个非常没有中国特色的场景。 我们知道英文不过26个字母,日语也只有几百个假名,但是汉字的数量实在是太多了,导致名字输入画面在汉化成中文版时只能用部分汉字来填充假名。 输入名字的功能并没有什么重要价值,但是这个功能实现的方法却值得我们研究。 游戏中有个默认的输入数字的窗口,但是它非常不好用。 今天就来参照名字输入画面编写个数字输入画面。用于玩家向游戏中输入数字。

Azarath Metrion Zinthos 2177

如何优雅研究 RGSS3 (二) 为游戏结束画面添加简单的选项

研究了场景中显示窗口的基本原理,本期就动手亲自写写简单的窗口。

Azarath Metrion Zinthos 2013

Ruby Anvil: 优雅的桌面程序框架

[url=http://anvil.rubyforge.org/]Anvil[/url]是基于[url=http://wxruby.rubyforge.org/]wxRuby[/url]的套DSL/框架,它让我们像使用RubyonRails样开发桌面程序。 Anvil才刚刚起步,它的个应用的例子是[url=http://hamr.rubyforge.org/]Hamr[/url] ...

hideto 404

如何优雅研究 RGSS3 (四) 使窗口从画面边缘弹出

在很多游戏中,窗口可以从游戏画面的边缘弹出。 而在 RGSS3 的默认脚本中时没有这种功能的,当在地图上按下取消键时,游戏菜单会突然出现。 现在我们可以为主菜单添加动画效果,使其在屏幕边缘弹出。 我们知道游戏中的画面并不是真正的在动,而是在每帧都绘制幅新的画面。 每帧都对画面做些微小的改变,在玩家的眼里就会产生画面在运动的错觉。 复杂的运动效果涉及到复杂的公式,这

Azarath Metrion Zinthos 1697

如何优雅研究 RGSS3 (七) 添加LOGO画面

为游戏添加 LOGO 画面。 首先要设计 LOGO 场景类,我们知道场景类都是 Scene_Base 的子类。 我们来回顾下场景的工作原理。 首先执行开始处理,接着是开始后处理,然后是不停的更新画面,最后结束前处理,然后结束处理。 下面来逐个分析这些方法。 当进入 LOGO 画面时,显然不需要也不可能回到上个画面,因此在开始处理的方法中,我们要清空场景的切换记录。 接下来要

Azarath Metrion Zinthos 1496

多目标进化算法(MOEA)来处理动态多目标优化问题(DMOPs)Matlab代码.rar

多目标进化算法(MOEA)来处理动态多目标优化问题(DMOPs)Matlab代码.rar

【有功-无功协调优化】基于改进多目标粒子群优化算法(小生境粒子群算法)的配电网有功-无功协调优化研究(Matlab代码实现

内容概要:本文围绕基于改进多目标粒子群优化算法(小生境粒子群算法)的配电网有功-无功协调优化问题展开研究,旨在通过智能优化算法有效降低网络损耗、提升电压质量并增强配电系统的运行效率。研究系统地介绍了小生境粒子群算法的改进策略,构建了包含功率平衡、电压安全、设备容量等多重约束的多目标优化模型,并采用IEEE标准测试系统进行仿真验证,充分证明了该方法在处理多目标、多约束优化问题上的优越性能。全文涵盖从数学建模、算法设计、约束处理到多目标折衷解选择的完整流程,并配套提供了完整的Matlab代码实现,便于读者复现结果与进行二次开发。; 适合人群:具备定电力系统基础知识和Matlab编程能力,从事电力系统优化、智能算法研究或相关领域工作的研究生、科研人员及工程技术人员。; 使用场景及目标:①解决配电网中有功与无功功率的协同优化问题,实现节能降耗与电压稳定;②学习并掌握多目标粒子群算法及其小生境改进策略在电力系统中的具体应用与实现细节;③通过Matlab代码进行仿真,加深对智能优化算法在工程实践中应用的理解,提升科研与工程实践能力。; 阅读建议:此资源以理论分析与代码实现紧密结合的方式呈现,建议读者在深入理解算法原理和模型构建的基础上,结合所提供的Matlab代码进行仿真实验,重点关注参数设置、收敛性分析与结果可视化等关键环节,从而实现从理论认知到实践验证的完整闭环。

上一篇: 后缀自动机(SAM)学习指南
下一篇: 数位dp 学习指南
cyendra
博客等级 码龄14年 191粉丝 462原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值