水一份Ruby的短代码
  • 板块P1928 外星密码
  • 楼主f321dd
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/3/28 01:15
  • 上次更新2024/3/28 14:08:47
查看原帖
水一份Ruby的短代码
11926
f321dd楼主2024/3/28 01:15

我想应该是最短的,虽然完全没压。

有了Ruby的“正则”表达式,只要把语法写出来,调用几下就做完了。就是这方法的效率其实很低,因为这只是个“正则”表达式,显然没有提供解析到子表达式时的回调,每个子表达式都只能重新解析。甚至于前面的数字也不能直接捕获,否则会被子表达式的捕获所覆盖。

grammer = /(\[(\d+(?:[[:alpha:]]|\g<1>)*)\])/

expand = -> text {
  text.gsub(grammer) {
    n = $2[/\d+/].to_i
    expand[$'] * n
  }
}

puts expand[gets]
2024/3/28 01:15
加载中...